From 31e15f38d24551eb437dac4d2a7737a05edc11ed Mon Sep 17 00:00:00 2001 From: Anish Lakhwara Date: Tue, 15 Mar 2022 20:36:48 +1000 Subject: [PATCH] box --- LICENSE | 22 - README.md | 128 -- backup.nix | 34 + bin/autoclicker | 8 - bin/bspwm/focus | 47 - bin/bspwm/presel | 21 - bin/bspwm/subtract-presel | 101 -- bin/bspwm/swap | 48 - bin/hey | 385 ----- bin/mov2gif | 72 - bin/myip | 21 - bin/optimimg | 86 -- bin/optimpdf | 36 - bin/rofi/appmenu | 5 - bin/rofi/browsermenu | 137 -- bin/rofi/bwmenu | 260 ---- bin/rofi/filemenu | 11 - bin/rofi/passmenu | 68 - bin/rofi/powermenu | 31 - bin/rofi/spotifymenu | 0 bin/rofi/windowmenu | 4 - bin/scratch | 26 - bin/scrcap | 16 - bin/scrrec | 99 -- bin/since | 38 - bin/spell | 21 - bin/timein | 6 - bin/zzz | 22 - box.nix | 28 + hosts/common.nix => common.nix | 70 +- config/.gitignore | 2 - config/awesome/init.fnl | 111 -- config/bspwm/bspwmrc | 34 - config/docker/aliases.zsh | 14 - config/emacs/aliases.zsh | 6 - config/gimp/menurc | 1344 ----------------- config/git/aliases.zsh | 29 - config/git/attributes | 3 - config/git/config | 46 - config/git/ignore | 36 - config/ncmpcpp/aliases.zsh | 3 - config/ncmpcpp/bindings | 424 ------ config/ncmpcpp/config | 433 ------ config/qutebrowser/config.py | 349 ----- .../greasemonkey/let-there-be-light.user.js | 23 - .../per-domain-stylesheets.user.js | 21 - config/stumpwm/config | 124 -- config/sxhkd/sxhkdrc | 129 -- config/tmux/aliases.zsh | 27 - config/tmux/swap-pane.sh | 23 - config/tmux/tmux.conf | 124 -- config/zsh/.zshenv | 5 - config/zsh/.zshrc | 51 - config/zsh/aliases.zsh | 74 - config/zsh/completion.zsh | 174 --- config/zsh/completions/_hey | 36 - config/zsh/config.zsh | 64 - config/zsh/keybinds.zsh | 127 -- configuration.nix | 143 ++ cron.nix | 10 + default.nix | 67 - dev.nix | 10 + dns.nix | 16 + flake.lock | 117 -- flake.nix | 85 -- ftp.nix | 20 + gonic.nix | 12 + ...guration.nix => hardware-configuration.nix | 28 +- headphones.nix | 12 + hosts/README.org | 9 - hosts/aijiro/README.org | 30 - hosts/aijiro/default.nix | 86 -- hosts/aijiro/hardware-configuration.nix | 57 - hosts/ao/README.org | 26 - hosts/ao/default.nix | 61 - hosts/ao/hardware-configuration.nix | 37 - hosts/ao/modules/backup.nix | 50 - hosts/ao/modules/gitea.nix | 30 - hosts/ao/modules/vaultwarden.nix | 33 - hosts/ao/secrets/gitea-smtp.age | 7 - hosts/ao/secrets/secrets.nix | 5 - hosts/ao/secrets/vaultwarden-smtp-env.age | Bin 465 -> 0 bytes hosts/curve/configuration.nix | 85 -- hosts/curve/default.nix | 131 -- hosts/home.nix | 65 - hosts/kuro/README.org | 88 -- hosts/kuro/default.nix | 127 -- hosts/kuro/hardware-configuration.nix | 96 -- hosts/linode.nix | 117 -- hosts/server.nix | 31 - hosts/shiro/README.org | 18 - hosts/shiro/default.nix | 67 - hosts/shiro/hardware-configuration.nix | 84 -- lib/attrs.nix | 26 - lib/default.nix | 18 - lib/generators.nix | 30 - lib/modules.nix | 53 - lib/nixos.nix | 25 - lib/options.nix | 18 - mod-grasp.nix | 12 + mod-wallabag.nix | 220 +++ module-gonic.nix | 109 ++ modules/agenix.nix | 29 - modules/desktop/apps/discord.nix | 18 - modules/desktop/apps/godot.nix | 21 - modules/desktop/apps/rofi.nix | 58 - modules/desktop/apps/signal.nix | 17 - modules/desktop/apps/skype.nix | 17 - modules/desktop/apps/unity3d.nix | 20 - modules/desktop/awesomewm.nix | 57 - modules/desktop/browsers/brave.nix | 28 - modules/desktop/browsers/default.nix | 14 - modules/desktop/browsers/firefox.nix | 161 -- modules/desktop/browsers/qutebrowser.nix | 56 - modules/desktop/bspwm.nix | 60 - modules/desktop/default.nix | 123 -- modules/desktop/gaming/emulators.nix | 25 - modules/desktop/gaming/steam.nix | 53 - modules/desktop/media/daw.nix | 25 - modules/desktop/media/documents.nix | 24 - modules/desktop/media/graphics.nix | 57 - modules/desktop/media/mpv.nix | 17 - modules/desktop/media/ncmpcpp.nix | 27 - modules/desktop/media/recording.nix | 26 - modules/desktop/media/spotify.nix | 100 -- modules/desktop/stumpwm.nix | 37 - modules/desktop/term/default.nix | 16 - modules/desktop/term/st.nix | 34 - modules/desktop/vm/lxd.nix | 32 - modules/desktop/vm/qemu.nix | 21 - modules/desktop/vm/virtualbox.nix | 25 - modules/dev/cc.nix | 27 - modules/dev/clojure.nix | 22 - modules/dev/common-lisp.nix | 21 - modules/dev/lua.nix | 26 - modules/dev/node.nix | 47 - modules/dev/python.nix | 51 - modules/dev/rust.nix | 40 - modules/dev/scala.nix | 18 - modules/dev/shell.nix | 23 - modules/editors/default.nix | 14 - modules/editors/emacs.nix | 87 -- modules/editors/vim.nix | 286 ---- modules/hardware/audio.nix | 31 - modules/hardware/bluetooth.nix | 31 - modules/hardware/ergodox.nix | 20 - modules/hardware/fs.nix | 46 - modules/hardware/nvidia.nix | 25 - modules/hardware/razer.nix | 22 - modules/hardware/sensors.nix | 14 - modules/hardware/wacom.nix | 25 - modules/options.nix | 94 -- modules/security.nix | 70 - modules/services/calibre.nix | 16 - modules/services/docker.nix | 34 - modules/services/fail2ban.nix | 47 - modules/services/gitea.nix | 59 - modules/services/jellyfin.nix | 23 - modules/services/nginx.nix | 47 - modules/services/ssh.nix | 23 - modules/services/syncthing.nix | 20 - modules/services/teamviewer.nix | 14 - modules/services/transmission.nix | 32 - modules/services/vaultwarden.nix | 23 - modules/shell/adl.nix | 27 - modules/shell/direnv.nix | 15 - modules/shell/git.nix | 30 - modules/shell/gnupg.nix | 29 - modules/shell/pass.nix | 23 - modules/shell/tmux.nix | 42 - modules/shell/vaultwarden.nix | 25 - modules/shell/zsh.nix | 84 -- modules/themes/alucard/README.org | 14 - modules/themes/alucard/config/Xresources | 80 - modules/themes/alucard/config/bspwmrc | 16 - modules/themes/alucard/config/dunstrc | 49 - .../alucard/config/firefox/userChrome.css | 275 ---- .../firefox/userstyles/stylus-2020-02-11.json | 272 ---- .../config/inkscape/default-template.svg | 75 - modules/themes/alucard/config/polybar/config | 385 ----- .../alucard/config/polybar/modules/redshift | 21 - modules/themes/alucard/config/polybar/run.sh | 7 - .../alucard/config/qutebrowser/theme.py | 221 --- .../userstyles/monospace-textareas.scss | 3 - .../qutebrowser/userstyles/stackoverflow.scss | 1027 ------------- .../config/qutebrowser/userstyles/xkcd.scss | 86 -- .../themes/alucard/config/rofi/appmenu.rasi | 10 - .../alucard/config/rofi/base.cyclemenu.rasi | 21 - .../alucard/config/rofi/bookmarkmenu.rasi | 14 - .../themes/alucard/config/rofi/config.rasi | 137 -- .../themes/alucard/config/rofi/filemenu.rasi | 11 - .../themes/alucard/config/rofi/passmenu.rasi | 10 - .../themes/alucard/config/rofi/powermenu.rasi | 23 - .../alucard/config/rofi/windowmenu.rasi | 27 - modules/themes/alucard/config/tmux.conf | 64 - modules/themes/alucard/config/wallpaper.png | Bin 1899366 -> 0 bytes modules/themes/alucard/config/zsh/prompt.zsh | 71 - modules/themes/alucard/default.nix | 112 -- modules/themes/default.nix | 125 -- modules/xdg.nix | 50 - monitoring.nix | 59 + mossnet.nix | 28 + musician.nix | 24 + musnix.nix | 6 + navidrome.nix | 101 ++ networking.nix | 25 + nextcloud.nix | 55 + nfs.nix | 32 + modules/nvim.nix => nvim.nix | 142 +- overlays/.git-keep | 0 packages/.git-keep | 0 packages/adl.nix | 33 - packages/anime-downloader.nix | 58 - packages/fennel.nix | 33 - packages/trackma.nix | 24 - pkg-grasp.nix | 22 + pkg-navidrome.nix | 9 + pkg-wallabag.nix | 39 + bin/rofi/networkmenu => priv | 0 result | 1 - rss-bridge.nix | 8 + shaarli.nix | 114 ++ shell.nix | 17 - taskd.nix | 9 + templates/minimal/flake.nix | 16 - templates/minimal/hosts/.git-keep | 0 templates/minimal/hosts/main/default.nix | 0 .../hosts/main/hardware-configuration.nix | 0 unstable.nix | 13 + wallabag-data.patch | 31 + wallabag.nix | 98 ++ wireguard.nix | 61 + 232 files changed, 1460 insertions(+), 13713 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.md create mode 100644 backup.nix delete mode 100755 bin/autoclicker delete mode 100755 bin/bspwm/focus delete mode 100755 bin/bspwm/presel delete mode 100755 bin/bspwm/subtract-presel delete mode 100755 bin/bspwm/swap delete mode 100755 bin/hey delete mode 100755 bin/mov2gif delete mode 100755 bin/myip delete mode 100755 bin/optimimg delete mode 100755 bin/optimpdf delete mode 100755 bin/rofi/appmenu delete mode 100755 bin/rofi/browsermenu delete mode 100755 bin/rofi/bwmenu delete mode 100755 bin/rofi/filemenu delete mode 100755 bin/rofi/passmenu delete mode 100755 bin/rofi/powermenu delete mode 100644 bin/rofi/spotifymenu delete mode 100755 bin/rofi/windowmenu delete mode 100755 bin/scratch delete mode 100755 bin/scrcap delete mode 100755 bin/scrrec delete mode 100755 bin/since delete mode 100755 bin/spell delete mode 100755 bin/timein delete mode 100755 bin/zzz create mode 100644 box.nix rename hosts/common.nix => common.nix (58%) delete mode 100644 config/.gitignore delete mode 100644 config/awesome/init.fnl delete mode 100755 config/bspwm/bspwmrc delete mode 100644 config/docker/aliases.zsh delete mode 100644 config/emacs/aliases.zsh delete mode 100644 config/gimp/menurc delete mode 100644 config/git/aliases.zsh delete mode 100644 config/git/attributes delete mode 100644 config/git/config delete mode 100644 config/git/ignore delete mode 100644 config/ncmpcpp/aliases.zsh delete mode 100644 config/ncmpcpp/bindings delete mode 100644 config/ncmpcpp/config delete mode 100644 config/qutebrowser/config.py delete mode 100644 config/qutebrowser/greasemonkey/let-there-be-light.user.js delete mode 100644 config/qutebrowser/greasemonkey/per-domain-stylesheets.user.js delete mode 100644 config/stumpwm/config delete mode 100644 config/sxhkd/sxhkdrc delete mode 100644 config/tmux/aliases.zsh delete mode 100755 config/tmux/swap-pane.sh delete mode 100644 config/tmux/tmux.conf delete mode 100644 config/zsh/.zshenv delete mode 100644 config/zsh/.zshrc delete mode 100644 config/zsh/aliases.zsh delete mode 100644 config/zsh/completion.zsh delete mode 100755 config/zsh/completions/_hey delete mode 100644 config/zsh/config.zsh delete mode 100644 config/zsh/keybinds.zsh create mode 100644 configuration.nix create mode 100644 cron.nix delete mode 100644 default.nix create mode 100644 dev.nix create mode 100644 dns.nix delete mode 100644 flake.lock delete mode 100644 flake.nix create mode 100644 ftp.nix create mode 100644 gonic.nix rename hosts/curve/hardware-configuration.nix => hardware-configuration.nix (52%) create mode 100644 headphones.nix delete mode 100644 hosts/README.org delete mode 100644 hosts/aijiro/README.org delete mode 100644 hosts/aijiro/default.nix delete mode 100644 hosts/aijiro/hardware-configuration.nix delete mode 100644 hosts/ao/README.org delete mode 100644 hosts/ao/default.nix delete mode 100644 hosts/ao/hardware-configuration.nix delete mode 100644 hosts/ao/modules/backup.nix delete mode 100644 hosts/ao/modules/gitea.nix delete mode 100644 hosts/ao/modules/vaultwarden.nix delete mode 100644 hosts/ao/secrets/gitea-smtp.age delete mode 100644 hosts/ao/secrets/secrets.nix delete mode 100644 hosts/ao/secrets/vaultwarden-smtp-env.age delete mode 100755 hosts/curve/configuration.nix delete mode 100644 hosts/curve/default.nix delete mode 100644 hosts/home.nix delete mode 100644 hosts/kuro/README.org delete mode 100644 hosts/kuro/default.nix delete mode 100644 hosts/kuro/hardware-configuration.nix delete mode 100644 hosts/linode.nix delete mode 100644 hosts/server.nix delete mode 100644 hosts/shiro/README.org delete mode 100644 hosts/shiro/default.nix delete mode 100644 hosts/shiro/hardware-configuration.nix delete mode 100644 lib/attrs.nix delete mode 100644 lib/default.nix delete mode 100644 lib/generators.nix delete mode 100644 lib/modules.nix delete mode 100644 lib/nixos.nix delete mode 100644 lib/options.nix create mode 100644 mod-grasp.nix create mode 100644 mod-wallabag.nix create mode 100644 module-gonic.nix delete mode 100644 modules/agenix.nix delete mode 100644 modules/desktop/apps/discord.nix delete mode 100644 modules/desktop/apps/godot.nix delete mode 100644 modules/desktop/apps/rofi.nix delete mode 100644 modules/desktop/apps/signal.nix delete mode 100644 modules/desktop/apps/skype.nix delete mode 100644 modules/desktop/apps/unity3d.nix delete mode 100644 modules/desktop/awesomewm.nix delete mode 100644 modules/desktop/browsers/brave.nix delete mode 100644 modules/desktop/browsers/default.nix delete mode 100644 modules/desktop/browsers/firefox.nix delete mode 100644 modules/desktop/browsers/qutebrowser.nix delete mode 100644 modules/desktop/bspwm.nix delete mode 100644 modules/desktop/default.nix delete mode 100644 modules/desktop/gaming/emulators.nix delete mode 100644 modules/desktop/gaming/steam.nix delete mode 100644 modules/desktop/media/daw.nix delete mode 100644 modules/desktop/media/documents.nix delete mode 100644 modules/desktop/media/graphics.nix delete mode 100644 modules/desktop/media/mpv.nix delete mode 100644 modules/desktop/media/ncmpcpp.nix delete mode 100644 modules/desktop/media/recording.nix delete mode 100644 modules/desktop/media/spotify.nix delete mode 100644 modules/desktop/stumpwm.nix delete mode 100644 modules/desktop/term/default.nix delete mode 100644 modules/desktop/term/st.nix delete mode 100644 modules/desktop/vm/lxd.nix delete mode 100644 modules/desktop/vm/qemu.nix delete mode 100644 modules/desktop/vm/virtualbox.nix delete mode 100644 modules/dev/cc.nix delete mode 100644 modules/dev/clojure.nix delete mode 100644 modules/dev/common-lisp.nix delete mode 100644 modules/dev/lua.nix delete mode 100644 modules/dev/node.nix delete mode 100644 modules/dev/python.nix delete mode 100644 modules/dev/rust.nix delete mode 100644 modules/dev/scala.nix delete mode 100644 modules/dev/shell.nix delete mode 100644 modules/editors/default.nix delete mode 100644 modules/editors/emacs.nix delete mode 100644 modules/editors/vim.nix delete mode 100644 modules/hardware/audio.nix delete mode 100644 modules/hardware/bluetooth.nix delete mode 100644 modules/hardware/ergodox.nix delete mode 100644 modules/hardware/fs.nix delete mode 100644 modules/hardware/nvidia.nix delete mode 100644 modules/hardware/razer.nix delete mode 100644 modules/hardware/sensors.nix delete mode 100644 modules/hardware/wacom.nix delete mode 100644 modules/options.nix delete mode 100644 modules/security.nix delete mode 100644 modules/services/calibre.nix delete mode 100644 modules/services/docker.nix delete mode 100644 modules/services/fail2ban.nix delete mode 100644 modules/services/gitea.nix delete mode 100644 modules/services/jellyfin.nix delete mode 100644 modules/services/nginx.nix delete mode 100644 modules/services/ssh.nix delete mode 100644 modules/services/syncthing.nix delete mode 100644 modules/services/teamviewer.nix delete mode 100644 modules/services/transmission.nix delete mode 100644 modules/services/vaultwarden.nix delete mode 100644 modules/shell/adl.nix delete mode 100644 modules/shell/direnv.nix delete mode 100644 modules/shell/git.nix delete mode 100644 modules/shell/gnupg.nix delete mode 100644 modules/shell/pass.nix delete mode 100644 modules/shell/tmux.nix delete mode 100644 modules/shell/vaultwarden.nix delete mode 100644 modules/shell/zsh.nix delete mode 100644 modules/themes/alucard/README.org delete mode 100644 modules/themes/alucard/config/Xresources delete mode 100755 modules/themes/alucard/config/bspwmrc delete mode 100644 modules/themes/alucard/config/dunstrc delete mode 100644 modules/themes/alucard/config/firefox/userChrome.css delete mode 100644 modules/themes/alucard/config/firefox/userstyles/stylus-2020-02-11.json delete mode 100644 modules/themes/alucard/config/inkscape/default-template.svg delete mode 100644 modules/themes/alucard/config/polybar/config delete mode 100755 modules/themes/alucard/config/polybar/modules/redshift delete mode 100644 modules/themes/alucard/config/polybar/run.sh delete mode 100644 modules/themes/alucard/config/qutebrowser/theme.py delete mode 100644 modules/themes/alucard/config/qutebrowser/userstyles/monospace-textareas.scss delete mode 100644 modules/themes/alucard/config/qutebrowser/userstyles/stackoverflow.scss delete mode 100644 modules/themes/alucard/config/qutebrowser/userstyles/xkcd.scss delete mode 100644 modules/themes/alucard/config/rofi/appmenu.rasi delete mode 100644 modules/themes/alucard/config/rofi/base.cyclemenu.rasi delete mode 100644 modules/themes/alucard/config/rofi/bookmarkmenu.rasi delete mode 100644 modules/themes/alucard/config/rofi/config.rasi delete mode 100644 modules/themes/alucard/config/rofi/filemenu.rasi delete mode 100644 modules/themes/alucard/config/rofi/passmenu.rasi delete mode 100644 modules/themes/alucard/config/rofi/powermenu.rasi delete mode 100644 modules/themes/alucard/config/rofi/windowmenu.rasi delete mode 100644 modules/themes/alucard/config/tmux.conf delete mode 100644 modules/themes/alucard/config/wallpaper.png delete mode 100644 modules/themes/alucard/config/zsh/prompt.zsh delete mode 100644 modules/themes/alucard/default.nix delete mode 100644 modules/themes/default.nix delete mode 100644 modules/xdg.nix create mode 100644 monitoring.nix create mode 100644 mossnet.nix create mode 100644 musician.nix create mode 100644 musnix.nix create mode 100644 navidrome.nix create mode 100644 networking.nix create mode 100644 nextcloud.nix create mode 100644 nfs.nix rename modules/nvim.nix => nvim.nix (71%) delete mode 100644 overlays/.git-keep delete mode 100644 packages/.git-keep delete mode 100644 packages/adl.nix delete mode 100644 packages/anime-downloader.nix delete mode 100644 packages/fennel.nix delete mode 100644 packages/trackma.nix create mode 100644 pkg-grasp.nix create mode 100644 pkg-navidrome.nix create mode 100644 pkg-wallabag.nix rename bin/rofi/networkmenu => priv (100%) delete mode 120000 result create mode 100644 rss-bridge.nix create mode 100644 shaarli.nix delete mode 100644 shell.nix create mode 100644 taskd.nix delete mode 100644 templates/minimal/flake.nix delete mode 100644 templates/minimal/hosts/.git-keep delete mode 100644 templates/minimal/hosts/main/default.nix delete mode 100644 templates/minimal/hosts/main/hardware-configuration.nix create mode 100644 unstable.nix create mode 100644 wallabag-data.patch create mode 100644 wallabag.nix create mode 100644 wireguard.nix diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 5f4d5a09..00000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016-2021 Henrik Lissner. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index f6041ecb..00000000 --- a/README.md +++ /dev/null @@ -1,128 +0,0 @@ -[![Made with Doom Emacs](https://img.shields.io/badge/Made_with-Doom_Emacs-blueviolet.svg?style=flat-square&logo=GNU%20Emacs&logoColor=white)](https://github.com/hlissner/doom-emacs) -[![NixOS Unstable](https://img.shields.io/badge/NixOS-unstable-blue.svg?style=flat-square&logo=NixOS&logoColor=white)](https://nixos.org) - -**Hey,** you. You're finally awake. You were trying to configure your OS declaratively, right? Walked right into that NixOS ambush, same as us, and those dotfiles over there. - - - -

- - - -

- ------- - -| | | -|-|-| -| **Shell:** | zsh + zgen | -| **DM:** | lightdm + lightdm-mini-greeter | -| **WM:** | bspwm + polybar | -| **Editor:** | [Doom Emacs][doom-emacs] (and occasionally [vim]) | -| **Terminal:** | st | -| **Launcher:** | rofi | -| **Browser:** | firefox | -| **GTK Theme:** | [Ant Dracula](https://github.com/EliverLara/Ant-Dracula) | - ------ - -## Quick start - -1. Yoink the latest build of [NixOS 21.05][nixos]. -2. Boot into the installer. -3. Do your partitions and mount your root to `/mnt` ([for example](hosts/kuro/README.org)) -4. Install these dotfiles: -5. `nix-shell -p git nixFlakes` -6. `git clone https://github.com/hlissner/dotfiles /mnt/etc/nixos` -7. Install NixOS: `nixos-install --root /mnt --flake /mnt/etc/nixos#XYZ`, where - `XYZ` is [the host you want to install](hosts/). Use `#generic` for a - simple, universal config, or create a sub-directory in `hosts/` for your device. See [host/kuro] for an example. -8. Reboot! -9. Change your `root` and `$USER` passwords! - -## Management - -And I say, `bin/hey`. [What's going on?](http://hemansings.com/) - -``` -Usage: hey [global-options] [command] [sub-options] - -Available Commands: - check Run 'nix flake check' on your dotfiles - gc Garbage collect & optimize nix store - generations Explore, manage, diff across generations - help [SUBCOMMAND] Show usage information for this script or a subcommand - rebuild Rebuild the current system's flake - repl Open a nix-repl with nixpkgs and dotfiles preloaded - rollback Roll back to last generation - search Search nixpkgs for a package - show [ARGS...] - ssh HOST [COMMAND] Run a bin/hey command on a remote NixOS system - swap PATH [PATH...] Recursively swap nix-store symlinks with copies (or back). - test Quickly rebuild, for quick iteration - theme THEME_NAME Quickly swap to another theme module - update [INPUT...] Update specific flakes or all of them - upgrade Update all flakes and rebuild system - -Options: - -d, --dryrun Don't change anything; preform dry run - -D, --debug Show trace on nix errors - -f, --flake URI Change target flake to URI - -h, --help Display this help, or help for a specific command - -i, -A, -q, -e, -p Forward to nix-env -``` - -## Frequently asked questions - -+ **Why NixOS?** - - Because declarative, generational, and immutable configuration is a godsend - when you have a fleet of computers to manage. - -+ **How do you manage secrets?** - - With [agenix]. - -+ **How do I change the default username?** - - 1. Set the `USER` environment variable the first time you run `nixos-install`: - `USER=myusername nixos-install --root /mnt --flake /path/to/dotfiles#XYZ` - 2. Or change `"hlissner"` in modules/options.nix. - -+ **Why did you write bin/hey?** - - I envy Guix's CLI and want similar for NixOS, but its toolchain is spread - across many commands, none of which are as intuitive: `nix`, - `nix-collect-garbage`, `nixos-rebuild`, `nix-env`, `nix-shell`. - - I don't claim `hey` is the answer, but everybody likes their own brew. - -+ **How 2 flakes?** - - Would it be the NixOS experience if I gave you all the answers in one, - convenient place? - - No. Suffer my pain: - - + [A three-part tweag article that everyone's read.](https://www.tweag.io/blog/2020-05-25-flakes/) - + [An overengineered config to scare off beginners.](https://github.com/nrdxp/nixflk) - + [A minimalistic config for scared beginners.](https://github.com/colemickens/nixos-flake-example) - + [A nixos wiki page that spells out the format of flake.nix.](https://nixos.wiki/wiki/Flakes) - + [Official documentation that nobody reads.](https://nixos.org/learn.html) - + [Some great videos on general nixOS tooling and hackery.](https://www.youtube.com/channel/UC-cY3DcYladGdFQWIKL90SQ) - + A couple flake configs that I - [may](https://github.com/LEXUGE/nixos) - [have](https://github.com/bqv/nixrc) - [shamelessly](https://git.sr.ht/~dunklecat/nixos-config/tree) - [rummaged](https://github.com/utdemir/dotfiles) - [through](https://github.com/purcell/dotfiles). - + [Some notes about using Nix](https://github.com/justinwoo/nix-shorts) - + [What helped me figure out generators (for npm, yarn, python and haskell)](https://myme.no/posts/2020-01-26-nixos-for-development.html) - + [What y'all will need when Nix drives you to drink.](https://www.youtube.com/watch?v=Eni9PPPPBpg) - - -[doom-emacs]: https://github.com/hlissner/doom-emacs -[vim]: https://github.com/hlissner/.vim -[nixos]: https://releases.nixos.org/?prefix=nixos/unstable/ -[host/kuro]: https://github.com/hlissner/dotfiles/tree/master/hosts/kuro -[agenix]: https://github.com/ryantm/agenix diff --git a/backup.nix b/backup.nix new file mode 100644 index 00000000..8fa6f01c --- /dev/null +++ b/backup.nix @@ -0,0 +1,34 @@ +{ + # Assumes the remote borg backup server has already been initialized + # borg init --encryption-key=repokey-blake2 -rsh 'ssh -i /run/keys/id_ed25519_borgbase' 20779@hk-s020.rsync.net: + services.borgbackup.jobs = { + backupTaskwarriorRsync = { + paths = [ "/var/lib/taskserver" ]; + doInit = true; + repo = "20779@hk-s020.rsync.net:taskwarrior" ; + encryption = { + mode = "repokey-blake2"; + passCommand = "cat /run/keys/rsync"; + }; + environment = { BORG_RSH = "ssh -i /run/keys/id_ed25519_borgbase"; }; + compression = "auto,lzma"; + startAt = "weekly"; + extraArgs = "--remote-path=borg1"; + }; + }; + services.borgbackup.jobs = { + backupShaarliRsync = { + paths = [ "/var/www/shaarli-config/data/datastore.php" "/var/www/shaarli-config/config" "/var/www/shaarli-config/.json.config" ]; + doInit = true; + repo = "20779@hk-s020.rsync.net:shaarli" ; + encryption = { + mode = "repokey-blake2"; + passCommand = "cat /run/keys/rsync"; + }; + environment = { BORG_RSH = "ssh -i /run/keys/id_ed25519_borgbase"; }; + compression = "auto,lzma"; + startAt = "weekly"; + extraArgs = "--remote-path=borg1"; + }; + }; +} diff --git a/bin/autoclicker b/bin/autoclicker deleted file mode 100755 index 7a39f10c..00000000 --- a/bin/autoclicker +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -while true; do - xdotool mousedown 1 - sleep 0.01 - xdotool mouseup 1 - sleep 0.01 -done diff --git a/bin/bspwm/focus b/bin/bspwm/focus deleted file mode 100755 index af8b1fb2..00000000 --- a/bin/bspwm/focus +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash - -# Script: bspc-focus -# Author: Henrik Lissner -# Usage: -# bspc-focus [-m] (west|south|north|east) -# bspc-focus south -# bspc-focus -m west -# -# Focus the next window in direction. If -m is supplied, jump to the next -# monitor in that direction. -# -# The behavior of the base 'bspc node -f' is odd when crossing screens. It will -# focus the last selected window on that screen, rather than the window on the -# connecting edge, which is unintuitive. - -set -e - -leap= -if [[ $1 == -m ]]; then - leap=1; shift -fi -dir=$1 -opposite= - -case $dir in - west) opposite=east ;; - east) opposite=west ;; - north) opposite=north ;; - south) opposite=south ;; - *) >&2 echo "Not a valid direction: $dir" - exit 1 -esac - -if [[ -n $leap ]]; then - # jump to monitor in direction - bspc monitor -f "$dir" -else - # jump to window in direction (unless at edge of last monitor) - if ! bspc node -f "$dir.local"; then - if [[ $(bspc query -M -m "$dir") ]]; then - bspc monitor -f "$dir" - # Ensure we start at the edge of the window we arrived from - while bspc node -f "$opposite.local"; do :; done - fi - fi -fi diff --git a/bin/bspwm/presel b/bin/bspwm/presel deleted file mode 100755 index ecd5ffba..00000000 --- a/bin/bspwm/presel +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env cached-nix-shell -#! nix-shell -i zsh -p jshon - -# Script: bspc-presel -# Author: Henrik Lissner -# Usage: -# bspc-presel RATIO -# bspc-presel 0.2 -# -# Wrote this to invert the ratio on east/south-bound preselections. In English -# that means bspc node -p 0.2 should resize the preselection to 20%, whether or -# not it's on the west or east side of the window (or north or south side), -# which isn't the case by default. -# -# NOTE: We use zsh for this because bash chokes on float arithmetic. - -ratio="$1" -case "$(bspc query -T -n focused | jshon -e presel -e splitDir | tr -d \")" in - west|north) bspc node -o $ratio ;; - east|south) bspc node -o $(( 1.0 - ratio )) ;; -esac diff --git a/bin/bspwm/subtract-presel b/bin/bspwm/subtract-presel deleted file mode 100755 index 4b44478a..00000000 --- a/bin/bspwm/subtract-presel +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env cached-nix-shell -#! nix-shell -i zsh -p jshon wmutils-core - -# Script: bspc-subtract-presel -# Author: Henrik Lissner (w/ credit to @Chrysostomus) -# Usage: -# bspc-resize-to-presel -# -# (Adapted from Chrysostomus/bspwm-scripts/bin/resizetopresel.sh) -# -# This script resizes the current window by "subtracting" the bspwm preselection -# on the current node. In English, that means this will reduce the window's -# width by 20%: -# -# bspc node -p east -o 0.2 && bspc-subtract-presel -# -# NOTE: We use zsh for this because bash chokes on float arithmetic. - -# Check if the brother node is a receptacle -if [[ $(bspc query -T -n @brother/ | jshon -e client) = null ]]; then - # Yep, it's a receptacle. Get the real dimensions - eval $(grep "window_gap" ~/.config/bspwm/rc.d/theme | tr -cd [0-9]) - # Get orientation - wattr xywh $(pfw) | read focused_x focused_y focused_width focused_height - receptacle_y=$(bspc query -T -n @brother/ | jshon -e rectangle -e y) - if [[ "$focused_y" -eq "$receptacle_y" ]]; then - receptacle_width=$(bspc query -T -n @brother/ | jshon -e rectangle -e width) - receptacle_x=$(bspc query -T -n @brother/ | jshon -e rectangle -e x) - # receptacle and window have the same height, so they are side by side - if [[ receptacle_x -gt focused_x ]]; then - echo "receptacle is right of the window" - # get the true window dimension - true_dim=$(( receptacle_width + gap )) - # kill the repectacle - for i in $(bspc query -N -n .leaf.!window.local); do bspc node $i -k; done - # resize the window - bspc node @east -r -$true_dim || bspc node @west -r +$true_dim - else - echo "receptacle is left of the window" - # get the true window dimension - true_dim=$(( receptacle_width + gap )) - # kill the repectacle - for i in $(bspc query -N -n .leaf.!window.local); do bspc node $i -k; done - # resize the window - bspc node @west -r +$true_dim || bspc node @east -r -$true_dim - fi - else - receptacle_height=$(bspc query -T -n @brother/ | jshon -e rectangle -e height) - # width is necessarily equal if height is not, because the nodes are - # brothers Window are on the top of each other - if [[ receptacle_y -gt focused_y ]]; then - echo "receptacle is below the window" - # get the true window dimension - true_dim=$(( receptacle_height + gap)) - # kill the repectacle - for i in $(bspc query -N -n .leaf.!window.local); do bspc node $i -k; done - # resize the window - bspc node @south -r -$true_dim || bspc node @north -r +$true_dim - else - echo "receptacle is above the window" - # get the true window dimension - true_dim=$(( receptacle_height + gap)) - # kill the repectacle - for i in $(bspc query -N -n .leaf.!window.local); do bspc node $i -k; done - # resize the window - bspc node @north -r +$true_dim || bspc node @south -r -$true_dim - fi - fi - echo $true_dim - exit 0 -fi - -# If the focused window is not preselected, do nothing -[[ "$(bspc query -T -n focused | jshon -e presel)" == null ]] && exit 0 - -dir=$(bspc query -T -n focused | jshon -e presel -e splitDir | tr -d \") -ratio=$(bspc query -T -n focused | jshon -e presel -e splitRatio) -case "$dir" in - west) - cur=$(bspc query -T -n focused | jshon -e rectangle -e width) - bspc node @west -r +$((${cur}*${ratio})) || \ - bspc node @east -r -$((${cur}*${ratio})) - ;; - east) - cur=$(bspc query -T -n focused | jshon -e rectangle -e width) - bspc node @east -r -$((${cur}*(1.0-${ratio}))) || \ - bspc node @west -r +$((${cur}*${ratio})) - ;; - - north) - cur=$(bspc query -T -n focused | jshon -e rectangle -e height) - bspc node @north -r +$((${cur}*${ratio})) || \ - bspc node @south -r -$((${cur}*${ratio})) - ;; - south) - cur=$(bspc query -T -n focused | jshon -e rectangle -e height) - bspc node @south -r -$(( ${cur} * (1.0 - ${ratio}) )) || \ - bspc node @north -r +$(( ${cur} * ${ratio} )) -esac - -bspc node -p cancel diff --git a/bin/bspwm/swap b/bin/bspwm/swap deleted file mode 100755 index 8dd025f0..00000000 --- a/bin/bspwm/swap +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -# Script: bspc-swap -# Author: Henrik Lissner -# Usage: -# bspc-swap [-m] (west|south|north|east) -# bspc-swap south -# bspc-swap -m west -# -# Swaps current window with the window in a direction. If -m is set, move window -# to the next monitor in that direction. -# -# The behavior of the base 'bspc node -s' is odd when crossing screens. It will -# swaps with the last selected window on that screen, rather than the window on -# the connecting edge, which is unintuitive. - -set -e - -leap= -if [[ $1 == -m ]]; then - leap=1 - dir=$2 -else - dir=$1 -fi - -case $dir in west|south|north|east) ;; - *) >&2 echo "Not a valid direction: $dir" - exit 1 -esac - -if [[ -n $leap ]]; then - # move window to monitor in direction - old_id=$(bspc query -N -n focused) - if [[ $(bspc query -M -m "$dir") ]]; then - bspc node -m "$dir" - bspc node -f "$old_id" - fi -else - # move window in direction - old_id=$(bspc query -N -n focused) - if bspc node -s "$dir.local"; then - bspc node -f "$old_id" - elif [[ -n $(bspc query -M -m "$dir") ]]; then - bspc node -m "$dir" - bspc node -f "$old_id" - fi -fi diff --git a/bin/hey b/bin/hey deleted file mode 100755 index 4d80aa42..00000000 --- a/bin/hey +++ /dev/null @@ -1,385 +0,0 @@ -#!/usr/bin/env cached-nix-shell -#! nix-shell -p ruby_2_7 -i "ruby -S" --quiet - -DESC = <<~DESC - Nix's CLI has a poor user story, in my opinion. It could be better; Guix is a - good role model here. I wrote this script to abstract the more common - workflows, like rebuilding (nixos-rebuild), cleaning up (nix-collect-garbage), - package/env management (nix-env), updating, rolling back, etc. As well as some - utility operations (like managing generations, building remotely, or swapping - themes on the fly). - - Because I can go months without shaving yaks in NixOS, exact flags or details - are often and easily forgotten. This spares me that fumbling phase and also - serves as a reference. - - Note: `hey` can also be used as a shortcut for nix-env: - - hey -q - hey -iA nixos.htop - hey -e htop -DESC - -require 'shellwords' -require 'optparse' - -module Hey - extend self - Command = Struct.new(:name, :desc, :args, :opts, :fn) - - @@opts = {} - @@alias = {} - @@commands = {} - @@cli = nil - def self.defcmd names, &block - names = (names.kind_of?(Array) ? names : [names]).map(&:to_s) - names.drop(1).each { |n| @@alias[n] = names.first } - cli = Command.new names.first, [], [] - cli.opts = OptionParser.new do |opt| - opt.banner = "Usage: #{opt.program_name} #{cli.name} [options]" - opt.separator "\nOptions:" - opt.on_tail('-h', '--help', 'Prints this help') { puts opt; exit } - end - @@cli = cli - fn = block.call cli - cli.fn = lambda do |args| - begin - cli.opts.banner += - (cli.args ? " #{cli.args.join ' '}" : "") + - (cli.desc ? "\n\n#{cli.desc[0]}\n\n#{cli.desc[1..].join "\n"}" : "") - cli.opts.order!(args, into: @@opts) - fn.call args - ensure @@cli = nil end - end - @@commands[cli.name] = @@cli - end - def self.opts(*args) @@cli.opts.on(*args) end - def self.args(*args) @@cli.args = args end - def self.desc(*args) @@cli.desc = args end - def self.sh(args, sudo: false, noerror: false) - raise ArgumentError unless args.kind_of?(Array) - args.unshift('sudo') if sudo - args.compact! - if @@opts[:dryrun] - print "#{args}\n" - return true - else - result = system "#{args.shelljoin} 2>&1" - exit($?.exitstatus) unless noerror or result - return result - end - end - def self.rebuild(*args, sudo: false, host: nil) - host ||= ENV['HOST'] || `hostname`.rstrip - sh ["nixos-rebuild", - "--flake", "#{@@opts[:flake]}##{host}", - "--option", "pure-eval", "no", - *args], sudo: sudo - end - - # - defcmd :repl do - desc "Open a nix-repl with nixpkgs and dotfiles preloaded" - lambda do |args| - tempfile = '/tmp/dotfiles-repl.nix' - File.write('/tmp/dotfiles-repl.nix', "(builtins.getFlake \"#{@@opts[:flake]}\")") - begin - sh ["nix", "repl", "", tempfile, *args] - ensure - File.delete tempfile - end - end - end - - defcmd [:check, :ch] do - desc "Run 'nix flake check' on your dotfiles" - lambda do |args| - sh ["nix", "flake", "check", @@opts[:flake]] - end - end - - defcmd :show do - desc "[ARGS...]", "Run 'nix flake show' on your dotfiles" - lambda do |args| - sh ["nix", "flake", "show", @@opts[:flake]] - end - end - - defcmd :theme do - desc 'Quickly swap to another theme module' - args "THEME_NAME" - lambda do |args| - ENV["THEME"] = args.shift - rebuild "--fast", "test" - end - end - - defcmd [:test, :t] do - desc "Quickly rebuild, for quick iteration" - lambda do |args| - rebuild "--fast", "test", *args - end - end - - defcmd [:rebuild, :re] do - desc "Rebuild the current system's flake" - opts '--build-host HOST', "Where to build the flake" - opts '--target-host HOST', "Where to deploy the built derivations" - opts '--host HOST', "The target nixosConfiguration to build" - opts '--user', "Rebuild as user, rather than root" - opts '--fast', "Equivalent to --no-build-nix --show-trace for quick rebuilding" - lambda do |args| - Dir.chdir(@@opts[:flake]) do - args = ["switch"] unless args.length > 0 - rebuild(*(@@opts[:"build-host"] ? ["--build-host", @@opts[:"build-host"]] : []), - *(@@opts[:"target-host"] ? ["--target-host", @@opts[:"target-host"]] : []), - @@opts[:fast] ? "--fast" : nil, - @@opts[:debug] ? "--show-trace" : nil, - *args, - sudo: !@@opts[:user], - host: @@opts[:host]) - end - end - end - - defcmd :rollback do - desc "Roll back to last generation" - lambda do |_args| - rebuild "--rollback", "switch" - end - end - - defcmd [:update, :u] do - desc "Update specific flakes or all of them" - args "[INPUT...]" - lambda do |args| - if args.empty? - puts "Updating all flakes.." - sh ["nix", "flake", "update", @@opts[:flake]] - else - puts "Trying to update flakes: #{args.join ' '}" - sh ["nix", "flake", "lock"] - .concat(args.map { |f| [ "--update-input", f ]}.flatten) - .concat([@@opts[:flake]]) - end - end - end - - defcmd [:upgrade, :up] do - desc "Update all flakes and rebuild system" - lambda do |_args| - update - rebuild :switch - end - end - - defcmd [:search, :s] do - desc "Search nixpkgs for a package" - lambda do |args| - sh ["nix", "search", "nixpkgs", *args] - end - end - - defcmd :swap do - desc "Recursively swap nix-store symlinks with copies (or back).", - "The purpose is so you can have copies of your dotfiles that can be modified in", - "place (so you can iterate on them quickly instead of 'hey re'ing between", - "changes). Run again to restore the old link(s).\n", - "Warning: backup your copies, or they will be destroyed when restored!" - args "PATH", "[PATH...]" - lambda do |args| - for target in args - if File.directory? target - files = Dir.glob("#{target}/**/*.nix-store-backup") - if files.length > 0 - puts "There are swapped files here. Unswapping!" - call :swap, *files - else - puts "Swapping files in #{target}" - call :swap, *(Dir.glob("#{target}/**/*") - .select { |f| File.symlink? f } - .select { |l| File.readlink(l).match '^/nix/store/' }) - end - elsif File.file? "#{target}.nix-store-backup" - puts "Unswapping #{target}" - sh [:mv, '-i', "#{target}.nix-store-backup", target] - elsif File.file? target - puts "Swapping #{target}" - sh [:mv, target, "#{target}.nix-store-backup"] - sh [:cp, "#{target}.nix-store-backup", target] - else - puts "Not a valid target: #{target}" - exit 1 - end - end - end - end - - defcmd :gc do - desc "Garbage collect & optimize nix store" - opts "-a", "--all", "GC both the user and system profiles" - opts "-s", "--system", "Only GC the system profile" - lambda do |_args| - if @@opts[:all] or @@opts[:system] - puts "Cleaning up your system profile..." - sh %w{nix-collect-garbage -d}, sudo: true - sh %w{nix-store --optimise}, sudo: true - # Clear out left-over secrets. The switch-to-configuration call below will - # regenerate them. - if File.exists?("/run/secrets/*") - sh %w{rm -rf /run/secrets/*}, sudo: true - end - # nix-collect-garbage is a Nix tool, not a NixOS tool. It won't delete old - # boot entries until you do a nixos-rebuild (which means we'll always have - # 2 boot entries at any time). Instead, we properly delete them by - # reloading the current environment. - sh %w{nix-env --delete-generations old --profile /nix/var/nix/profiles/system}, sudo: true - sh %w{/nix/var/nix/profiles/system/bin/switch-to-configuration switch}, sudo: true - end - if @@opts[:all] or not @@opts[:system] - puts "Cleaning up your user profile..." - sh %w{nix-collect-garbage -d} - end - end - end - - defcmd :ssh do - desc "Run a bin/hey command on a remote NixOS system", - "If COMMAND is one of switch, test, or boot (if omitted, 'test' is assumed),", - "that host's config is built locally and then copied to the remote over ssh.", - "This will prompt you for your root password, as it temporarily opens root ssh", - "access (via your existing ssh key) to the remote -- which is immediately removed", - "upon completion.", - "", - "If COMMAND is anything else, it merely runs 'nix run github:hlissner/dotfiles", - "-- COMMAND' on the rmeote." - args "HOST", "[COMMAND]" - opts '--host HOST', "The nixos config to build and deploy to HOST" - lambda do |args| - target, command = args.take(2) - command ||= "test" - if command.match(/switch|test|boot/) - puts "Enabling root ssh access on #{target}. Enter root password for remote system:" - if sh ["ssh", "-t", target, - "sudo mkdir -p /root/.ssh && sudo cp -f ~/.ssh/authorized_keys /root/.ssh/"], - noerror: true - begin - puts "Building #{@@opts[:flake]}##{@@opts[:host] || target} for #{target}" - call "rebuild", ["--user", - "--host", @@opts[:host] || target, - "--build-host", "localhost", - "--target-host", "root@#{target}", - command] - ensure - puts "Undoing root ssh access on #{target}" - sh ["ssh", "-t", "root@#{target}", "rm -f /root/.ssh/authorized_keys"] - end - end - else - command = "nix run github:hlissner/dotfiles -- #{command}" - puts "Running '#{command}' on #{target}" - sh ["ssh", "-t", target, command] - end - end - end - - # TODO Generalize this to nix profiles - defcmd [:generations, :gen] do - desc "Explore, manage, diff across generations" - opts '--diff FROM TO', "Diff profiles FROM with TO (numbers)" - opts '-r', '--remove PROFILE', "Delete PROFILE from history" - lambda do |args| - profile = "/nix/var/nix/profiles/system" - case args.shift - when "diff" - from, to = *args - if from == to - puts "Comparing the same profile! Aborting..." - exit 1 - elsif [from, to].compact.select do |gen| - File.exists? "#{profile}-#{gen}-link" or - puts "Generation #{gen} does not exist!" - end.length != [from, to].compact.length - exit 2 - end - from = from ? "#{profile}-#{from}-link" : profile - to = to ? "#{profile}-#{to}-link" : profile - fromDevs = `nix-store -q --references #{from}`.split - toDevs = `nix-store -q --references #{to}`.split - puts (fromDevs - toDevs).map { |d| "\e[31m-#{d}\e[0m" } - puts (toDevs - fromDevs).map { |d| "\e[32m+#{d}\e[0m" } - when /ls|list/ - sh ["nix-env", "--list-generations", "--profile", profile], sudo: true - when "remove" - sh ["nix-env", "--delete-generations", "--profile", profile, *args], sudo: true - when "switch" - puts "Targeted rollback not supported yet" # TODO Is this true? - exit 1 - end - end - end - - class UsageError < StandardError; end - defcmd [:help, :h] do - desc "Show usage information for this script or a subcommand" - args "[SUBCOMMAND]" - lambda do |args| - raise UsageError unless args.first - call args.first, ["-h", *args.drop(1)] - end - end - - # - def self.call command, args - cmd = command.to_s - cmd = @@alias[cmd] while cmd and not @@commands.key?(cmd) - if cmd - @@commands[cmd].fn.call args - elsif command - puts "Couldn't recognize command '#{command}'" - exit 1 - else - raise UsageError - end - end - - def self.run args=[] - opts = OptionParser.new do |opt| - opt.banner = "Usage: hey [global-options] [command] [sub-options]\n\n" + DESC - opt.separator "\n\nAvailable Commands:" - opt.separator (@@commands.values - .reject { |c| c.desc.empty? } - .sort { |a,b| a.name <=> b.name } - .map { |c| " %-22s %s\n" % ["#{c.name} #{c.args.join ' '}", - c.desc[0]]}) - opt.separator "\nOptions:" - opt.on '-d', '--dryrun', "Don't change anything; preform dry run" - opt.on '-D', '--debug', "Show trace on nix errors" - opt.on '-f', '--flake URI', "Change target flake to URI" - opt.on '-h', '--help', "Display this help, or help for a specific command" - opt.on(*%w{-i -A -q -e -p}, "Forward to nix-env") { sh ["nix-env", *ARGV]; exit } - end - opts.order!(args, into: @@opts) - if @@opts[:flake] and @@opts[:flake].include? "#" - @@opts[:flake], @@opts[:host] = @@opts[:flake].split '#' - end - if not @@opts[:flake] or @@opts[:flake].empty? - @@opts[:flake] = File.expand_path('../', File.dirname(__FILE__)) - end - - begin - args.unshift("help") if @@opts[:help] - if args.length == 0 - puts "Error: No command specified!" - puts - raise UsageError - else - call args.first, args.drop(1) - end - rescue UsageError - puts opts - end - end -end - -Hey.run ARGV.dup diff --git a/bin/mov2gif b/bin/mov2gif deleted file mode 100755 index 5b0bad4f..00000000 --- a/bin/mov2gif +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env cached-nix-shell -#! nix-shell -i bash -p ffmpeg gifsicle - -# Uses ffmpeg to convert a video file to a gif file. Optimizes the final result -# with gifsicle. -# -# Requires: ffmpeg gifsicle -# -# Example: -# mov2gif some-vid.mp4 output.gif -# mov2gif -f 10 -s 00:00:10 -t 00:00:05 some-vid.mp4 output.gif - -set -e -PALETTE="/tmp/palette.png" - -usage() { - cat <&2 echo "$OPTARG requires an argument" - usage - exit 1 - ;; - *) >&2 echo "Not a valid arg: $opt" - usage - exit 1 - ;; - esac -done -shift $((OPTIND-1)) - -# -if (($# == 0)); then - >&2 echo "No movie file specified" - exit -elif [[ ! -f $1 ]]; then - >&2 echo "$1 does not exist" - exit -fi - -src="$1" -dest="${2:-${src%.*}.gif}" -flags="fps=${fps}$scale" - -# stats_mode=full favors motion, causing the resulting palette to better -# accomodate fades and transitions. -ffmpeg -v warning $start $duration -i "file:$src" -vf "$flags,palettegen=stats_mode=full" -y "$PALETTE" -ffmpeg -v warning $start $duration -i "file:$src" -i "$PALETTE" -lavfi "$flags [x]; [x][1:v] paletteuse" -y "$dest" - -gifsicle -O3 "$dest" -o "$dest" diff --git a/bin/myip b/bin/myip deleted file mode 100755 index 0ac81c6f..00000000 --- a/bin/myip +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env zsh -# Echos your local or WAN IP - -if [[ $1 == -w ]]; then - wan=1 - shift -fi - -if [[ -n $wan ]]; then - dig +short myip.opendns.com @resolver1.opendns.com -else - IF=$(netstat -rn | awk '/^0.0.0.0/ {thif=substr($0,74,10); print thif;} /^default.*UG/ {thif=substr($0,65,10); print thif;}') - if command -v ifconfig >/dev/null; then - ifconfig ${NET_IF} | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' - elif command -v ip >/dev/null; then - ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/' - else - >&2 echo "No easy way to grab your IP" - exit 1 - fi -fi diff --git a/bin/optimimg b/bin/optimimg deleted file mode 100755 index 03bf63a0..00000000 --- a/bin/optimimg +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env zsh - -# Optimize image files (losslessly by default) -# -# Examples: -# imgoptim image.jpg image.png image.gif -# imgoptim directory_of_images/ -# imgoptim directory_of_images/*.png -# -# Requires: -# PNGs: optipng, pngquant (lossy) -# JPGs: jpegtran, jpegoptim (lossy) -# GIFs: gifsicle -# -# Packages (same name on homebrew & arch linux) -# optipng [pngquant] libjpeg-turbo [jpegoptim] gifsicle - -set -e -unset CDPATH - -_usage() { - cat <&2 echo "$OPTARG requires an argument"; _usage; exit 1;; - *) >&2 echo "Not a valid arg: $opt"; _usage; exit 1;; - esac -done -shift $((OPTIND-1)) - -cmds=( optipng jpegtran gifsicle ) -[[ -n $lossy ]] && cmds=( $cmds pngquant jpegoptim ) -for cmd in ${cmds[@]}; do - if ! command -v $cmd >/dev/null; then - >&2 echo "$cmd isn't installed" - error=1 - fi -done -if [[ -n $error ]]; then - >&2 echo "There were errors, aborting" - exit 1 -fi - -for file in $@; do - if [[ -d $file ]]; then - imgoptim $file/* - elif [[ -f $file ]]; then - pre_size=$(_filesize "$file") - case ${file##*.} in - png) - [[ -n $lossy ]] && pngquant $file - optipng -nc -nb -o7 $file - ;; - gif) - gifsicle --batch --optimize=3 "$file" - ;; - jpg|jpeg) - [[ -n $lossy ]] && jpegoptim --max=90 "$file" - jpegtran -copy none -optimize -progressive -outfile "$file" "$file" - ;; - *) - printf "Unrecognized file '$file': ignored" - ;; - esac - post_size=$(_filesize "$file") - perc=$(echo "((${pre_size} - ${post_size}) / ${pre_size}) * 100" | bc -l) - printf "* %s: %d => %d (%.2f%% reduction)\n" "$file" "${pre_size}" "${post_size}" "$perc" - fi -done diff --git a/bin/optimpdf b/bin/optimpdf deleted file mode 100755 index 167e90ba..00000000 --- a/bin/optimpdf +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash - -# Compress pdf files using ghostscript. -# -# Defaults to 72 dpi. -# -# Usage: -# pdfoptim SRC [TARGET] [DPI] -# -# Requires: ghostscript (gs) - -optimize() { - # Adapted from Alfred Klomp's shrinkpdf script - # - gs -q -dNOPAUSE -dBATCH -dSAFER \ - -sDEVICE=pdfwrite \ - -dPDFSETTINGS=/screen \ - -dCompatibilityLevel=1.3 \ - -dEmbedAllFonts=true \ - -dSubsetFonts=true \ - -dAutoRotatePages=/None \ - -dMonoImageResolution=$3 \ - -dMonoImageDownsampleType=/Bicubic \ - -dGrayImageResolution=$3 \ - -dGrayImageDownsampleType=/Bicubic \ - -dColorImageResolution=$3 \ - -dColorImageDownsampleType=/Bicubic \ - -sOutputFile="$2" \ - "$1" -} - -src="$1" -dest="${2:--}" -dpi="${3:-72}" - -optimize "$src" "$dest" "$dpi" || exit $? diff --git a/bin/rofi/appmenu b/bin/rofi/appmenu deleted file mode 100755 index 3156c692..00000000 --- a/bin/rofi/appmenu +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env sh -rofi -show drun \ - -modi drun,run \ - -show-icons \ - -theme theme/appmenu.rasi diff --git a/bin/rofi/browsermenu b/bin/rofi/browsermenu deleted file mode 100755 index cdb42e28..00000000 --- a/bin/rofi/browsermenu +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env cached-nix-shell -#! nix-shell -p ruby_2_7 rubyPackages_2_7.sqlite3 -i "ruby -S" --quiet - -# Open your browser bookmarks or history in your default browser. Currently -# works with Firefox, Brave, and qutebrowser. - -require 'shellwords' -require 'sqlite3' -require 'json' -require 'fileutils' -require 'cgi' - -def rofi items, *args - cmd = [*%w{rofi -dmenu -theme theme/bookmarkmenu.rasi -markup-rows -multi-select -p browser -i}, *args] - IO.popen(cmd.compact.shelljoin, "r+") do |pipe| - pipe.puts items.keys.join "\n" - pipe.close_write - (pipe.gets || "").split "\n" - end -end - -def db file, command - copy = "/tmp/browsermenu-db-#{File.basename(file)}" - begin - # Copy the sqlite database because history/bookmark info is usually small - # and may be locked by an open browser. - unless File.exists? copy - FileUtils.cp file, copy - FileUtils.chmod 0400, copy, verbose: true - end - results = [] - db = SQLite3::Database.open copy - db.execute(command).each { |r| results.push r } - results - ensure - File.delete copy - end -end - -def walk_json children - result = [] - for c in children - if c['children'] - result += walk_json c['children'] - else - result.push [ c['name'], c['url'] ] - end - end - result -end - -def get_bookmarks browser - bookmarks = [] - case browser - when :firefox - # In my nixos dotfiles I hardcode the default profile to $USER.profile, - # which makes this lookup easier, but means this script won't work on any - # other system. - user = ENV['USER'] - ["#{ENV['HOME']}/.mozilla/firefox/#{user}.default", - "#{ENV['XDG_CONFIG_HOME']}/firefox/.mozilla/firefox/#{user}.default", - "#{ENV['XDG_DATA_HOME']}/mozilla/firefox/#{user}.default"].each do |dir| - if Dir.exists? dir - db "#{dir}/places.sqlite", - ["SELECT DISTINCT mb.title, mp.url FROM moz_bookmarks mb", - "INNER JOIN moz_places mp ON mp.id = mb.fk", - "WHERE mb.type = 1 AND mb.title IS NOT NULL", - "ORDER BY mp.frecency DESC", - "LIMIT 200"].join(' ') - end - end - when :brave - f = File.read "#{ENV['XDG_CONFIG_HOME']}/BraveSoftware/Brave-Browser/Default/Bookmarks" - data = JSON.parse f - walk_json data["roots"]["bookmark_bar"]["children"] - when :qutebrowser - bookmarks = File.readlines "#{ENV['XDG_CONFIG_HOME']}/qutebrowser/bookmarks/urls" - bookmarks.map { |s| s.strip.split(' ', 2).reverse } - end -end - -def get_history browser - case browser - when :firefox - # In my nixos dotfiles I hardcode the default profile to $USER.profile, - # which makes this lookup easier, but means this script won't work on any - # other system. - user = ENV['USER'] - ["#{ENV['HOME']}/.mozilla/firefox/#{user}.default", - "#{ENV['XDG_CONFIG_HOME']}/firefox/.mozilla/firefox/#{user}.default", - "#{ENV['XDG_DATA_HOME']}/mozilla/firefox/#{user}.default"].each do |dir| - if Dir.exists? dir - return db "#{dir}/places.sqlite", - ["SELECT title, url", - "FROM moz_places", - "WHERE title<>''", - "ORDER BY last_visit_date DESC"].join(' ') - end - end - return [] - when :brave - db "#{ENV['XDG_CONFIG_HOME']}/BraveSoftware/Brave-Browser/Default/History", - "SELECT title, url FROM urls GROUP BY url ORDER BY last_visit_time DESC LIMIT 200" - when :qutebrowser - db "#{ENV['XDG_DATA_HOME']}/qutebrowser/history.sqlite", - ["SELECT title, url FROM History", - "WHERE title != ''", - "GROUP BY url", - "ORDER BY atime DESC"].join(' ') - end -end - -def list urls - items = urls.map do |x| - x.map! { |x| CGI.escapeHTML x } - [x[0].empty? ? - "#{x[1]}" : - "#{x[0]} #{x[1]}", - x[1]] - end.to_h - selected = rofi items - selected.map { |key| items[key] } -end - -type, browser = *ARGV -browser = (browser || ENV['BROWSER']).to_sym -urls = if type == 'history' - get_history browser -else - get_bookmarks browser -end -urls = list urls -if urls.empty? - puts "No URL selected. Aborting..." - exit 1 -end -Process.detach fork { exec ENV['BROWSER'], *urls } diff --git a/bin/rofi/bwmenu b/bin/rofi/bwmenu deleted file mode 100755 index b43cb375..00000000 --- a/bin/rofi/bwmenu +++ /dev/null @@ -1,260 +0,0 @@ -#!/usr/bin/env cached-nix-shell -#! nix-shell -p ruby_2_7 -i "ruby -S" - -# A rofi client for vaultwarden. Similar to passmenu, but uses rofi. (Badly) -# written in ruby because data persistence and frontend logic would be a pain to -# write in bash or zsh. I'll refactor this later perhaps. Maybe. - -require 'shellwords' -require 'json' -require 'optparse' -require 'uri' -require 'base64' -require 'fileutils' - -PersistentData = Struct.new(:path, :ttl, :pid, :data) do - DATADIR = "#{ENV['XDG_DATA_HOME']}/bwmenu" - - def self.load name, ttl: nil - path = "#{DATADIR}/#{name}" - data = JSON::load(Base64.decode64(File.read(path))) if File.exists?(path) - d = PersistentData.new *(data || {}).values - d.path = path - d.ttl = ttl - d - end - - def expire - File.delete(self.path) if File.exists?(self.path) - end - - def save data = nil, onfinish = nil - self.data = data if data - FileUtils.mkdir_p DATADIR unless File.directory?(DATADIR) - File.open(self.path, 'w') do |f| - f.chmod 0600 - f.write Base64.encode64(self.to_h.to_json) - end - if self.pid and system("ps -f p #{self.pid}") - Process.kill self.pid - end - if self.ttl - self.pid = fork do - Signal.trap('TERM') { throw :terminate } - catch :terminate do - sleep self.ttl - end - onfinish.call(self, data) if onfinish.respond_to? :call - self.expire - end - end - end -end - -module BW - extend self - - EXE = {} - def self.bin exe - EXE[exe] = `which #{exe} 2>/dev/null`.rstrip unless EXE[exe] - raise "Couldn't find #{exe} in PATH" if EXE[exe].empty? - EXE[exe] - end - - def self.sh *args, input: nil, sudo: false, nooutput: false - exe, *args = args.flatten.compact.map(&:to_s) - bin exe - cmd = [sudo ? "sudo" : nil, exe, *args.shelljoin].compact.join(' ') - $stderr.puts "$ #{cmd}" - if input - IO.popen(cmd, "r+") do |pipe| - pipe.puts input - pipe.close_write - (pipe.gets || "").rstrip unless nooutput - end - else - (`#{cmd}` || "").rstrip - end - end - - def self.rofi items, *args - input = items.keys.join("\n") if items - result = sh(['rofi', '-dmenu', '-markup-rows', - '-theme', 'theme/passmenu.rasi', - *args], - input: input) - if items - items[result] - else - result - end - end - - def self.notify message, title: nil, urgency: "normal" - sh 'notify-send', '-u', urgency, '-a', "Vaultwarden", *[title, message].compact - end - - def self.error message - $stderr.puts message - notify message, urgency: 'low' - exit 1 - end - - def self.bw *args - sh [:bw, '--session', @@session_id, *args] - end - - def self.xclip *args, **opts - sh :xclip, '-selection', 'clipboard', *args, **opts - end - - @@session = nil - @@session_id = nil - def self.run argv - opts = {} - OptionParser.new do |opt| - opt.banner = "Usage: bwmenu [options] [URL]" - opt.on '--autolock TTL', "How long to keep the vault open" - opt.on '--autoclear TTL' "How long to keep secrets in the clipboard" - opt.on '--debug', "Be more verbose" - opt.on '-f', '--field FIELD', "Extract specific field from selected entry; accepts 'whole' for whole entry" - opt.on '-o', '--output', "Write output to stdout rather than the clipboard" - opt.on '--select', "Select first entry" - opt.on '--select-if-only', "Select first entry if only entry" - opt.on '--default ID', "Highlight item with ID by default" - opt.on '-r', "Resume where you last left off" - end.parse! argv, into: opts - - clipboard_ttl = opts[:autoclear] || 20 - vault_ttl = opts[:autolock] || 900 - - @@session = PersistentData.load :session, ttl: vault_ttl - if @@session.data - sid, data = @@session.data - @@session_id = sid - else - pass = rofi nil, %w{-p Master\ Password -password -lines 0} - error "No password given. Aborting..." if pass.empty? - sid = sh [:bw, :unlock, '--raw', pass] - error "Failed to unlock vault. Aborting..." unless $?.success? - @@session_id = sid - data = JSON.parse(bw(:list, :items)) - @@session.save [sid, data] - end - raise "No session ID" unless @@session_id - - last = PersistentData.load :last_id - last_id, last_field = last.data if last - if opts[:r] and last_id.data - selected = data.find { |u| u['id'] == last_id } - else - select_type = opts[:"select-if-only"] ? :if_only : opts[:select] - selected = list_items data, argv.first, - default: opts[:default], - select: select_type - end - - begin - error "Nothing selected. Aborting..." if selected.empty? - last_id = selected['id'] - item = show_item selected, field: opts[:field] - if not item - error "Nothing selected. Aborting..." if selected.empty? - elsif item.respond_to? :call - item.call - elsif opts[:output] - puts item.rstrip - else - notify "Copied to clipboard for #{clipboard_ttl} seconds" - xclip '-in', input: item.rstrip, nooutput: true - clipboard = PersistentData.load :clipboard, ttl: clipboard_ttl - clipboard.save( - item.rstrip, - lambda { |_, data| xclip('-in', '/dev/null') if item.rstrip == xclip('-out') } - ) - end - ensure - last.save [ last_id, last_field ] - end - end - - # - def list_items data, query = nil, default: nil, select: false - rofiData = {} - rofiData["Sync Vault"] = lambda { notify "Sync vault", bw(:sync) }, - rofiData["Open Vault in Browser"] = lambda { sh ENV['BROWSER'], bw(:config, :server) } - data = data.map do |i| - default_id = i['id'] if i['id'] == default - icon = ["", "", "", ""][i['type'] - 1] - case i['type'] - when 1 # logins - urls = (i['login']['uris'] || []).filter_map do |u| - return unless u['uri'] - uri = URI(u['uri']) - not i['name'].include?((uri.hostname || uri.path).downcase) and - uri.hostname || uri.path - end - subtitle = urls.join ", " if i['type'] == 1 - subtitle = " (#{subtitle})" unless urls.empty? - when 2 # secure notes - when 3 # cards - subtitle = " (#{i['card']['brand'].downcase})" - when 4 # identities - end - ["#{icon} #{i['name']}#{subtitle}", i] - end - case select - when :if_only - return data[0][1] if data.length == 1 - when true - return data[0][1] - end - rofi rofiData.merge(data.to_h), '-p', 'Vaultwarden', '-filter', (query || "") - end - - def show_item item, field: nil - return item.to_json if field == 'whole' - preamble = {} - data = {} - case item['type'] - when 1 # logins - url = item['login']['uris'][0]['uri'] - preamble[" Launch #{url}"] = lambda { sh ENV['BROWSER'], url } - data['Username'] = item['login']['username'] - data['Password'] = item['login']['password'] - data['TOTP'] = bw :get, :totp, url if item['login']['totp'] - return (data[field.capitalize] || item[field]) if field - when 2 # secure notes - data['Notes'] = item['notes'] - return item[field] if field - when 3 # cards - cardInfo = item['card'] - data['Card Type'] = cardInfo['brand'] - data['Card Name'] = cardInfo['cardholderName'] - data['Card Number'] = cardInfo['number'] - data['Expiry Date'] = "#{cardInfo['expMonth']}/#{cardInfo['expYear']}" - data['Security Code'] = cardInfo['code'] - return cardInfo[field] if field - when 4 # identities - item['identity'].each { |k,v| data[k] = v if v } - return item['identity'][field] if field - end - (item['fields'] || []).each do |field| - data[field['name']] = field['value'] - end - maxLength = data.keys.map(&:length).max + 5 - rofiData = {} - preamble.merge(data).each do |label, value| - if value.kind_of? String - valueLabel = value - valueLabel = value.gsub /./, '*' if label == 'Password' - rofiData["%-#{maxLength}s %s" % [label, valueLabel]] = value - else - rofiData[label] = value - end - end - rofi rofiData, '-p', item['name'] - end -end - -BW.run ARGV.dup diff --git a/bin/rofi/filemenu b/bin/rofi/filemenu deleted file mode 100755 index f5ee1fba..00000000 --- a/bin/rofi/filemenu +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env sh -cd $HOME -DIR="$(fd -L -d 4 --type d . | rofi -dmenu -i -p "~/" -theme theme/filemenu.rasi)" -if [ -d "$DIR" ]; then - cd "$DIR" - if [[ $1 == "-x" ]]; then - scratch - else - xst - fi -fi diff --git a/bin/rofi/passmenu b/bin/rofi/passmenu deleted file mode 100755 index bdca124e..00000000 --- a/bin/rofi/passmenu +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env bash - -# Prompts for a pass entry, then for a specific field. Similar to passmenu, but -# uses rofi, and can resume from a previous session. -# -# Example: passmenu [RESUME] - -ROFI_CMD='rofi -dmenu -theme theme/passmenu.rasi' -MSG_CMD='notify-send' -set -e -shopt -s nullglob globstar - -for prog in xclip pass; do - if ! command -v "$prog" >/dev/null; then - >&2 echo "$prog not installed, aborting" - exit 1 - fi -done - -if [[ $1 == -r ]]; then - resume=1; shift -fi - -url= -# Get qutebrowser's current url -win=$(xdotool getactivewindow) -if [[ -n $win ]]; then - winname=$(xdotool getwindowname $win) - if [[ $winname =~ " - Mozilla Firefox$" ]]; then - url=${winname% - Mozilla*} - url=${url##* - } - while (( ${#url//[^.]/} > 1 )); do - url=${url#*.} - done - fi -fi - -LAST_ENTRY_FILE=/tmp/_upm -if [[ -n $resume && -f $LAST_ENTRY_FILE ]]; then - entry="$(<$LAST_ENTRY_FILE)" -else - prefix=${PASSWORD_STORE_DIR-~/.password-store} - password_files=( "$prefix"/**/*.gpg ) - password_files=( "${password_files[@]#"$prefix"/}" ) - password_files=( "${password_files[@]%.gpg}" ) - entry=$(printf "%s\n" "${password_files[@]}" | $ROFI_CMD -p "..." -filter "$url") -fi - -if [[ -z $entry ]]; then - $MSG_CMD "Error!" "Failed to select $entry" - exit 1 -fi - -echo "$entry" >/tmp/_upm -secrets="$(pass show "$entry")" -if [[ -n $secrets ]]; then - fields=$(awk -F': ' 'NR>1 && !/^otpauth:/ {print $1}' <<<"$secrets") - field=$(printf "password\n%s\notp\n" "${fields[@]}" | $ROFI_CMD -p "$entry") - case $field in - password) pass -c "$entry" ;; - otp) printf "%s" "$(pass otp -c "$entry")" ;; - *) printf "%s" "$(awk -v "key=$field:" '$1 == key {print $2}' <<<"$secrets")" | xclip -selection clipboard -in ;; - esac - $MSG_CMD "Success!" "Copied $entry/$field to clipboard for 45s" -else - $MSG_CMD "Error!" "Failed to retrieve $entry" - exit 2 -fi diff --git a/bin/rofi/powermenu b/bin/rofi/powermenu deleted file mode 100755 index daeb1dc7..00000000 --- a/bin/rofi/powermenu +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env sh - -rofi_command="rofi -theme theme/powermenu.rasi" - -### Options ### -power_off="\tShutdown" -reboot="\tReboot" -lock="\tLock" -suspend="鈴\tSleep" -log_out="\tLogout" -# Variable passed to rofi -options="$power_off\n$reboot\n$lock\n$suspend\n$log_out" - -case "$(echo -e "$options" | $rofi_command -dmenu -selected-row 2)" in - $power_off) - systemctl poweroff - ;; - $reboot) - systemctl reboot - ;; - $lock) - zzz - ;; - $suspend) - dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause - systemctl suspend - ;; - $log_out) - bspc quit - ;; -esac diff --git a/bin/rofi/spotifymenu b/bin/rofi/spotifymenu deleted file mode 100644 index e69de29b..00000000 diff --git a/bin/rofi/windowmenu b/bin/rofi/windowmenu deleted file mode 100755 index a0128aac..00000000 --- a/bin/rofi/windowmenu +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env sh -rofi -show window \ - -show-icons \ - -theme theme/windowmenu.rasi diff --git a/bin/scratch b/bin/scratch deleted file mode 100755 index 93e5019f..00000000 --- a/bin/scratch +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash - -# Toggle a scratch terminal window. A scratch terminal is a disposable terminal -# for one-off, quick commands that don't warrant a dedicated terminal. - -SCRID=scratch -CMD=${1:-'tmux new-session -A -s scratch -n scratch'} -focused=$(xdotool getactivewindow) -scratch=$(xdotool search --onlyvisible --classname $SCRID) -if [[ -n $scratch ]]; then - if [[ $focused == $scratch ]]; then - xdotool windowkill $scratch - else - xdotool windowactivate $scratch - fi -elif command -v urxvt >/dev/null; then - urxvt -name $SCRID \ - -e $SHELL -c "$CMD" -elif command -v xst >/dev/null; then - xst -t $SCRID -n $SCRID -c $SCRID \ - -f "$(xrdb -query | grep 'scratch\.font' | cut -f2)" \ - -e $SHELL -c "$CMD" -else - >&2 echo "No shell to launch the scratch terminal with" - exit 1 -fi diff --git a/bin/scrcap b/bin/scrcap deleted file mode 100755 index 5304ba87..00000000 --- a/bin/scrcap +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env cached-nix-shell -#! nix-shell -i bash -p maim slop - -# A script that takes a screenshot (prompts you for what region/window to -# capture) and stores it in the clipboard. - -tmp=$(mktemp) -trap "rm -f '$tmp'" EXIT - -# Delay for long enough that we can refocus the targeted window -if maim --delay=${2:-1} -us >"$tmp"; then - xclip -selection clipboard -t image/png "$tmp" && - notify-send "Screenshot saved" "Copied image to clipboard" -else - notify-send -u low "Aborted screenshot" -fi diff --git a/bin/scrrec b/bin/scrrec deleted file mode 100755 index a333674d..00000000 --- a/bin/scrrec +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env cached-nix-shell -#! nix-shell -i bash -p ffmpeg slop - -# Select a region and record it. -# -# If given a gif, it will record an mp4 and convert it afterwards using the -# mov2gif script included in this repo (which is powered by gifsicle and -# ffmpeg). -# -# Usage: scrrec somefile.mp4 -# scrrec another.gif - -is_script= -geom= -delay=1 -count=3 -fps=30 -stopfile=/tmp/_stop -while getopts c:d:f:g:ps opt; do - case $opt in - c) count=$OPTARG ;; - d) delay="$OPTARG" ;; - f) fps=$OPTARG ;; - g) geom="$OPTARG" ;; - p) picom= ;; - s) is_script=1 ;; - esac -done -shift $((OPTIND-1)) - -## -select-region() { - if [[ $geom ]]; then - echo "${geom//[x+]/ }" - else - slop -nof "%w %h %x %y" - fi -} - -countdown() { - if (( count > 0 )); then - for ((i=count;i>0;i--)); do - if [[ $is_script ]]; then - notify-send -u critical -t 1000 "Recording in $i" - else - echo "Recording in $i" - fi - sleep 1 - done - elif [[ $is_script ]]; then - notify-send -u critical "Starting recording..." - else - echo "Started recording..." - fi -} - -recording-start() { - local ffmpeg_opts="-y -f x11grab -show_region 1 -ss $delay -s ${4}x${5} -i :0.0+${2},${3} -framerate ${fps}" - local dest=${1:-./rec.mp4} - local mp4dest= - [[ $dest == *.gif ]] && mp4dest="${dest%.*}.mp4" - countdown - ffmpeg $ffmpeg_opts "${mp4dest:-$dest}" & - pid=$! - echo $pid >$stopfile - wait $pid - rm -f $stopfile - if [[ -f "$mp4dest" ]]; then - mov2gif "$mp4dest" "$dest" && rm -fv "$mp4dest" - fi - echo -n "$dest" | xclip -selection clipboard -in - notify-send "Screencast successful" "Saved to $dest\nAnd copied to your clipboard!" -} - - -# If a recording session is already active, stop that one. -if [[ -n "$is_script" && -f "$stopfile" ]]; then - kill $(cat $stopfile) - echo "Stopped previous recording" - exit 0 -fi - -read -r W H X Y < <(select-region) -[[ -z "$W$H$X$Y" ]] && exit 1 - -# picom with blur and/or transparencies cause unbearable flickering in -# recordings, so temporarily disable it. -picom= -if systemctl is-enabled --user picom >/dev/null; then - systemctl --user stop picom - picom=1 -fi -cleanup() { [[ $picom ]] && systemctl --user start picom; } -trap cleanup EXIT - -# Let 'er rip -recording-start "$1" "$X" "$Y" "$W" "$H" - -# vim:set ft=sh shiftwidth=2: diff --git a/bin/since b/bin/since deleted file mode 100755 index ffe053e2..00000000 --- a/bin/since +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env zsh -set -e -(( $# > 0 )) || exit - -# Displays the time since $1 in a human readable format (e.g. 4h 25m 55s). If -# given a file, the modified time is used. If $1 == "--", then this script acts -# as a converter, converting $2 into human a readable format, e.g. since -- 72 -# #=> 1m 12s - -# TODO: A help fallback -# TODO: Options parsing? - -# If given a file, give time since last modification -(( $# == 1 )) && [[ -f $1 ]] && arg=reference || arg=date - -if [[ $1 == -- ]]; then - t="$2" -else - now=$(date +%s) - then=$(date --$arg="$*" +%s) - - t=$(( now - then )) -fi - -# Bash doesn't support floating point arithmetic like zsh does, so use bc to do -# our arithmetic. -zmodload zsh/mathfunc -t=$(( abs(t) )) -weeks=$(( t / 60 / 60 / 24 / 7 )) -days=$(( t / 60 / 60 / 24 % 7 )) -hours=$(( t / 60 / 60 % 24 )) -minutes=$(( t / 60 % 60 )) -seconds=$(( t % 60 )) -(( weeks > 0 )) && echo -n "${weeks}w " -(( days > 0 )) && echo -n "${days}d " -(( hours > 0 )) && echo -n "${hours}h " -(( minutes > 0 )) && echo -n "${minutes}m " -echo -n "${seconds}s" diff --git a/bin/spell b/bin/spell deleted file mode 100755 index a1d0ea82..00000000 --- a/bin/spell +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# Find the correct spelling of a word. Uses (and requires) fzf to select the -# correct word. This output can be piped to something like dict to find -# definitions/synonyms. -# -# Requires: aspell, fzf -# Usage: spell mispeling -# Example: dict $(spell mispeling) - -result=$(echo "$@" | aspell -a | tail -n-2) -if [[ "$result" == '*' ]]; then - echo "$@" -else - words=$(echo "$result" | sed $'s/[:,] /\\\n/g' | tail -n +2) - if (( $(wc -l <<< "$words") > 1 )) && command -v sk >/dev/null; then - fzf <<< "$words" - else - echo "$words" - fi -fi diff --git a/bin/timein b/bin/timein deleted file mode 100755 index c530a245..00000000 --- a/bin/timein +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -open=open -[[ $OSTYPE == linux* ]] && open=xdg-open - -$open https://time.is/$1 2>/dev/null & diff --git a/bin/zzz b/bin/zzz deleted file mode 100755 index 99d90d79..00000000 --- a/bin/zzz +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -# If -f, then put computer to sleep. -# Otherwise, lock screen and turn off monitor. - -if [[ $1 == -h ]]; then - bin=${0##*/} - echo "Usage: $bin [-f]" - echo - echo " $bin # put display to sleep" - echo " $bin -f # put computer to sleep" -elif [[ $1 == -f ]]; then - echo "Going to sleep..." - systemctl suspend -else - echo "Shutting my eyes..." - if command -v slock >/dev/null; then - pgrep slock >/dev/null || slock & - fi - sleep 1 - xset dpms force off -fi diff --git a/box.nix b/box.nix new file mode 100644 index 00000000..553460ae --- /dev/null +++ b/box.nix @@ -0,0 +1,28 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./common.nix + ./mossnet.nix + ]; + + users.extraUsers."anish".extraGroups = [ "jackaudio" ]; + +# services.xserver = { +# enable = true; +# displayManager.gdm.enable = true; +# desktopManager.gnome3.enable = true; +# }; + + # task whisperer broken + #nixpkgs.config.allowBroken = true; + + # virtual box + virtualisation.virtualbox.host.enable = true; + + # ErgoDox Firmware (doesn't compile) + # environment.systemPackages = with pkgs; [ + # qmk_firmware + # ]; +} + diff --git a/hosts/common.nix b/common.nix similarity index 58% rename from hosts/common.nix rename to common.nix index 3ce7a772..0790f579 100644 --- a/hosts/common.nix +++ b/common.nix @@ -1,14 +1,16 @@ { config, pkgs, ... }: { -# imports = [ -# ./nvim.nix + imports = [ + ./nvim.nix # ./unstable.nix -# ]; + ]; environment.systemPackages = with pkgs; [ + tailscale htop + fzf iftop wget curl @@ -16,6 +18,7 @@ bat fd ag + wpa_supplicant tcpdump whois mtr @@ -27,51 +30,52 @@ zip unzip rsync - #tmux + tmux pwgen glow + jq gitAndTools.gitFull #neovim defined in ./nvim.nix - #firefox - #fractal - #pinentry_gnome + # wofi + # firefox + # fractal + # pinentry_gnome + pinentry_curses pass gcc less - mpv - zathura + # mpv + # zathura #qmk_firmware + python3 gdb - vcv-rack + # vcv-rack #xdotool #neofetch #calibre #openvpn - gimp + #gimp xxd - kitty + # tilix + # kitty taskwarrior - #gnupg + gnupg openjdk glslviewer - filezilla - signal-desktop - #wire-desktop - #tdesktop - #feedreader - newsflash - syncthing + #filezilla + # signal-desktop + # wire-desktop + # tdesktop + # feedreader + #newsflash +# syncthing dijo - #kdeconnect #ssb-patchwork - #gnome3.gnome-tweaks - #gnome3.pomodoro - #gnomeExtensions.gsconnect - #gnomeExtensions.taskwhisperer + #gnomeExtensions.taskwhisperer #gnome3.networkmanager-openvpn #python3Packages.youtube-dl #appimage-run - #home-manager + home-manager libreoffice fontconfig #hugo @@ -82,14 +86,18 @@ supercollider haskellPackages.tidal pandoc + # calibre ]; programs.bash.enableCompletion = true; + programs.gnupg.agent.enable = true; + programs.gnupg.agent.pinentryFlavor = "curses"; + programs.gnupg.agent.enableSSHSupport = true; # needed for vcv-rack nixpkgs.config.allowUnfree = true; - #system.copySystemConfiguration = true; + system.copySystemConfiguration = true; #services.syncthing = { # enable = true; # openDefaultPorts = true; @@ -99,12 +107,14 @@ #}; #zsh powerlevel10k - programs.zsh.enable = true; - programs.zsh.promptInit = "source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; - users.users.anish.shell = pkgs.zsh; + #programs.zsh.enable = true; + #programs.zsh.promptInit = "source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; + users.users.anish.shell = pkgs.bash; #android programs.adb.enable = true; users.users.anish.extraGroups = ["adbusers"]; + #ssh + services.sshd.enable = true; } diff --git a/config/.gitignore b/config/.gitignore deleted file mode 100644 index 59ba8777..00000000 --- a/config/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -result -result/* diff --git a/config/awesome/init.fnl b/config/awesome/init.fnl deleted file mode 100644 index f9247628..00000000 --- a/config/awesome/init.fnl +++ /dev/null @@ -1,111 +0,0 @@ -(local gears (require :gears)) -(local awful (require :awful)) -(local naughty (require :naughty)) -(require :awful.autofocus) - -(local wincmd (require :commands.window)) -(local tagcmd (require :commands.tag)) -(local pa (require :utils.pulseaudio)) -(local input (require :utils.input)) - - -(fn initialize [bindings] - ;; Error handling - ;; Check if awesome encountered an error during startup and fell back to - ;; another config (This code will only ever execute for the fallback config) - (let [preset { :timeout 0 :bg "#000000" :fg "#ff0000" :max_height 1080 }] - (when awesome.startup_errors - (naughty.notify {:preset preset - :title "Oops, there were errors during startup!" - :text awesome.startup_errors})) - - (var in-error false) - (awesome.connect_signal - "debug::error" - (fn [] - ;; Make sure we don't go into an endless error loop - (when (not in-error) - (set in-error true) - (naughty.notify {:preset preset - :title "Oops, an error happened!" - :text (tostring err)}) - (naughty.notify {:preset preset - :title "Oops, an error happened!" - :text (tostring err)}) - (set in-error false))))) - - (root.keys bindings.global-keys) - - (naughty.notify {:text "Glorious fennel"}) - (gears.wallpaper.set "#282c34")) - - -(local - bindings - { - :global-keys - (gears.table.join - - (input.key-group - "awesome" - [[:mod] :s hotkeys_popup.show_help "show help"] - [[:mod :shift] :r awesome.restart "reload config"] - ) - - (input.key-group - "exec" - [[:mod] :space (fn [] (awful.util.spawn "rofi -show run")) "app launcher"] - [[:mod] :e (fn [] (awful.util.spawn "emacsclient -c -n -e '(switch-to-buffer nil)'")) "emacs"] - [[:mod] :v (fn [] - (let [option "gopass ls --flat" - prompt "rofi -dmenu -p pass" - action "xargs --no-run-if-empty gopass show -c" - cmd (.. option " | " prompt " | " action)] - (awful.spawn.easy_async_with_shell cmd (fn [])))) - "secret vault"] - [[:mod] :Return (fn [] (awful.spawn "xst")) "open terminal"] - [[] :XF86AudioMute pa.toggle-muted "⏼ audio muted"] - [[] :XF86AudioMicMute pa.toggle-mic-mute "⏼ mic muted"] - [[] :XF86AudioRaiseVolume (fn [] (pa.adjust-volume 5)) "raise volume"] - [[] :XF86AudioLowerVolume (fn [] (pa.adjust-volume -5)) "lower volume"] - ) - - (input.key-group - "client" - [[:mod] :h (fn [] (awful.client.focus.bydirection :left)) "focus left"] - [[:mod] :j (fn [] (awful.client.focus.bydirection :down)) "focus down"] - [[:mod] :k (fn [] (awful.client.focus.bydirection :up)) "focus up"] - [[:mod] :l (fn [] (awful.client.focus.bydirection :right)) "focus right"] - [[:mod] :n (fn [] (awful.client.focus.byidx 1)) "focus next"] - [[:mod] :p (fn [] (awful.client.focus.byidx -1)) "focus previous"] - [[:mod :shift] :j (fn [] (awful.client.swap.byidx 1)) "swap next with previous"] - [[:mod :shift] :k (fn [] (awful.client.swap.byidx -1)) "swap next with previous"] - ) - ) - - :client-keys - (gears.table.join - (input.key-group - "client" - [[:mod] :n wincmd.minimize "minimize"] - [[:mod] :t wincmd.toggle-ontop "⏼ keep on top"] - [[:mod] :m wincmd.toggle-maximized "⏼ maximize"] - [[:mod] :f wincmd.toggle-fullscreen "⏼ fullscreen"] - [[:mod :ctrl] :space awful.client.floating.toggle "⏼ floating"] - [[:mod :ctrl] :Return wincmd.move-to-master "move to master"] - [[:mod :ctrl] :m wincmd.toggle-maximize-vertical "⏼ max vertically"] - [[:mod :shift] :m wincmd.toggle-maximize-horizontal "⏼ max horizontally"] - [[:mod :shift] :c wincmd.close "close"] - )) - - :client-buttons - (gears.table.join - (input.mousebind [] input.left-click client.mouse-raise) - (input.mousebind [:mod] input.left-click client.mouse-drag-move) - (input.mousebind [:mod] input.right-click client.mouse-drag-resize) - ) - }) - - -;; -(initialize bindings) diff --git a/config/bspwm/bspwmrc b/config/bspwm/bspwmrc deleted file mode 100755 index b942f75a..00000000 --- a/config/bspwm/bspwmrc +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash - -# case $HOSTNAME in -# kuro) export LAN=eno1 ;; -# shiro) export LAN=wlp3s0 ;; -# esac - -export MONITOR=$(xrandr -q | grep primary | cut -d' ' -f1) -export MONITORS=( $(xrandr -q | grep ' connected' | cut -d' ' -f1) ) -MONITOR=${MONITOR:-${MONITORS[0]}} - -# Only have workspaces for primary monitor -bspc monitor $MONITOR -d {1,2,3,4,5} - -bspc config remove_disabled_monitors true -bspc config remove_unplugged_monitors true - - -# Rules -bspc rule -r '*' - -bspc rule -a Pinentry state=floating center=on -bspc rule -a Emacs split_ratio=0.28 state=tiled -bspc rule -a Firefox split_ratio=0.32 -bspc rule -a feh state=fullscreen -bspc rule -a 'Emacs:org*' state=floating -bspc rule -a 'Emacs:scratch' state=floating -bspc rule -a 'Emacs:emacs-everywhere' state=floating sticky=on -bspc rule -a '*:scratch' state=floating sticky=on center=on border=off rectangle=1000x800+0+0 - -# -for file in $XDG_CONFIG_HOME/bspwm/rc.d/*; do - source "$file" -done diff --git a/config/docker/aliases.zsh b/config/docker/aliases.zsh deleted file mode 100644 index 2c026a79..00000000 --- a/config/docker/aliases.zsh +++ /dev/null @@ -1,14 +0,0 @@ -alias dk=docker -alias dkc=docker-compose -alias dkm=docker-machine -alias dkl='dk logs' -alias dkcl='dkc logs' - -dkclr() { - dk stop $(docker ps -a -q) - dk rm $(docker ps -a -q) -} - -dke() { - dk exec -it "$1" "${@:1}" -} diff --git a/config/emacs/aliases.zsh b/config/emacs/aliases.zsh deleted file mode 100644 index 13931848..00000000 --- a/config/emacs/aliases.zsh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env zsh - -e() { pgrep emacs && emacsclient -n "$@" || emacs -nw "$@" } -ediff() { emacs -nw --eval "(ediff-files \"$1\" \"$2\")"; } -eman() { emacs -nw --eval "(switch-to-buffer (man \"$1\"))"; } -ekill() { emacsclient --eval '(kill-emacs)'; } diff --git a/config/gimp/menurc b/config/gimp/menurc deleted file mode 100644 index 2dbd2812..00000000 --- a/config/gimp/menurc +++ /dev/null @@ -1,1344 +0,0 @@ -; gimp-2.10 GtkAccelMap rc-file -*- scheme -*- -; this file is an automated accelerator map dump -; -; (gtk_accel_path "/file/file-menu" "") -; (gtk_accel_path "/tools/tools-opacity-set-to-default" "") -; (gtk_accel_path "/context/context-background-value-decrease" "") -; (gtk_accel_path "/vectors/vectors-color-tag-brown" "") -; (gtk_accel_path "/tools/tools-opacity-increase-skip" "greater") -(gtk_accel_path "/tools/tools-vector" "p") -; (gtk_accel_path "/view/view-scroll-left" "") -; (gtk_accel_path "/vectors/vectors-color-tag-orange" "") -; (gtk_accel_path "/tools/tools-airbrush-rate-increase" "") -; (gtk_accel_path "/tools/tools-spacing-set-to-default" "") -; (gtk_accel_path "/view/view-show-statusbar" "") -; (gtk_accel_path "/layers/layers-opacity-transparent" "") -; (gtk_accel_path "/image/image-convert-u8" "") -; (gtk_accel_path "/view/view-zoom-8-1-accel" "KP_4") -; (gtk_accel_path "/context/context-background-value-set" "") -; (gtk_accel_path "/context/context-paint-mode-menu" "") -; (gtk_accel_path "/filters/filters-motion-blur-linear" "") -; (gtk_accel_path "/filters/filters-gegl-graph" "") -; (gtk_accel_path "/context/context-brush-select-set" "") -; (gtk_accel_path "/edit/edit-copy" "c") -; (gtk_accel_path "/context/context-brush-shape-circle" "") -; (gtk_accel_path "/windows/windows-display-0001" "") -(gtk_accel_path "/plug-in/plug_in_bump_map" "m") -; (gtk_accel_path "/vectors/vectors-lock-content" "") -; (gtk_accel_path "/context/context-opacity-opaque" "") -; (gtk_accel_path "/view/view-color-management-menu" "") -; (gtk_accel_path "/filters/filters-spherize" "") -; (gtk_accel_path "/channels/channels-new-last-values" "") -; (gtk_accel_path "/vectors/vectors-merge-visible" "") -; (gtk_accel_path "/plug-in/plug-in-spheredesigner" "") -; (gtk_accel_path "/plug-in/script-fu-slide" "") -; (gtk_accel_path "/filters/filters-curves" "") -; (gtk_accel_path "/channels/channels-lock-position" "") -; (gtk_accel_path "/context/context-brush-menu" "") -; (gtk_accel_path "/context/context-foreground-blue-decrease" "") -; (gtk_accel_path "/context/context-colors-menu" "") -; (gtk_accel_path "/edit/edit-undo-clear" "") -; (gtk_accel_path "/context/context-gradient-select-first" "") -; (gtk_accel_path "/layers/layers-color-tag-brown" "") -; (gtk_accel_path "/plug-in/plug-in-imagemap" "") -; (gtk_accel_path "/filters/filters-recent-menu" "") -; (gtk_accel_path "/plug-in/plug-in-map-object" "") -; (gtk_accel_path "/layers/layers-text-along-vectors" "") -; (gtk_accel_path "/dialogs/dialogs-symmetry" "") -; (gtk_accel_path "/view/view-zoom-revert" "grave") -; (gtk_accel_path "/plug-in/plug-in-script-fu-console" "") -; (gtk_accel_path "/filters/filters-plasma" "") -; (gtk_accel_path "/view/view-color-management-enable" "") -(gtk_accel_path "/dialogs/dialogs-undo-history" "F9") -; (gtk_accel_path "/edit/edit-cut" "x") -; (gtk_accel_path "/context/context-foreground-value-increase-skip" "") -; (gtk_accel_path "/plug-in/script-fu-addborder" "") -; (gtk_accel_path "/view/view-display-intent-absolute-colorimetric" "") -; (gtk_accel_path "/file/file-export-to" "") -; (gtk_accel_path "/vectors/vectors-color-tag-menu" "") -; (gtk_accel_path "/context/context-background-red-decrease" "") -; (gtk_accel_path "/tools/tools-airbrush-rate-maximum" "") -; (gtk_accel_path "/tools/tools-operation" "") -; (gtk_accel_path "/view/view-fullscreen" "F11") -; (gtk_accel_path "/tools/tools-spacing-minimum" "") -; (gtk_accel_path "/context/context-brush-radius-decrease-skip" "") -; (gtk_accel_path "/view/view-zoom-2-1" "2") -(gtk_accel_path "/dialogs/dialogs-brushes" "") -; (gtk_accel_path "/context/context-foreground-blue-maximum" "") -; (gtk_accel_path "/context/context-foreground-red-increase" "") -; (gtk_accel_path "/view/view-snap-to-vectors" "") -(gtk_accel_path "/image/image-properties" "F8") -; (gtk_accel_path "/drawable/drawable-rotate-270" "") -; (gtk_accel_path "/plug-in/script-fu-predator" "") -; (gtk_accel_path "/tools/tools-hardness-increase-percent" "") -; (gtk_accel_path "/plug-in/plug-in-colorify" "") -(gtk_accel_path "/view/view-show-grid" "apostrophe") -; (gtk_accel_path "/image/image-color-management-enabled" "") -; (gtk_accel_path "/tools/tools-angle-increase" "") -; (gtk_accel_path "/vectors/vectors-color-tag-violet" "") -; (gtk_accel_path "/context/context-background-saturation-decrease-skip" "") -; (gtk_accel_path "/layers/layers-composite-mode-union" "") -; (gtk_accel_path "/channels/channels-color-tag-blue" "") -; (gtk_accel_path "/windows/windows-dialogs-menu" "") -; (gtk_accel_path "/tools/tools-gegl" "") -; (gtk_accel_path "/tool-options/tool-options-reset" "") -; (gtk_accel_path "/layers/layers-delete" "") -; (gtk_accel_path "/view/view-display-intent-menu" "") -; (gtk_accel_path "/vectors/vectors-edit" "") -; (gtk_accel_path "/filters/filters-illusion" "") -; (gtk_accel_path "/context/context-colormap-foreground-previous" "") -; (gtk_accel_path "/layers/layers-lock-content" "") -; (gtk_accel_path "/file/file-create-menu" "") -(gtk_accel_path "/plug-in/plug_in_iwarp" "x") -; (gtk_accel_path "/tools/tools-spacing-decrease-skip" "") -; (gtk_accel_path "/filters/filters-dropshadow" "") -; (gtk_accel_path "/layers/layers-alpha-selection-add" "") -; (gtk_accel_path "/context/context-background-green-increase" "") -; (gtk_accel_path "/plug-in/script-fu-make-brush-rectangular-feathered" "") -; (gtk_accel_path "/patterns/patterns-delete" "") -; (gtk_accel_path "/context/context-brush-radius-menu" "") -(gtk_accel_path "/view/view-scroll-page-right" "Page_Down") -; (gtk_accel_path "/layers/layers-blend-space-menu" "") -; (gtk_accel_path "/dockable/dialogs-histogram" "") -; (gtk_accel_path "/layers/layers-opacity-opaque" "") -; (gtk_accel_path "/context/context-background-saturation-increase" "") -; (gtk_accel_path "/dialogs/dialogs-dynamics-editor" "") -; (gtk_accel_path "/layers/layers-composite-space-menu" "") -(gtk_accel_path "/file/file-revert" "F12") -; (gtk_accel_path "/filters/filters-fattal-2002" "") -; (gtk_accel_path "/tools/tools-color-average-radius-set" "") -; (gtk_accel_path "/filters/filters-distorts-menu" "") -(gtk_accel_path "/tools/tools-fuzzy-select" "w") -; (gtk_accel_path "/documents/documents-reload-previews" "") -; (gtk_accel_path "/debug/debug-show-image-graph" "") -; (gtk_accel_path "/brushes/brushes-show-in-file-manager" "") -; (gtk_accel_path "/context/context-brush-angle-maximum" "") -; (gtk_accel_path "/view/view-zoom-selection" "") -(gtk_accel_path "/tools/tools-cage" "") -; (gtk_accel_path "/file/file-open-location" "") -; (gtk_accel_path "/plug-in/plug-in-blur" "") -; (gtk_accel_path "/layers/layers-opacity-decrease" "") -; (gtk_accel_path "/context/context-foreground-hue-decrease-skip" "") -; (gtk_accel_path "/plug-in/plug-in-oilify" "") -(gtk_accel_path "/layers/layers-mask-add" "o") -; (gtk_accel_path "/filters/filters-diffraction-patterns" "") -; (gtk_accel_path "/image/image-convert-rgb" "") -; (gtk_accel_path "/tools/tools-spacing-decrease-percent" "") -; (gtk_accel_path "/context/context-gradient-select-last" "") -; (gtk_accel_path "/plug-in/plug-in-emboss" "") -; (gtk_accel_path "/file/file-create-template" "") -; (gtk_accel_path "/vectors/vectors-color-tag-yellow" "") -; (gtk_accel_path "/layers/layers-preserve-transparency" "") -; (gtk_accel_path "/dockable/dockable-view-type-grid" "") -; (gtk_accel_path "/view/view-navigation-window" "") -; (gtk_accel_path "/windows/windows-tabs-position-bottom" "") -; (gtk_accel_path "/context/context-brush-angle-set" "") -; (gtk_accel_path "/documents/documents-raise-or-open" "") -; (gtk_accel_path "/context/context-background-blue-decrease" "") -; (gtk_accel_path "/context/context-foreground-green-set" "") -(gtk_accel_path "/tools/tools-levels" "l") -; (gtk_accel_path "/plug-in/plug-in-script-fu-server" "") -; (gtk_accel_path "/dock/dock-move-to-screen-menu" "") -; (gtk_accel_path "/windows/windows-tabs-position-right" "") -; (gtk_accel_path "/plug-in/script-fu-line-nova" "") -; (gtk_accel_path "/layers/layers-color-tag-blue" "") -; (gtk_accel_path "/tools/tools-object-1-set" "") -; (gtk_accel_path "/dialogs/dialogs-indexed-palette" "") -; (gtk_accel_path "/channels/channels-new" "") -; (gtk_accel_path "/edit/edit-named-paste" "") -; (gtk_accel_path "/tools/tools-hardness-minimum" "") -; (gtk_accel_path "/plug-in/color-decode-ycocg" "") -; (gtk_accel_path "/filters/filters-menu" "") -; (gtk_accel_path "/tools/tools-opacity-set" "") -; (gtk_accel_path "/dockable/dialogs-toolbox" "b") -; (gtk_accel_path "/plug-in/gimp-help-using-fileformats" "") -; (gtk_accel_path "/edit/edit-strong-redo" "y") -; (gtk_accel_path "/filters/filters-alien-map" "") -; (gtk_accel_path "/plug-in/gimp-online-bugs-features" "") -; (gtk_accel_path "/tools/tools-object-2-last" "") -; (gtk_accel_path "/tools/tools-paintbrush-force-set" "") -; (gtk_accel_path "/vectors/vectors-linked" "") -; (gtk_accel_path "/filters/filters-gaussian-blur-selective" "") -; (gtk_accel_path "/filters/filters-unsharp-mask" "") -; (gtk_accel_path "/fonts/fonts-refresh" "") -; (gtk_accel_path "/file/file-open-recent-menu" "") -; (gtk_accel_path "/tools/tools-hardness-decrease" "") -; (gtk_accel_path "/layers/layers-mask-show" "") -; (gtk_accel_path "/view/view-softproof-intent-absolute-colorimetric" "") -; (gtk_accel_path "/brushes/brushes-open-as-image" "") -; (gtk_accel_path "/plug-in/python-fu-palette-offset" "") -; (gtk_accel_path "/tools/tools-angle-decrease" "") -; (gtk_accel_path "/context/context-background-blue-set" "") -; (gtk_accel_path "/plug-in/plug-in-normalize" "") -; (gtk_accel_path "/tools/tools-opacity-increase-percent" "") -; (gtk_accel_path "/context/context-background-value-decrease-skip" "") -; (gtk_accel_path "/patterns/patterns-new" "") -; (gtk_accel_path "/plug-in/script-fu-spinning-globe" "") -; (gtk_accel_path "/windows/windows-menu" "") -; (gtk_accel_path "/tools/tools-object-1-first" "") -; (gtk_accel_path "/image/image-flip-horizontal" "") -; (gtk_accel_path "/plug-in/plug-in-sharpen" "") -; (gtk_accel_path "/tools/tools-force-decrease-percent" "") -; (gtk_accel_path "/context/context-brush-hardness-set" "") -; (gtk_accel_path "/select/select-stroke-last-values" "") -; (gtk_accel_path "/filters/filters-long-shadow" "") -; (gtk_accel_path "/context/context-brush-radius-increase-percent" "") -; (gtk_accel_path "/plug-in/plug-in-animationoptimize-diff" "") -; (gtk_accel_path "/tools/tools-perspective-clone" "") -; (gtk_accel_path "/image/colors-auto-menu" "") -; (gtk_accel_path "/vectors/vectors-selection-to-vectors-advanced" "") -; (gtk_accel_path "/plug-in/script-fu-unsharp-mask" "") -; (gtk_accel_path "/context/context-background-saturation-decrease" "") -(gtk_accel_path "/tools/tools-rect-select" "m") -; (gtk_accel_path "/tools/tools-angle-set-to-default" "") -; (gtk_accel_path "/view/view-zoom-in-skip" "") -; (gtk_accel_path "/filters/filters-semi-flatten" "") -; (gtk_accel_path "/tools/tools-opacity-maximum" "") -; (gtk_accel_path "/dockable/dockable-tab-style-preview-name" "") -; (gtk_accel_path "/plug-in/python-fu-palette-sort" "") -; (gtk_accel_path "/tools/tools-airbrush-flow-decrease" "") -; (gtk_accel_path "/plug-in/plug-in-dog" "") -; (gtk_accel_path "/edit/edit-paste-as-new-layer" "") -; (gtk_accel_path "/channels/channels-visible" "") -; (gtk_accel_path "/debug/debug-mem-profile" "") -; (gtk_accel_path "/context/context-foreground-hue-maximum" "") -; (gtk_accel_path "/tool-options/tool-options-restore-preset-menu" "") -; (gtk_accel_path "/dockable/dialogs-undo-history" "") -; (gtk_accel_path "/tools/tools-paintbrush-hardness-set" "") -; (gtk_accel_path "/filters/filters-stretch-contrast" "") -; (gtk_accel_path "/filters/filters-color-to-alpha" "") -; (gtk_accel_path "/context/context-brush-aspect-maximum" "") -; (gtk_accel_path "/dockable/dialogs-templates" "") -; (gtk_accel_path "/plug-in/script-fu-ripply-anim" "") -(gtk_accel_path "/view/view-show-menubar" "f") -; (gtk_accel_path "/filters/filters-web-menu" "") -; (gtk_accel_path "/dockable/dialogs-cursor" "") -; (gtk_accel_path "/filters/filters-exposure" "") -; (gtk_accel_path "/tools/tools-spacing-increase" "") -; (gtk_accel_path "/tools/tools-foreground-select-brush-size-set" "") -; (gtk_accel_path "/context/context-background-hue-decrease-skip" "") -; (gtk_accel_path "/select/select-shrink" "") -; (gtk_accel_path "/view/view-scroll-horizontal" "") -; (gtk_accel_path "/select/select-fill-last-values" "") -; (gtk_accel_path "/image/image-resize-to-selection" "") -; (gtk_accel_path "/plug-in/script-fu-tile-blur" "") -; (gtk_accel_path "/filters/filters-color-temperature" "") -; (gtk_accel_path "/plug-in/script-fu-paste-as-pattern" "") -; (gtk_accel_path "/tools/tools-paintbrush-aspect-ratio-set" "") -; (gtk_accel_path "/plug-in/plug-in-gfig" "") -; (gtk_accel_path "/context/context-foreground-hue-set" "") -; (gtk_accel_path "/tools/tools-gradient" "g") -(gtk_accel_path "/select/select-none" "d") -; (gtk_accel_path "/edit/edit-named-cut" "") -; (gtk_accel_path "/context/context-palette-select-set" "") -; (gtk_accel_path "/channels/channels-select-next" "") -; (gtk_accel_path "/image/image-precision-menu" "") -; (gtk_accel_path "/layers/layers-mask-menu" "") -(gtk_accel_path "/layers/layers-alpha-selection-replace" "a") -; (gtk_accel_path "/plug-in/gimp-palette-export-php" "") -; (gtk_accel_path "/filters/filters-noise-hsv" "") -; (gtk_accel_path "/filters/filters-noise-simplex" "") -; (gtk_accel_path "/help/help-help" "F1") -; (gtk_accel_path "/context/context-opacity-increase-skip" "") -; (gtk_accel_path "/view/view-padding-color-light-check" "") -; (gtk_accel_path "/context/context-brush-spikes-minimum" "") -; (gtk_accel_path "/plug-in/plug-in-gflare" "") -; (gtk_accel_path "/context/context-brush-aspect-set" "") -; (gtk_accel_path "/plug-in/plug-in-zealouscrop" "") -; (gtk_accel_path "/dockable/dialogs-gradient-editor" "") -; (gtk_accel_path "/tools/tools-color-menu" "") -; (gtk_accel_path "/tools/tools-airbrush-flow-maximum" "") -; (gtk_accel_path "/view/view-flip-horizontally" "") -; (gtk_accel_path "/layers/layers-composite-mode-auto" "") -; (gtk_accel_path "/plug-in/gimp-online-developer-web-site" "") -; (gtk_accel_path "/dockable/dockable-tab-style-name" "") -(gtk_accel_path "/plug-in/plug_in_gauss" "b") -; (gtk_accel_path "/vectors/vectors-raise-to-top" "") -(gtk_accel_path "/view/view-scroll-page-left" "Page_Up") -; (gtk_accel_path "/tools/tools-threshold" "") -; (gtk_accel_path "/filters/filters-threshold" "") -; (gtk_accel_path "/tools/tools-airbrush-flow-set" "") -; (gtk_accel_path "/context/context-brush-spacing-minimum" "") -(gtk_accel_path "/drawable/drawable-invert" "i") -(gtk_accel_path "/layers/layers-select-bottom" "braceleft") -; (gtk_accel_path "/dockable/dockable-tab-style-preview" "") -; (gtk_accel_path "/dockable/dialogs-channels" "") -; (gtk_accel_path "/channels/channels-color-tag-none" "") -(gtk_accel_path "/tools/tools-paintbrush" "b") -; (gtk_accel_path "/vectors/vectors-color-tag-gray" "") -; (gtk_accel_path "/context/context-brush-spacing-increase-skip" "") -; (gtk_accel_path "/vectors/vectors-stroke-last-values" "") -; (gtk_accel_path "/view/view-show-sample-points" "") -; (gtk_accel_path "/documents/documents-remove" "") -; (gtk_accel_path "/dockable/dockable-preview-size-medium" "") -; (gtk_accel_path "/dockable/dialogs-colors" "") -; (gtk_accel_path "/filters/filters-antialias" "") -; (gtk_accel_path "/debug/debug-benchmark-projection" "") -; (gtk_accel_path "/context/context-brush-spikes-decrease" "") -; (gtk_accel_path "/filters/filters-noise-hurl" "") -; (gtk_accel_path "/file/file-save-and-close" "") -(gtk_accel_path "/dialogs/dialogs-document-history" "h") -; (gtk_accel_path "/context/context-opacity-set" "") -; (gtk_accel_path "/plug-in/script-fu-blend-anim" "") -(gtk_accel_path "/view/view-zoom-in" "equal") -; (gtk_accel_path "/plug-in/plug-in-smooth-palette" "") -; (gtk_accel_path "/context/context-swatch-background-set" "") -; (gtk_accel_path "/windows/windows-tab-position" "") -; (gtk_accel_path "/dialogs/dialogs-error-console" "") -; (gtk_accel_path "/view/view-rotate-15" "") -; (gtk_accel_path "/view/view-zoom" "") -; (gtk_accel_path "/view/view-scroll-top-border" "") -; (gtk_accel_path "/layers/layers-new" "n") -; (gtk_accel_path "/plug-in/gimp-palette-export-java" "") -; (gtk_accel_path "/plug-in/script-fu-burn-in-anim" "") -; (gtk_accel_path "/context/context-foreground-blue-increase-skip" "") -; (gtk_accel_path "/tools/tools-paint-menu" "") -; (gtk_accel_path "/plug-in/plug-in-colormap-swap" "") -; (gtk_accel_path "/dockable/dialogs-mypaint-brushes" "") -; (gtk_accel_path "/dockable/dockable-preview-size-menu" "") -; (gtk_accel_path "/image/colors-menu" "") -; (gtk_accel_path "/vectors/vectors-visible" "") -; (gtk_accel_path "/vectors/vectors-lock-position" "") -(gtk_accel_path "/image/image-flatten" "i") -; (gtk_accel_path "/tools/tools-spacing-decrease" "") -; (gtk_accel_path "/filters/filters-dither" "") -; (gtk_accel_path "/plug-in/plug-in-decompose-registered" "") -; (gtk_accel_path "/channels/channels-selection-intersect" "") -; (gtk_accel_path "/plug-in/plug-in-cartoon" "") -; (gtk_accel_path "/view/view-softproof-intent-perceptual" "") -; (gtk_accel_path "/tools/tools-offset" "") -(gtk_accel_path "/edit/edit-clear" "") -; (gtk_accel_path "/image/image-convert-float" "") -; (gtk_accel_path "/view/view-scroll-down" "") -; (gtk_accel_path "/context/context-foreground-green-increase" "") -; (gtk_accel_path "/color-button/color-button-use-white" "") -; (gtk_accel_path "/image/image-scale" "") -; (gtk_accel_path "/tools/tools-aspect-increase-skip" "") -; (gtk_accel_path "/context/context-colormap-background-previous" "") -; (gtk_accel_path "/image/colors-info-menu" "") -; (gtk_accel_path "/plug-in/plug-in-lic" "") -; (gtk_accel_path "/context/context-background-value-increase" "") -(gtk_accel_path "/dialogs/dialogs-channels" "F7") -; (gtk_accel_path "/filters/filters-component-extract" "") -; (gtk_accel_path "/tools/tools-size-maximum" "") -; (gtk_accel_path "/dockable/dialogs-dashboard" "") -; (gtk_accel_path "/vectors/vectors-select-previous" "") -; (gtk_accel_path "/layers/layers-mode-menu" "") -; (gtk_accel_path "/filters/filters-render-nature-menu" "") -; (gtk_accel_path "/layers/layers-color-tag-none" "") -; (gtk_accel_path "/dockable/dialogs-gradients" "g") -; (gtk_accel_path "/tools/tools-heal" "h") -; (gtk_accel_path "/view/view-scroll-right" "") -; (gtk_accel_path "/dialogs/dialogs-cursor" "") -; (gtk_accel_path "/context/context-foreground-saturation-minimum" "") -; (gtk_accel_path "/context/context-background-red-maximum" "") -; (gtk_accel_path "/context/context-brush-spikes-menu" "") -; (gtk_accel_path "/filters/filters-recent-10" "") -; (gtk_accel_path "/plug-in/file-gif-save2" "") -; (gtk_accel_path "/drawable/drawable-flip-horizontal" "") -; (gtk_accel_path "/layers/layers-merge-group" "") -; (gtk_accel_path "/color-button/color-button-use-background" "") -; (gtk_accel_path "/file/file-open" "o") -; (gtk_accel_path "/plug-in/script-fu-font-map" "") -; (gtk_accel_path "/plug-in/python-fu-console" "") -; (gtk_accel_path "/tools/tools-transform-preview-opacity-set" "") -; (gtk_accel_path "/dialogs/dialogs-histogram" "") -; (gtk_accel_path "/view/view-rotate-set-absolute" "") -; (gtk_accel_path "/layers/layers-mask-apply" "") -; (gtk_accel_path "/context/context-brush-radius-increase-less" "") -; (gtk_accel_path "/dialogs/dialogs-brush-editor" "") -; (gtk_accel_path "/context/context-background-saturation-maximum" "") -; (gtk_accel_path "/context/context-foreground-blue-increase" "") -; (gtk_accel_path "/context/context-palette-select-next" "") -(gtk_accel_path "/layers/layers-duplicate" "j") -; (gtk_accel_path "/context/context-palette-foreground-next-skip" "") -; (gtk_accel_path "/layers/layers-mask-selection-add" "") -(gtk_accel_path "/tools/tools-dodge-burn" "o") -; (gtk_accel_path "/edit/edit-copy-visible" "c") -; (gtk_accel_path "/brushes/brushes-duplicate" "") -(gtk_accel_path "/layers/layers-select-previous" "bracketright") -; (gtk_accel_path "/tools/tools-angle-maximum" "") -; (gtk_accel_path "/dockable/dockable-lock-tab" "") -; (gtk_accel_path "/context/context-foreground-value-minimum" "") -; (gtk_accel_path "/file/file-close-all" "w") -; (gtk_accel_path "/dialogs/dialogs-sample-points" "") -; (gtk_accel_path "/layers/layers-opacity-menu" "") -; (gtk_accel_path "/plug-in/plug-in-metadata-editor" "") -; (gtk_accel_path "/tools/tools-angle-increase-percent" "") -; (gtk_accel_path "/plug-in/script-fu-drop-shadow" "") -; (gtk_accel_path "/filters/filters-render-menu" "") -; (gtk_accel_path "/plug-in/plug-in-jigsaw" "") -; (gtk_accel_path "/dockable/dockable-tab-style-menu" "") -(gtk_accel_path "/context/context-brush-hardness-decrease-skip" "braceleft") -; (gtk_accel_path "/plug-in/file-pdf-load" "") -; (gtk_accel_path "/plug-in/script-fu-guides-from-selection" "") -; (gtk_accel_path "/plug-in/script-fu-selection-to-brush" "") -; (gtk_accel_path "/layers/layers-blend-space-rgb-linear" "") -; (gtk_accel_path "/context/context-background-blue-maximum" "") -; (gtk_accel_path "/tools/tools-zoom" "z") -; (gtk_accel_path "/context/context-swatch-foreground-previous-skip" "") -; (gtk_accel_path "/plug-in/plug-in-checkerboard" "") -; (gtk_accel_path "/context/context-background-red-increase" "") -; (gtk_accel_path "/dockable/dockable-popup" "") -; (gtk_accel_path "/dockable/dockable-preview-size-extra-small" "") -; (gtk_accel_path "/filters/filters-render-clouds-menu" "") -; (gtk_accel_path "/context/context-palette-foreground-first" "") -; (gtk_accel_path "/view/view-zoom-4-1" "3") -; (gtk_accel_path "/channels/channels-duplicate" "") -; (gtk_accel_path "/tools/tools-object-2-set" "") -; (gtk_accel_path "/context/context-brush-aspect-menu" "") -; (gtk_accel_path "/context/context-brush-radius-increase" "") -; (gtk_accel_path "/view/view-display-black-point-compensation" "") -; (gtk_accel_path "/tools/tools-size-decrease" "bracketleft") -(gtk_accel_path "/dialogs/dialogs-colors" "F6") -; (gtk_accel_path "/context/context-swatch-background-next" "") -; (gtk_accel_path "/filters/filters-edge" "") -(gtk_accel_path "/image/image-rotate-180" "8") -; (gtk_accel_path "/image/image-new" "n") -; (gtk_accel_path "/tool-options/tool-options-delete-preset-menu" "") -; (gtk_accel_path "/tools/tools-ink-blob-size-set" "") -; (gtk_accel_path "/filters/filters-value-propagate" "") -; (gtk_accel_path "/image/image-color-profile-assign" "") -; (gtk_accel_path "/layers/layers-composite-space-rgb-perceptual" "") -; (gtk_accel_path "/context/context-foreground-green-decrease" "") -; (gtk_accel_path "/layers/layers-scale" "") -; (gtk_accel_path "/layers/layers-transparency-menu" "") -; (gtk_accel_path "/layers/layers-alpha-remove" "") -; (gtk_accel_path "/context/context-pattern-select-set" "") -; (gtk_accel_path "/filters/filters-image-gradient" "") -; (gtk_accel_path "/select/select-all" "a") -; (gtk_accel_path "/plug-in/plug-in-filter-pack" "") -; (gtk_accel_path "/context/context-brush-hardness-maximum" "") -; (gtk_accel_path "/plug-in/plug-in-recompose" "") -; (gtk_accel_path "/view/view-zoom-menu" "") -; (gtk_accel_path "/image/image-convert-u16" "") -; (gtk_accel_path "/filters/filters-kaleidoscope" "") -; (gtk_accel_path "/context/context-colormap-foreground-previous-skip" "") -; (gtk_accel_path "/view/view-snap-to-grid" "") -; (gtk_accel_path "/vectors/vectors-fill" "") -; (gtk_accel_path "/view/view-color-management-reset" "") -; (gtk_accel_path "/context/context-background-green-set" "") -; (gtk_accel_path "/tools/tools-force-maximum" "") -; (gtk_accel_path "/context/context-foreground-saturation-increase" "") -; (gtk_accel_path "/dockable/dialogs-device-status" "") -; (gtk_accel_path "/edit/edit-named-copy" "") -; (gtk_accel_path "/filters/filters-video-degradation" "") -; (gtk_accel_path "/edit/edit-paste-as-new-layer-in-place" "") -(gtk_accel_path "/drawable/drawable-desaturate" "u") -; (gtk_accel_path "/layers/layers-resize" "") -; (gtk_accel_path "/layers/layers-blend-space-rgb-perceptual" "") -; (gtk_accel_path "/layers/layers-stack-menu" "") -; (gtk_accel_path "/dockable/dockable-show-button-bar" "") -; (gtk_accel_path "/view/view-zoom-fill" "") -; (gtk_accel_path "/filters/filters-stretch-contrast-hsv" "") -; (gtk_accel_path "/view/view-padding-color-prefs" "") -; (gtk_accel_path "/plug-in/plug-in-depth-merge" "") -; (gtk_accel_path "/tools/tools-opacity-decrease-skip" "less") -; (gtk_accel_path "/plug-in/plug-in-guillotine" "") -; (gtk_accel_path "/windows/windows-tabs-position-left" "") -; (gtk_accel_path "/documents/documents-recreate-preview" "") -; (gtk_accel_path "/layers/layers-opacity-increase" "") -; (gtk_accel_path "/image/colors-tone-mapping-menu" "") -; (gtk_accel_path "/tools/tools-size-set" "") -; (gtk_accel_path "/context/context-brush-angle-increase-skip" "") -; (gtk_accel_path "/dialogs/dialogs-fonts" "") -; (gtk_accel_path "/channels/channels-linked" "") -; (gtk_accel_path "/dockable/dockable-preview-size-gigantic" "") -; (gtk_accel_path "/plug-in/script-fu-difference-clouds" "") -; (gtk_accel_path "/plug-in/plug-in-dbbrowser" "") -; (gtk_accel_path "/plug-in/color-decode-ycocg-scaled" "") -; (gtk_accel_path "/context/context-background-hue-set" "") -; (gtk_accel_path "/plug-in/plug-in-align-layers" "") -; (gtk_accel_path "/context/context-background-blue-increase" "") -; (gtk_accel_path "/dockable/dialogs-palettes" "") -; (gtk_accel_path "/filters/filters-hue-chroma" "") -; (gtk_accel_path "/plug-in/plug-in-blinds" "") -; (gtk_accel_path "/dockable/dockable-preview-size-enormous" "") -; (gtk_accel_path "/channels/channels-lock-content" "") -(gtk_accel_path "/tools/tools-color-picker" "i") -; (gtk_accel_path "/context/context-paint-mode-next" "") -(gtk_accel_path "/tools/tools-clone" "s") -; (gtk_accel_path "/plug-in/script-fu-make-brush-elliptical-feathered" "") -; (gtk_accel_path "/context/context-background-value-minimum" "") -; (gtk_accel_path "/drawable/drawable-linked" "") -; (gtk_accel_path "/select/select-sharpen" "") -; (gtk_accel_path "/filters/filters-noise-cie-lch" "") -; (gtk_accel_path "/context/context-colormap-foreground-next" "") -; (gtk_accel_path "/view/view-zoom-4-1-accel" "KP_3") -; (gtk_accel_path "/edit/edit-undo" "z") -(gtk_accel_path "/plug-in/tiny_fu_refresh" "t") -; (gtk_accel_path "/plug-in/script-fu-paste-as-brush" "") -(gtk_accel_path "/file/file-save-a-copy" "s") -; (gtk_accel_path "/filters/filters-edge-detect-menu" "") -; (gtk_accel_path "/vectors/vectors-selection-replace" "") -; (gtk_accel_path "/filters/filters-invert-perceptual" "") -; (gtk_accel_path "/vectors/vectors-color-tag-blue" "") -; (gtk_accel_path "/channels/channels-edit-attributes" "") -; (gtk_accel_path "/vectors/vectors-delete" "") -; (gtk_accel_path "/file/file-show-in-file-manager" "f") -; (gtk_accel_path "/context/context-swatch-background-previous-skip" "") -; (gtk_accel_path "/windows/windows-tabs-position-top" "") -; (gtk_accel_path "/context/context-brush-radius-decrease" "") -; (gtk_accel_path "/filters/filters-light-shadow-menu" "") -(gtk_accel_path "/layers/layers-mode-previous" "underscore") -; (gtk_accel_path "/vectors/vectors-export" "") -; (gtk_accel_path "/tools/tools-hardness-increase" "") -; (gtk_accel_path "/tools/tools-value-2-decrease" "") -; (gtk_accel_path "/tools/tools-size-increase-percent" "") -; (gtk_accel_path "/view/view-zoom-16-1-accel" "KP_5") -; (gtk_accel_path "/filters/filters-deinterlace" "") -; (gtk_accel_path "/plug-in/plug-in-compose" "") -; (gtk_accel_path "/context/context-colors-swap" "x") -; (gtk_accel_path "/context/context-foreground-value-decrease-skip" "") -; (gtk_accel_path "/drawable/drawable-lock-position" "") -; (gtk_accel_path "/context/context-palette-background-first" "") -; (gtk_accel_path "/select/select-grow" "") -; (gtk_accel_path "/filters/filters-invert-linear" "") -; (gtk_accel_path "/filters/filters-recent-09" "") -; (gtk_accel_path "/help/help-context-help" "F1") -; (gtk_accel_path "/documents/documents-remove-dangling" "") -; (gtk_accel_path "/tools/tools-opacity-decrease-percent" "") -; (gtk_accel_path "/plug-in/plug-in-gimpressionist" "") -; (gtk_accel_path "/dockable/dialogs-images" "") -; (gtk_accel_path "/plug-in/script-fu-selection-rounded-rectangle" "") -; (gtk_accel_path "/filters/filters-recent-08" "") -; (gtk_accel_path "/dockable/dialogs-navigation" "") -(gtk_accel_path "/dialogs/dialogs-tool-options" "F5") -; (gtk_accel_path "/plug-in/script-fu-grid-system" "") -; (gtk_accel_path "/dockable/dialogs-vectors" "") -; (gtk_accel_path "/view/view-zoom-in-accel" "KP_Add") -; (gtk_accel_path "/context/context-colormap-background-previous-skip" "") -; (gtk_accel_path "/context/context-colormap-foreground-first" "") -(gtk_accel_path "/dialogs/dialogs-palettes" "l") -; (gtk_accel_path "/tools/tools-unified-transform" "t") -; (gtk_accel_path "/file/file-quit" "q") -; (gtk_accel_path "/context/context-foreground-saturation-decrease" "") -; (gtk_accel_path "/image/image-menubar" "") -; (gtk_accel_path "/dockable/dockable-tab-style-icon" "") -; (gtk_accel_path "/filters/filters-recent-07" "") -; (gtk_accel_path "/plug-in/script-fu-circuit" "") -; (gtk_accel_path "/plug-in/script-fu-make-brush-rectangular" "") -(gtk_accel_path "/tools/tools-curves" "m") -; (gtk_accel_path "/plug-in/script-fu-erase-rows" "") -; (gtk_accel_path "/filters/filters-noise-pick" "") -(gtk_accel_path "/tools/tools-ellipse-select" "m") -; (gtk_accel_path "/file/file-export-as" "e") -; (gtk_accel_path "/layers/layers-color-tag-red" "") -; (gtk_accel_path "/view/view-scroll-center" "j") -; (gtk_accel_path "/image/image-popup" "") -; (gtk_accel_path "/filters/filters-recent-06" "") -; (gtk_accel_path "/tools/tools-airbrush-flow-increase" "") -; (gtk_accel_path "/dialogs/dialogs-toolbox" "b") -; (gtk_accel_path "/view/view-scroll-bottom-border" "") -; (gtk_accel_path "/plug-in/plug-in-palettemap" "") -; (gtk_accel_path "/plug-in/plug-in-softglow" "") -; (gtk_accel_path "/context/context-pattern-select-previous" "") -; (gtk_accel_path "/edit/edit-menu" "") -; (gtk_accel_path "/filters/filters-recent-05" "") -; (gtk_accel_path "/plug-in/plug-in-wavelet-decompose" "") -; (gtk_accel_path "/image/image-color-profile-convert" "") -; (gtk_accel_path "/context/context-palette-select-last" "") -; (gtk_accel_path "/filters/filters-recent-04" "") -(gtk_accel_path "/view/view-scroll-page-down" "Page_Down") -; (gtk_accel_path "/context/context-foreground-value-increase" "") -; (gtk_accel_path "/image/image-convert-linear" "") -(gtk_accel_path "/tools/tools-hue-saturation" "u") -; (gtk_accel_path "/view/view-zoom-out-accel" "KP_Subtract") -; (gtk_accel_path "/brushes/brushes-edit" "") -; (gtk_accel_path "/image/image-crop-to-selection" "") -; (gtk_accel_path "/context/context-brush-radius-maximum" "") -; (gtk_accel_path "/filters/filters-oilify" "") -; (gtk_accel_path "/layers/layers-opacity-increase-skip" "") -(gtk_accel_path "/plug-in/script_fu_refresh" "r") -; (gtk_accel_path "/windows/windows-docks-menu" "") -; (gtk_accel_path "/filters/filters-emboss" "") -; (gtk_accel_path "/dockable/dockable-menu" "") -; (gtk_accel_path "/filters/filters-recent-03" "") -; (gtk_accel_path "/plug-in/plug-in-qbist" "") -(gtk_accel_path "/layers/layers-lower" "bracketleft") -(gtk_accel_path "/tools/tools-align" "") -; (gtk_accel_path "/context/context-brush-aspect-increase-skip" "") -; (gtk_accel_path "/tools/tools-handle-transform" "l") -; (gtk_accel_path "/layers/layers-new-group" "") -; (gtk_accel_path "/filters/filters-waves" "") -; (gtk_accel_path "/context/context-opacity-menu" "") -; (gtk_accel_path "/filters/filters-recent-02" "") -; (gtk_accel_path "/layers/layers-crop-to-content" "") -; (gtk_accel_path "/filters/filters-whirl-pinch" "") -; (gtk_accel_path "/filters/filters-render-pattern-menu" "") -(gtk_accel_path "/tools/tools-measure" "u") -; (gtk_accel_path "/dockable/dialogs-tool-presets" "") -; (gtk_accel_path "/tools/tools-aspect-maximum" "") -(gtk_accel_path "/tools/tools-flip" "f") -; (gtk_accel_path "/tools/tools-airbrush-rate-minimum" "") -; (gtk_accel_path "/help/help-menu" "") -; (gtk_accel_path "/filters/filters-recent-01" "") -; (gtk_accel_path "/image/image-color-profile-save" "") -; (gtk_accel_path "/filters/filters-median-blur" "") -; (gtk_accel_path "/vectors/vectors-paste" "") -; (gtk_accel_path "/context/context-foreground-blue-minimum" "") -; (gtk_accel_path "/filters/filters-apply-canvas" "") -; (gtk_accel_path "/drawable/drawable-levels-stretch" "") -; (gtk_accel_path "/plug-in/file-png-save2" "") -; (gtk_accel_path "/filters/filters-difference-of-gaussians" "") -; (gtk_accel_path "/tools/tools-angle-increase-skip" "") -; (gtk_accel_path "/context/context-swatch-background-last" "") -(gtk_accel_path "/tools/tools-move" "v") -(gtk_accel_path "/tools/tools-convolve" "r") -; (gtk_accel_path "/tools/tools-airbrush-flow-increase-skip" "") -; (gtk_accel_path "/context/context-foreground-saturation-increase-skip" "") -; (gtk_accel_path "/channels/channels-color-tag-green" "") -; (gtk_accel_path "/tools/tools-aspect-decrease-percent" "") -; (gtk_accel_path "/plug-in/gimp-help-using-photography" "") -; (gtk_accel_path "/dialogs/dialogs-dashboard" "") -; (gtk_accel_path "/layers/layers-crop-to-selection" "") -; (gtk_accel_path "/layers/layers-mask-selection-subtract" "") -; (gtk_accel_path "/plug-in/script-fu-guides-remove" "") -; (gtk_accel_path "/dialogs/dialogs-palette-editor" "") -; (gtk_accel_path "/filters/filters-channel-mixer" "") -; (gtk_accel_path "/images/images-raise-views" "") -; (gtk_accel_path "/plug-in/script-fu-waves-anim" "") -; (gtk_accel_path "/context/context-foreground-green-maximum" "") -; (gtk_accel_path "/view/view-menu" "") -; (gtk_accel_path "/view/view-dot-for-dot" "") -; (gtk_accel_path "/context/context-gradient-select-set" "") -; (gtk_accel_path "/dockable/dockable-close-tab" "") -; (gtk_accel_path "/dockable/dialogs-dynamics-editor" "") -; (gtk_accel_path "/plug-in/python-fu-palette-to-gradient-repeating" "") -; (gtk_accel_path "/vectors/vectors-selection-intersect" "") -; (gtk_accel_path "/vectors/vectors-stroke" "") -; (gtk_accel_path "/filters/filters-little-planet" "") -; (gtk_accel_path "/context/context-pattern-menu" "") -; (gtk_accel_path "/plug-in/python-fu-palette-to-gradient" "") -(gtk_accel_path "/view/view-show-rulers" "r") -; (gtk_accel_path "/context/context-brush-spikes-increase" "") -(gtk_accel_path "/view/view-snap-to-guides" "semicolon") -; (gtk_accel_path "/layers/layers-alpha-selection-subtract" "") -; (gtk_accel_path "/channels/channels-select-top" "") -; (gtk_accel_path "/plug-in/script-fu-sota-chrome-it" "") -; (gtk_accel_path "/view/view-move-to-screen-:0.0" "") -; (gtk_accel_path "/plug-in/gimp-palette-export-python" "") -; (gtk_accel_path "/context/context-swatch-foreground-next" "0") -; (gtk_accel_path "/select/selection-popup" "") -; (gtk_accel_path "/brushes/brushes-refresh" "") -(gtk_accel_path "/edit/edit-paste-into" "v") -; (gtk_accel_path "/tools/tools-opacity-decrease" "less") -; (gtk_accel_path "/context/context-brush-angle-minimum" "") -; (gtk_accel_path "/tools/tools-aspect-increase" "") -; (gtk_accel_path "/context/context-brush-spikes-maximum" "") -; (gtk_accel_path "/filters/filters-generic-menu" "") -; (gtk_accel_path "/tools/tools-aspect-set" "") -; (gtk_accel_path "/fonts/fonts-popup" "") -; (gtk_accel_path "/layers/layers-popup" "") -; (gtk_accel_path "/image/image-resize-to-layers" "") -; (gtk_accel_path "/context/context-foreground-green-increase-skip" "") -; (gtk_accel_path "/tools/tools-magnify" "") -; (gtk_accel_path "/vectors/vectors-selection-to-vectors-short" "") -; (gtk_accel_path "/windows/windows-use-single-window-mode" "") -; (gtk_accel_path "/channels/channels-lower-to-bottom" "") -; (gtk_accel_path "/context/context-colormap-background-first" "") -(gtk_accel_path "/edit/edit-fill-pattern" "") -; (gtk_accel_path "/context/context-paint-mode-first" "") -; (gtk_accel_path "/plug-in/script-fu-reverse-layers" "") -; (gtk_accel_path "/dockable/dockable-preview-size-extra-large" "") -; (gtk_accel_path "/dockable/dialogs-indexed-palette" "") -; (gtk_accel_path "/context/context-brush-spikes-set" "") -; (gtk_accel_path "/vectors/vectors-new-last-values" "") -; (gtk_accel_path "/tools/tools-object-2-previous" "") -; (gtk_accel_path "/plug-in/plug-in-retinex" "") -; (gtk_accel_path "/context/context-swatch-foreground-previous" "9") -; (gtk_accel_path "/context/context-foreground-value-decrease" "") -; (gtk_accel_path "/context/context-brush-select-first" "") -; (gtk_accel_path "/context/context-swatch-foreground-next-skip" "") -; (gtk_accel_path "/tools/tools-force-increase-skip" "") -; (gtk_accel_path "/dockable/dockable-detach-tab" "") -(gtk_accel_path "/image/image-print-size" "p") -; (gtk_accel_path "/filters/filters-fractal-trace" "") -; (gtk_accel_path "/filters/filters-panorama-projection" "") -; (gtk_accel_path "/context/context-paint-mode-last" "") -; (gtk_accel_path "/image/colors-components-menu" "") -; (gtk_accel_path "/plug-in/file_print_gimp" "") -; (gtk_accel_path "/context/context-colormap-foreground-last" "") -(gtk_accel_path "/view/view-zoom-out" "minus") -; (gtk_accel_path "/plug-in/plug-in-colormap-remap" "") -; (gtk_accel_path "/context/context-palette-background-next-skip" "") -; (gtk_accel_path "/tools/tools-force-decrease" "") -; (gtk_accel_path "/context/context-background-hue-maximum" "") -; (gtk_accel_path "/plug-in/plug-in-mail-image" "") -; (gtk_accel_path "/filters/filters-mantiuk-2006" "") -; (gtk_accel_path "/plug-in/plug-in-small-tiles" "") -; (gtk_accel_path "/layers/layers-composite-mode-clip-to-layer" "") -; (gtk_accel_path "/filters/filters-noise-menu" "") -; (gtk_accel_path "/layers/layers-mask-disable" "") -; (gtk_accel_path "/tools/tools-brightness-contrast" "") -; (gtk_accel_path "/context/context-brush-spikes-increase-skip" "") -; (gtk_accel_path "/context/context-palette-select-previous" "") -; (gtk_accel_path "/filters/filters-erode" "") -; (gtk_accel_path "/plug-in/script-fu-clothify" "") -; (gtk_accel_path "/context/context-pattern-select-first" "") -; (gtk_accel_path "/layers/layers-transform-menu" "") -; (gtk_accel_path "/tools/tools-spacing-increase-percent" "") -; (gtk_accel_path "/select/select-border" "") -; (gtk_accel_path "/vectors/vectors-color-tag-none" "") -; (gtk_accel_path "/edit/edit-paste-into-in-place" "") -; (gtk_accel_path "/layers/layers-new-last-values" "") -; (gtk_accel_path "/context/context-opacity-transparent" "") -; (gtk_accel_path "/plug-in/plug-in-animationoptimize" "") -; (gtk_accel_path "/context/context-colormap-background-next" "") -; (gtk_accel_path "/layers/layers-blend-space-auto" "") -; (gtk_accel_path "/plug-in/file-pdf-save-multi" "") -; (gtk_accel_path "/layers/layers-merge-layers" "") -; (gtk_accel_path "/layers/layers-composite-space-auto" "") -; (gtk_accel_path "/context/context-opacity-decrease-skip" "") -; (gtk_accel_path "/dockable/dialogs-buffers" "") -; (gtk_accel_path "/tools/tools-perspective" "p") -; (gtk_accel_path "/context/context-foreground-red-increase-skip" "") -; (gtk_accel_path "/context/context-colormap-foreground-set" "") -; (gtk_accel_path "/plug-in/script-fu-copy-visible" "") -; (gtk_accel_path "/filters/filters-high-pass" "") -; (gtk_accel_path "/layers/layers-composite-mode-clip-to-backdrop" "") -; (gtk_accel_path "/tools/tools-menu" "") -; (gtk_accel_path "/context/context-background-green-maximum" "") -; (gtk_accel_path "/filters/filters-brightness-contrast" "") -; (gtk_accel_path "/filters/filters-shadows-highlights" "") -; (gtk_accel_path "/filters/filters-threshold-alpha" "") -; (gtk_accel_path "/channels/channels-color-tag-brown" "") -; (gtk_accel_path "/patterns/patterns-popup" "") -; (gtk_accel_path "/filters/filters-desaturate" "") -; (gtk_accel_path "/context/context-palette-foreground-previous" "") -; (gtk_accel_path "/plug-in/plug-in-nlfilt" "") -; (gtk_accel_path "/plug-in/gimp-palette-export-text" "") -; (gtk_accel_path "/context/context-palette-foreground-set" "") -; (gtk_accel_path "/tools/tools-paintbrush-spacing-set" "") -; (gtk_accel_path "/filters/filters-offset" "o") -; (gtk_accel_path "/filters/filters-softglow" "") -; (gtk_accel_path "/vectors/vectors-select-top" "") -; (gtk_accel_path "/context/context-brush-shape-square" "") -; (gtk_accel_path "/qmask/qmask-toggle" "") -; (gtk_accel_path "/tools/tools-opacity-minimum" "") -; (gtk_accel_path "/channels/channels-raise-to-top" "") -; (gtk_accel_path "/filters/filters-reinhard-2005" "") -; (gtk_accel_path "/plug-in/plug-in-fractal-trace" "") -; (gtk_accel_path "/view/view-zoom-2-1-accel" "KP_2") -; (gtk_accel_path "/context/context-foreground-hue-minimum" "") -; (gtk_accel_path "/tools/tools-aspect-decrease" "") -; (gtk_accel_path "/tools/tools-angle-decrease-percent" "") -; (gtk_accel_path "/tools/tools-mypaint-brush-radius-set" "") -; (gtk_accel_path "/context/context-brush-spacing-decrease-skip" "") -; (gtk_accel_path "/vectors/vectors-lower" "") -; (gtk_accel_path "/context/context-brush-aspect-minimum" "") -; (gtk_accel_path "/context/context-tool-select-first" "") -; (gtk_accel_path "/layers/layers-mask-delete" "") -; (gtk_accel_path "/context/context-background-green-increase-skip" "") -; (gtk_accel_path "/plug-in/plug-in-ccanalyze" "") -; (gtk_accel_path "/filters/filters-artistic-menu" "") -; (gtk_accel_path "/select/select-flood" "") -; (gtk_accel_path "/tools/tools-hardness-set-to-default" "") -(gtk_accel_path "/tools/tools-bucket-fill" "g") -; (gtk_accel_path "/tools/tools-angle-set" "") -; (gtk_accel_path "/tools/tools-ink-blob-aspect-set" "") -; (gtk_accel_path "/tools/tools-size-increase" "bracketright") -; (gtk_accel_path "/tools/tools-force-increase-percent" "") -; (gtk_accel_path "/image/image-color-management-menu" "") -; (gtk_accel_path "/channels/channels-selection-replace" "") -; (gtk_accel_path "/dockable/dialogs-layers" "l") -(gtk_accel_path "/view/view-zoom-fit-in" "0") -; (gtk_accel_path "/brushes/brushes-delete" "") -; (gtk_accel_path "/filters/filters-repeat" "f") -; (gtk_accel_path "/filters/filters-maze" "") -; (gtk_accel_path "/context/context-brush-shape-menu" "") -; (gtk_accel_path "/dockable/dialogs-palette-editor" "") -; (gtk_accel_path "/context/context-colors-default" "d") -; (gtk_accel_path "/drawable/drawable-flip-vertical" "") -; (gtk_accel_path "/filters/filters-color-balance" "") -; (gtk_accel_path "/tools/tools-size-set-to-default" "backslash") -(gtk_accel_path "/layers/layers-raise-to-top" "braceright") -; (gtk_accel_path "/context/context-foreground-blue-decrease-skip" "") -; (gtk_accel_path "/plug-in/plug-in-gradmap" "") -; (gtk_accel_path "/filters/filters-checkerboard" "") -; (gtk_accel_path "/image/image-convert-grayscale" "") -; (gtk_accel_path "/plug-in/script-fu-fuzzy-border" "") -; (gtk_accel_path "/filters/filters-tile-paper" "") -; (gtk_accel_path "/dialogs/dialogs-selection-editor" "") -; (gtk_accel_path "/layers/layers-edit" "") -; (gtk_accel_path "/image/colors-desaturate-menu" "") -; (gtk_accel_path "/layers/layers-flatten-image" "") -; (gtk_accel_path "/tools/tools-airbrush-rate-increase-skip" "") -; (gtk_accel_path "/channels/channels-select-bottom" "") -(gtk_accel_path "/dialogs/dialogs-preferences" "k") -; (gtk_accel_path "/plug-in/plug-in-animationplay" "") -; (gtk_accel_path "/context/context-brush-angle-menu" "") -; (gtk_accel_path "/tools/tools-airbrush-flow-minimum" "") -; (gtk_accel_path "/view/view-rotate-menu" "") -; (gtk_accel_path "/vectors/vectors-import" "") -; (gtk_accel_path "/plug-in/script-fu-xach-effect" "") -; (gtk_accel_path "/view/view-rotate-345" "") -; (gtk_accel_path "/plug-in/plug-in-decompose" "") -; (gtk_accel_path "/plug-in/gimp-palette-export-css" "") -; (gtk_accel_path "/filters/filters-color-exchange" "") -; (gtk_accel_path "/tools/tools-warp-effect-size-set" "") -; (gtk_accel_path "/view/view-display-intent-perceptual" "") -; (gtk_accel_path "/dialogs/dialogs-navigation" "") -; (gtk_accel_path "/dock/dock-open-display" "") -; (gtk_accel_path "/context/context-paint-mode-previous" "") -; (gtk_accel_path "/plug-in/plug-in-hot" "") -; (gtk_accel_path "/tools/tools-aspect-decrease-skip" "") -; (gtk_accel_path "/view/view-zoom-out-skip" "") -; (gtk_accel_path "/dialogs/dialogs-keyboard-shortcuts" "") -; (gtk_accel_path "/view/view-zoom-maximum" "") -; (gtk_accel_path "/dockable/dockable-preview-size-tiny" "") -; (gtk_accel_path "/dialogs/dialogs-input-devices" "") -; (gtk_accel_path "/dockable/dialogs-document-history" "") -; (gtk_accel_path "/quick-mask/quick-mask-invert-on" "") -; (gtk_accel_path "/context/context-swatch-foreground-first" "") -(gtk_accel_path "/file/file-export" "") -; (gtk_accel_path "/plug-in/script-fu-set-cmap" "") -; (gtk_accel_path "/layers/layers-text-discard" "") -; (gtk_accel_path "/context/context-foreground-red-maximum" "") -; (gtk_accel_path "/filters/filters-render-noise-menu" "") -; (gtk_accel_path "/context/context-font-select-next" "") -; (gtk_accel_path "/plug-in/script-fu-guide-new-percent" "") -; (gtk_accel_path "/view/view-show-scrollbars" "") -; (gtk_accel_path "/channels/channels-delete" "") -; (gtk_accel_path "/view/view-zoom-fit-to" "") -; (gtk_accel_path "/image/image-flip-vertical" "") -; (gtk_accel_path "/layers/layers-opacity-set" "") -; (gtk_accel_path "/context/context-menu" "") -; (gtk_accel_path "/vectors/vectors-popup" "") -; (gtk_accel_path "/image/image-convert-half" "") -; (gtk_accel_path "/view/view-flip-vertically" "") -; (gtk_accel_path "/file/file-overwrite" "") -; (gtk_accel_path "/context/context-background-red-increase-skip" "") -; (gtk_accel_path "/tools/tools-size-increase-skip" "bracketright") -; (gtk_accel_path "/image/image-rotate-90" "") -; (gtk_accel_path "/filters/filters-edge-sobel" "") -(gtk_accel_path "/edit/edit-fill-bg" "BackSpace") -; (gtk_accel_path "/context/context-palette-menu" "") -; (gtk_accel_path "/layers/layers-properties-menu" "") -(gtk_accel_path "/layers/layers-mode-next" "plus") -; (gtk_accel_path "/context/context-foreground-hue-increase" "") -(gtk_accel_path "/select/select-invert" "i") -(gtk_accel_path "/tools/tools-iscissors" "") -; (gtk_accel_path "/file/file-save-as" "s") -; (gtk_accel_path "/context/context-swatch-foreground-last" "") -; (gtk_accel_path "/context/context-palette-background-next" "") -(gtk_accel_path "/image/image-rotate-270" "7") -; (gtk_accel_path "/context/context-brush-hardness-menu" "") -(gtk_accel_path "/tools/tools-warp" "") -; (gtk_accel_path "/context/context-brush-radius-decrease-less" "") -; (gtk_accel_path "/quick-mask/quick-mask-popup" "") -; (gtk_accel_path "/plug-in/plug-in-sparkle" "") -; (gtk_accel_path "/vectors/vectors-selection-subtract" "") -; (gtk_accel_path "/filters/filters-combine-menu" "") -(gtk_accel_path "/layers/layers-raise" "bracketright") -; (gtk_accel_path "/edit/edit-strong-undo" "z") -; (gtk_accel_path "/context/context-colormap-foreground-next-skip" "") -; (gtk_accel_path "/context/context-brush-aspect-increase" "") -; (gtk_accel_path "/filters/filters-invert-value" "") -; (gtk_accel_path "/tools/tools-value-2-increase" "") -; (gtk_accel_path "/context/context-foreground-blue-set" "") -; (gtk_accel_path "/filters/filters-bump-map" "") -; (gtk_accel_path "/plug-in/file-gih-save-internal" "") -; (gtk_accel_path "/plug-in/script-fu-old-photo" "") -; (gtk_accel_path "/context/context-background-blue-increase-skip" "") -(gtk_accel_path "/tools/tools-desaturate" "u") -; (gtk_accel_path "/patterns/patterns-edit" "") -; (gtk_accel_path "/dialogs/dialogs-module-dialog" "") -; (gtk_accel_path "/image/image-configure-grid" "") -; (gtk_accel_path "/context/context-tool-menu" "") -; (gtk_accel_path "/view/view-zoom-1-1-accel" "KP_1") -; (gtk_accel_path "/filters/filters-noise-spread" "") -; (gtk_accel_path "/plug-in/script-fu-round-corners" "") -; (gtk_accel_path "/tools/tools-hardness-increase-skip" "") -; (gtk_accel_path "/select/select-save" "") -; (gtk_accel_path "/context/context-background-saturation-set" "") -; (gtk_accel_path "/plug-in/script-fu-guide-new" "") -; (gtk_accel_path "/tools/tools-size-minimum" "") -; (gtk_accel_path "/tools/tools-hardness-decrease-percent" "") -; (gtk_accel_path "/plug-in/gimp-help-concepts-paths" "") -; (gtk_accel_path "/vectors/vectors-select-next" "") -; (gtk_accel_path "/filters/filters-gaussian-blur" "") -; (gtk_accel_path "/tools/tools-text" "t") -; (gtk_accel_path "/view/view-rotate-180" "") -; (gtk_accel_path "/plug-in/plug-in-screenshot" "") -(gtk_accel_path "/plug-in/plug_in_c_astretch" "l") -; (gtk_accel_path "/plug-in/gimp-online-wiki" "") -; (gtk_accel_path "/filters/filters-noise-solid" "") -; (gtk_accel_path "/file/file-open-as-layers" "o") -; (gtk_accel_path "/context/context-background-red-minimum" "") -; (gtk_accel_path "/layers/layers-text-to-vectors" "") -; (gtk_accel_path "/filters/filters-noise-cell" "") -; (gtk_accel_path "/plug-in/script-fu-refresh" "") -(gtk_accel_path "/quick-mask/quick-mask-toggle" "q") -; (gtk_accel_path "/vectors/vectors-fill-last-values" "") -; (gtk_accel_path "/documents/documents-popup" "") -; (gtk_accel_path "/view/view-padding-color-menu" "") -(gtk_accel_path "/tools/tools-smudge" "") -; (gtk_accel_path "/context/context-font-menu" "") -; (gtk_accel_path "/tools/tools-mypaint-brush-hardness-set" "") -; (gtk_accel_path "/plug-in/plug-in-pagecurl" "") -(gtk_accel_path "/dialogs/dialogs-layers" "F7") -; (gtk_accel_path "/context/context-colormap-background-last" "") -; (gtk_accel_path "/plug-in/script-fu-selection-to-image" "") -; (gtk_accel_path "/channels/channels-selection-add" "") -; (gtk_accel_path "/context/context-palette-select-first" "") -; (gtk_accel_path "/layers/layers-lock-position" "") -; (gtk_accel_path "/tools/tools-object-1-next" "") -; (gtk_accel_path "/dialogs/dialogs-device-status" "") -; (gtk_accel_path "/view/view-scroll-vertical" "") -(gtk_accel_path "/view/view-show-selection" "h") -; (gtk_accel_path "/plug-in/plug-in-borderaverage" "") -; (gtk_accel_path "/color-button/color-button-use-foreground" "") -; (gtk_accel_path "/filters/filters-photocopy" "") -; (gtk_accel_path "/channels/channels-color-tag-orange" "") -; (gtk_accel_path "/tools/tools-ink-blob-angle-set" "") -; (gtk_accel_path "/context/context-background-saturation-minimum" "") -; (gtk_accel_path "/layers/layers-lock-alpha" "") -; (gtk_accel_path "/tools/tools-transform-menu" "") -; (gtk_accel_path "/tools/tools-spacing-maximum" "") -; (gtk_accel_path "/view/view-padding-color-theme" "") -; (gtk_accel_path "/plug-in/script-fu-gradient-example" "") -; (gtk_accel_path "/filters/filters-color-rotate" "") -; (gtk_accel_path "/dockable/dialogs-dynamics" "") -; (gtk_accel_path "/patterns/patterns-copy-location" "") -; (gtk_accel_path "/plug-in/gimp-online-roadmap" "") -; (gtk_accel_path "/filters/filters-vignette" "") -; (gtk_accel_path "/filters/filters-edge-neon" "") -(gtk_accel_path "/plug-in/plug_in_colortoalpha" "a") -; (gtk_accel_path "/filters/filters-apply-lens" "") -; (gtk_accel_path "/tools/tools-angle-minimum" "") -; (gtk_accel_path "/tools/tools-ink" "k") -; (gtk_accel_path "/tools/tools-airbrush-rate-set" "") -; (gtk_accel_path "/layers/layers-mask-add-button" "") -; (gtk_accel_path "/layers/layers-color-tag-orange" "") -; (gtk_accel_path "/plug-in/python-fu-gradient-save-as-css" "") -; (gtk_accel_path "/view/view-display-filters" "") -; (gtk_accel_path "/plug-in/script-fu-coffee-stain" "") -; (gtk_accel_path "/context/context-swatch-background-first" "") -; (gtk_accel_path "/layers/layers-composite-mode-intersection" "") -; (gtk_accel_path "/filters/filters-noise-rgb" "") -; (gtk_accel_path "/context/context-foreground-hue-decrease" "") -; (gtk_accel_path "/plug-in/plug-in-tile" "") -; (gtk_accel_path "/plug-in/plug-in-despeckle" "") -; (gtk_accel_path "/dialogs/dialogs-about" "") -(gtk_accel_path "/plug-in/plug-in-c-astretch" "l") -; (gtk_accel_path "/tools/tools-spacing-set" "") -; (gtk_accel_path "/dialogs/dialogs-templates" "") -; (gtk_accel_path "/tools/tools-object-2-first" "") -; (gtk_accel_path "/context/context-background-blue-minimum" "") -; (gtk_accel_path "/documents/documents-file-open-dialog" "") -; (gtk_accel_path "/quick-mask/quick-mask-invert-off" "") -; (gtk_accel_path "/filters/filters-tile-seamless" "") -; (gtk_accel_path "/filters/filters-red-eye-removal" "") -(gtk_accel_path "/layers/layers-resize-to-image" "y") -; (gtk_accel_path "/filters/filters-lens-flare" "") -; (gtk_accel_path "/filters/filters-render-fractals-menu" "") -; (gtk_accel_path "/context/context-brush-angle-decrease-skip" "") -; (gtk_accel_path "/plug-in/gimp-help-using-web" "") -(gtk_accel_path "/dialogs/dialogs-vectors" "F9") -; (gtk_accel_path "/view/view-color-management-softproof" "") -; (gtk_accel_path "/edit/edit-buffer-menu" "") -; (gtk_accel_path "/plug-in/script-fu-make-brush-elliptical" "") -; (gtk_accel_path "/plug-in/plug-in-grid" "") -; (gtk_accel_path "/plug-in/file-pdf-save" "") -; (gtk_accel_path "/filters/filters-color-enhance" "") -; (gtk_accel_path "/plug-in/file-png-save" "") -; (gtk_accel_path "/view/view-padding-color-custom" "") -; (gtk_accel_path "/plug-in/script-fu-weave" "") -; (gtk_accel_path "/filters/filters-blur-menu" "") -; (gtk_accel_path "/context/context-brush-aspect-decrease" "") -; (gtk_accel_path "/tools/tools-paintbrush-angle-set" "") -; (gtk_accel_path "/context/context-pattern-select-next" "") -; (gtk_accel_path "/channels/channels-lower" "") -; (gtk_accel_path "/view/view-rotate-other" "") -; (gtk_accel_path "/context/context-brush-hardness-minimum" "") -; (gtk_accel_path "/filters/filters-mosaic" "") -; (gtk_accel_path "/patterns/patterns-show-in-file-manager" "") -; (gtk_accel_path "/debug/debug-menu" "") -; (gtk_accel_path "/context/context-brush-radius-increase-skip" "") -; (gtk_accel_path "/view/view-softproof-black-point-compensation" "") -; (gtk_accel_path "/select/select-menu" "") -; (gtk_accel_path "/color-button/color-button-use-black" "") -; (gtk_accel_path "/plug-in/plug-in-sample-colorize" "") -(gtk_accel_path "/file/file-open-recent-10" "") -(gtk_accel_path "/tools/tools-by-color-select" "") -; (gtk_accel_path "/context/context-palette-background-previous" "") -; (gtk_accel_path "/tools/tools-force-minimum" "") -; (gtk_accel_path "/channels/channels-color-tag-violet" "") -; (gtk_accel_path "/context/context-swatch-background-next-skip" "") -; (gtk_accel_path "/dockable/dialogs-brush-editor" "") -; (gtk_accel_path "/plug-in/gimp-help-using-simpleobjects" "") -; (gtk_accel_path "/filters/filters-recursive-transform" "") -; (gtk_accel_path "/plug-in/script-fu-add-bevel" "") -; (gtk_accel_path "/dialogs/dialogs-dynamics" "") -; (gtk_accel_path "/plug-in/plug-in-curve-bend" "") -; (gtk_accel_path "/context/context-background-saturation-increase-skip" "") -(gtk_accel_path "/view/view-scroll-page-up" "Page_Up") -; (gtk_accel_path "/filters/filters-convolution-matrix" "") -; (gtk_accel_path "/tools/tools-pencil" "n") -; (gtk_accel_path "/filters/filters-levels" "") -; (gtk_accel_path "/layers/layers-color-tag-violet" "") -; (gtk_accel_path "/tools/tools-opacity-increase" "greater") -; (gtk_accel_path "/context/context-brush-radius-decrease-percent" "") -; (gtk_accel_path "/context/context-foreground-red-set" "") -; (gtk_accel_path "/select/select-fill" "") -; (gtk_accel_path "/filters/filters-colorize" "") -; (gtk_accel_path "/view/view-padding-color-dark-check" "") -; (gtk_accel_path "/tools/tools-hardness-maximum" "") -; (gtk_accel_path "/tool-options/tool-options-save-new-preset" "") -; (gtk_accel_path "/tools/tools-spacing-increase-skip" "") -; (gtk_accel_path "/context/context-gradient-select-previous" "") -; (gtk_accel_path "/layers/layers-new-from-visible" "") -(gtk_accel_path "/tools/tools-crop" "c") -; (gtk_accel_path "/plug-in/plug-in-flame" "") -; (gtk_accel_path "/images/images-popup" "") -; (gtk_accel_path "/dockable/dockable-view-type-list" "") -; (gtk_accel_path "/context/context-font-select-last" "") -; (gtk_accel_path "/vectors/vectors-new" "") -; (gtk_accel_path "/tool-options/tool-options-popup" "") -; (gtk_accel_path "/filters/filters-posterize" "") -; (gtk_accel_path "/channels/channels-color-tag-menu" "") -; (gtk_accel_path "/filters/filters-slic" "") -; (gtk_accel_path "/view/view-rotate-reset" "exclam") -; (gtk_accel_path "/filters/filters-shift" "") -; (gtk_accel_path "/drawable/drawable-rotate-90" "") -; (gtk_accel_path "/plug-in/plug-in-lighting" "") -; (gtk_accel_path "/tools/tools-mypaint-brush" "y") -; (gtk_accel_path "/layers/layers-mode-last" "") -; (gtk_accel_path "/filters/filters-saturation" "") -(gtk_accel_path "/layers/layers-merge-down" "e") -; (gtk_accel_path "/dialogs/dialogs-tips" "") -; (gtk_accel_path "/tools/tools-warp-effect-hardness-set" "") -; (gtk_accel_path "/layers/layers-alpha-add" "") -; (gtk_accel_path "/filters/filters-map-menu" "") -; (gtk_accel_path "/context/context-palette-foreground-previous-skip" "") -; (gtk_accel_path "/context/context-tool-select-set" "") -; (gtk_accel_path "/plug-in/plug-in-color-enhance" "") -; (gtk_accel_path "/filters/filters-dilate" "") -; (gtk_accel_path "/context/context-palette-background-last" "") -; (gtk_accel_path "/image/image-mode-menu" "") -; (gtk_accel_path "/vectors/vectors-selection-to-vectors" "") -; (gtk_accel_path "/vectors/vectors-raise" "") -; (gtk_accel_path "/edit/edit-named-copy-visible" "") -; (gtk_accel_path "/dockable/dockable-preview-size-small" "") -; (gtk_accel_path "/drawable/drawable-rotate-180" "") -; (gtk_accel_path "/filters/filters-decor-menu" "") -; (gtk_accel_path "/layers/layers-composite-mode-menu" "") -; (gtk_accel_path "/tools/tools-airbrush-rate-decrease" "") -; (gtk_accel_path "/image/image-convert-gamma" "") -; (gtk_accel_path "/context/context-foreground-hue-increase-skip" "") -; (gtk_accel_path "/view/view-zoom-16-1" "5") -; (gtk_accel_path "/tools/tools-force-increase" "") -; (gtk_accel_path "/layers/layers-alpha-selection-intersect" "") -; (gtk_accel_path "/image/image-guides-menu" "") -; (gtk_accel_path "/channels/channels-color-tag-yellow" "") -(gtk_accel_path "/context/context-brush-select-next" "period") -; (gtk_accel_path "/channels/channels-popup" "") -(gtk_accel_path "/plug-in/plug-in-iwarp" "x") -; (gtk_accel_path "/filters/filters-waterpixels" "") -; (gtk_accel_path "/context/context-brush-spacing-increase" "") -; (gtk_accel_path "/dockable/dialogs-brushes" "b") -(gtk_accel_path "/layers/layers-select-next" "bracketleft") -; (gtk_accel_path "/tools/tools-rotate-arbitrary" "") -; (gtk_accel_path "/dialogs/dialogs-action-search" "slash") -; (gtk_accel_path "/layers/layers-opacity-decrease-skip" "") -; (gtk_accel_path "/plug-in/gimp-help-concepts-usage" "") -; (gtk_accel_path "/debug/debug-dump-keyboard-shortcuts" "") -; (gtk_accel_path "/image/image-color-profile-discard" "") -; (gtk_accel_path "/layers/layers-color-tag-yellow" "") -; (gtk_accel_path "/context/context-brush-aspect-decrease-skip" "") -; (gtk_accel_path "/dock/dock-move-to-screen-:0.0" "") -; (gtk_accel_path "/filters/filters-animation-menu" "") -; (gtk_accel_path "/filters/filters-noise-reduction" "") -(gtk_accel_path "/dialogs/dialogs-gradients" "g") -; (gtk_accel_path "/tools/tools-object-1-previous" "") -(gtk_accel_path "/image/image-duplicate" "") -; (gtk_accel_path "/documents/documents-show-in-file-manager" "") -; (gtk_accel_path "/dockable/dialogs-patterns" "p") -; (gtk_accel_path "/view/view-scroll-right-border" "") -; (gtk_accel_path "/edit/edit-paste" "v") -; (gtk_accel_path "/context/context-palette-foreground-next" "") -; (gtk_accel_path "/channels/channels-color-tag-red" "") -; (gtk_accel_path "/filters/filters-mono-mixer" "") -; (gtk_accel_path "/context/context-font-select-set" "") -; (gtk_accel_path "/patterns/patterns-duplicate" "") -; (gtk_accel_path "/filters/filters-spiral" "") -; (gtk_accel_path "/plug-in/plug-in-unit-editor" "") -; (gtk_accel_path "/tools/tools-angle-decrease-skip" "") -; (gtk_accel_path "/tools/tools-airbrush-flow-decrease-skip" "") -; (gtk_accel_path "/vectors/vectors-select-bottom" "") -; (gtk_accel_path "/context/context-foreground-value-set" "") -; (gtk_accel_path "/debug/debug-dump-items" "") -; (gtk_accel_path "/view/view-scroll-up" "") -; (gtk_accel_path "/plug-in/gimp-help-using-selections" "") -; (gtk_accel_path "/plug-in/plug-in-cml-explorer" "") -; (gtk_accel_path "/select/select-stroke" "") -; (gtk_accel_path "/context/context-foreground-saturation-decrease-skip" "") -; (gtk_accel_path "/tool-options/tool-options-reset-all" "") -; (gtk_accel_path "/drawable/drawable-visible" "") -; (gtk_accel_path "/image/image-metadata-menu" "") -; (gtk_accel_path "/channels/channels-select-previous" "") -; (gtk_accel_path "/context/context-brush-angle-increase" "") -; (gtk_accel_path "/filters/filters-snn-mean" "") -; (gtk_accel_path "/tools/tools-hardness-set" "") -; (gtk_accel_path "/layers/layers-color-tag-menu" "") -; (gtk_accel_path "/tools/tools-object-1-last" "") -; (gtk_accel_path "/context/context-background-value-increase-skip" "") -; (gtk_accel_path "/plug-in/python-fu-histogram-export" "") -; (gtk_accel_path "/view/view-display-intent-relative-colorimetric" "") -; (gtk_accel_path "/tools/tools-aspect-set-to-default" "") -; (gtk_accel_path "/filters/filters-supernova" "") -; (gtk_accel_path "/image/image-transform-menu" "") -(gtk_accel_path "/view/view-shrink-wrap" "") -; (gtk_accel_path "/images/images-delete" "") -; (gtk_accel_path "/context/context-swatch-foreground-set" "") -; (gtk_accel_path "/plug-in/file-pat-save-internal" "") -; (gtk_accel_path "/context/context-foreground-red-decrease" "") -; (gtk_accel_path "/view/view-zoom-8-1" "4") -; (gtk_accel_path "/context/context-brush-hardness-increase" "") -; (gtk_accel_path "/filters/filters-sepia" "") -; (gtk_accel_path "/debug/debug-dump-attached-data" "") -; (gtk_accel_path "/context/context-brush-radius-minimum" "") -; (gtk_accel_path "/context/context-foreground-saturation-set" "") -; (gtk_accel_path "/view/view-softproof-gamut-check" "") -; (gtk_accel_path "/dialogs/dialogs-images" "") -; (gtk_accel_path "/layers/layers-mask-selection-intersect" "") -; (gtk_accel_path "/plug-in/file-print-gtk" "") -; (gtk_accel_path "/filters/filters-reshow" "f") -; (gtk_accel_path "/dialogs/dialogs-gradient-editor" "") -; (gtk_accel_path "/view/view-move-to-screen-menu" "") -; (gtk_accel_path "/documents/documents-copy-location" "") -; (gtk_accel_path "/view/view-open-display" "") -; (gtk_accel_path "/layers/layers-linked" "") -; (gtk_accel_path "/plug-in/file-tiff-save2" "") -; (gtk_accel_path "/tool-options/tool-options-save-preset-menu" "") -; (gtk_accel_path "/context/context-brush-spacing-maximum" "") -; (gtk_accel_path "/dialogs/dialogs-buffers" "") -; (gtk_accel_path "/file/file-copy-location" "") -; (gtk_accel_path "/tools/tools-color-balance" "") -; (gtk_accel_path "/layers/layers-menu" "") -; (gtk_accel_path "/tools/tools-aspect-minimum" "") -; (gtk_accel_path "/context/context-foreground-green-decrease-skip" "") -; (gtk_accel_path "/context/context-palette-background-previous-skip" "") -(gtk_accel_path "/edit/edit-paste-as-new-image" "") -; (gtk_accel_path "/filters/filters-stress" "") -; (gtk_accel_path "/dialogs/dialogs-patterns" "p") -; (gtk_accel_path "/filters/filters-edge-laplace" "") -; (gtk_accel_path "/context/context-background-green-decrease" "") -; (gtk_accel_path "/view/view-rotate-90" "") -; (gtk_accel_path "/plug-in/color-decode-alpha-exp" "") -; (gtk_accel_path "/context/context-brush-spacing-decrease" "") -; (gtk_accel_path "/tool-options/tool-options-edit-preset-menu" "") -; (gtk_accel_path "/plug-in/plug-in-ifscompose" "") -; (gtk_accel_path "/context/context-background-hue-increase-skip" "") -; (gtk_accel_path "/filters/filters-ripple" "") -(gtk_accel_path "/tools/tools-airbrush" "j") -; (gtk_accel_path "/view/view-softproof-intent-menu" "") -; (gtk_accel_path "/filters/filters-sinus" "") -; (gtk_accel_path "/filters/filters-c2g" "") -; (gtk_accel_path "/plug-in/plug-in-metadata-viewer" "") -; (gtk_accel_path "/plug-in/plug-in-neon" "") -; (gtk_accel_path "/view/view-close" "w") -; (gtk_accel_path "/layers/layers-edit-text" "") -; (gtk_accel_path "/context/context-brush-shape-diamond" "") -; (gtk_accel_path "/tools/tools-force-decrease-skip" "") -; (gtk_accel_path "/plug-in/gimp-online-main-web-site" "") -; (gtk_accel_path "/vectors/vectors-edit-attributes" "") -; (gtk_accel_path "/context/context-opacity-increase" "") -; (gtk_accel_path "/dockable/dialogs-tool-options" "") -; (gtk_accel_path "/context/context-brush-spacing-set" "") -; (gtk_accel_path "/context/context-pattern-select-last" "") -; (gtk_accel_path "/filters/filters-distance-map" "") -(gtk_accel_path "/tools/tools-free-select" "l") -; (gtk_accel_path "/context/context-foreground-green-minimum" "") -; (gtk_accel_path "/file/file-open-recent-09" "9") -; (gtk_accel_path "/dockable/dialogs-fonts" "") -; (gtk_accel_path "/context/context-tool-select-next" "") -(gtk_accel_path "/layers/layers-select-top" "braceright") -; (gtk_accel_path "/channels/channels-selection-subtract" "") -; (gtk_accel_path "/file/file-open-recent-08" "8") -; (gtk_accel_path "/context/context-background-hue-increase" "") -; (gtk_accel_path "/context/context-colormap-background-next-skip" "") -; (gtk_accel_path "/tools/tools-paint-brush-size-increase" "") -; (gtk_accel_path "/context/context-brush-spikes-decrease-skip" "") -; (gtk_accel_path "/dialogs/dialogs-mypaint-brushes" "") -; (gtk_accel_path "/context/context-font-select-previous" "") -; (gtk_accel_path "/file/file-open-recent-07" "7") -; (gtk_accel_path "/plug-in/plug-in-film" "") -(gtk_accel_path "/layers/layers-anchor" "h") -; (gtk_accel_path "/view/view-new" "") -(gtk_accel_path "/edit/edit-redo" "") -; (gtk_accel_path "/context/context-brush-angle-decrease" "") -; (gtk_accel_path "/file/file-open-recent-06" "6") -; (gtk_accel_path "/images/images-new-view" "") -; (gtk_accel_path "/plug-in/plug-in-goat-exercise" "") -; (gtk_accel_path "/plug-in/plug-in-reset-all" "") -; (gtk_accel_path "/plug-in/file-gbr-save-internal" "") -; (gtk_accel_path "/edit/edit-paste-in-place" "v") -; (gtk_accel_path "/view/view-info-window" "") -; (gtk_accel_path "/vectors/vectors-selection-add" "") -; (gtk_accel_path "/tools/tools-aspect-increase-percent" "") -; (gtk_accel_path "/drawable/drawable-lock-content" "") -; (gtk_accel_path "/layers/layers-edit-attributes" "") -; (gtk_accel_path "/file/file-open-recent-05" "5") -; (gtk_accel_path "/plug-in/gimp-help-using-docks" "") -; (gtk_accel_path "/filters/filters-hue-saturation" "") -; (gtk_accel_path "/context/context-foreground-red-decrease-skip" "") -; (gtk_accel_path "/filters/filters-lens-distortion" "") -; (gtk_accel_path "/image/image-convert-indexed" "") -; (gtk_accel_path "/filters/filters-tile-glass" "") -; (gtk_accel_path "/plug-in/script-fu-lava" "") -; (gtk_accel_path "/file/file-open-recent-04" "4") -; (gtk_accel_path "/dock/dock-auto-follow-active" "") -; (gtk_accel_path "/plug-in/script-fu-spyrogimp" "") -; (gtk_accel_path "/patterns/patterns-open-as-image" "") -; (gtk_accel_path "/context/context-foreground-saturation-maximum" "") -; (gtk_accel_path "/image/colors-map-menu" "") -; (gtk_accel_path "/context/context-brush-radius-set" "") -; (gtk_accel_path "/file/file-open-recent-03" "3") -; (gtk_accel_path "/context/context-brush-hardness-decrease" "") -; (gtk_accel_path "/windows/windows-show-display-previous" "Tab") -; (gtk_accel_path "/view/view-softproof-intent-relative-colorimetric" "") -; (gtk_accel_path "/tools/tools-force-set-to-default" "") -; (gtk_accel_path "/file/file-open-recent-02" "2") -; (gtk_accel_path "/drawable/drawable-equalize" "") -; (gtk_accel_path "/context/context-font-select-first" "") -; (gtk_accel_path "/plug-in/plug-in-animationunoptimize" "") -; (gtk_accel_path "/layers/layers-mask-selection-replace" "") -; (gtk_accel_path "/plug-in/python-fu-foggify" "") -; (gtk_accel_path "/patterns/patterns-refresh" "") -; (gtk_accel_path "/file/file-open-recent-01" "1") -; (gtk_accel_path "/image/image-crop-to-content" "") -; (gtk_accel_path "/filters/filters-polar-coordinates" "") -; (gtk_accel_path "/brushes/brushes-new" "") -; (gtk_accel_path "/context/context-background-hue-minimum" "") -(gtk_accel_path "/tools/tools-rotate" "") -; (gtk_accel_path "/image/image-convert-double" "") -; (gtk_accel_path "/view/view-zoom-1-8" "4") -; (gtk_accel_path "/context/context-background-green-decrease-skip" "") -(gtk_accel_path "/edit/edit-fill-fg" "BackSpace") -(gtk_accel_path "/tools/tools-scale" "t") -; (gtk_accel_path "/context/context-brush-select-last" "") -; (gtk_accel_path "/plug-in/script-fu-distress-selection" "") -; (gtk_accel_path "/edit/undo-popup" "") -; (gtk_accel_path "/layers/layers-mode-first" "") -; (gtk_accel_path "/view/view-zoom-1-16" "5") -; (gtk_accel_path "/dockable/dockable-add-tab-menu" "") -; (gtk_accel_path "/context/context-tool-select-previous" "") -; (gtk_accel_path "/channels/channels-color-tag-gray" "") -; (gtk_accel_path "/dockable/dialogs-error-console" "") -; (gtk_accel_path "/context/context-foreground-value-maximum" "") -; (gtk_accel_path "/channels/channels-raise" "") -; (gtk_accel_path "/context/context-background-red-set" "") -; (gtk_accel_path "/plug-in/script-fu-perspective-shadow" "") -; (gtk_accel_path "/context/context-opacity-decrease" "") -; (gtk_accel_path "/plug-in/plug-in-newsprint" "") -; (gtk_accel_path "/filters/filters-cubism" "") -; (gtk_accel_path "/filters/filters-motion-blur-circular" "") -; (gtk_accel_path "/plug-in/plug-in-max-rgb" "") -; (gtk_accel_path "/context/context-gradient-menu" "") -; (gtk_accel_path "/plug-in/gimp-online-docs-web-site" "") -; (gtk_accel_path "/vectors/vectors-color-tag-green" "") -; (gtk_accel_path "/vectors/vectors-copy" "") -; (gtk_accel_path "/view/view-zoom-1-4" "3") -; (gtk_accel_path "/image/image-resize" "") -; (gtk_accel_path "/context/context-palette-foreground-last" "") -; (gtk_accel_path "/filters/filters-pixelize" "") -; (gtk_accel_path "/dock/dock-close" "") -; (gtk_accel_path "/tools/tools-airbrush-rate-decrease-skip" "") -; (gtk_accel_path "/tools/tools-shear" "h") -; (gtk_accel_path "/context/context-background-green-minimum" "") -; (gtk_accel_path "/view/view-snap-to-canvas" "") -; (gtk_accel_path "/view/view-scroll-left-border" "") -; (gtk_accel_path "/plug-in/python-fu-slice" "") -; (gtk_accel_path "/windows/windows-show-display-next" "Tab") -; (gtk_accel_path "/windows/windows-hide-docks" "Tab") -; (gtk_accel_path "/view/view-show-layer-boundary" "") -; (gtk_accel_path "/file/file-save" "s") -; (gtk_accel_path "/layers/layers-composite-space-rgb-linear" "") -; (gtk_accel_path "/tools/tools-paint-brush-size-decrease" "") -; (gtk_accel_path "/context/context-background-hue-decrease" "") -; (gtk_accel_path "/brushes/brushes-copy-location" "") -; (gtk_accel_path "/filters/filters-noise-slur" "") -; (gtk_accel_path "/view/view-zoom-1-2" "2") -; (gtk_accel_path "/image/image-menu" "") -; (gtk_accel_path "/plug-in/plug-in-photocopy" "") -; (gtk_accel_path "/tools/tools-blend" "") -; (gtk_accel_path "/edit/edit-paste-as-menu" "") -; (gtk_accel_path "/tools/tools-select-menu" "") -(gtk_accel_path "/view/view-zoom-1-1" "0") -; (gtk_accel_path "/plug-in/plug-in-warp" "") -; (gtk_accel_path "/dockable/dockable-preview-size-huge" "") -; (gtk_accel_path "/dockable/dockable-tab-style-automatic" "") -; (gtk_accel_path "/layers/layers-mask-edit" "") -; (gtk_accel_path "/windows/windows-show-tabs" "") -; (gtk_accel_path "/layers/layers-mask-add-last-values" "") -; (gtk_accel_path "/plug-in/file-raw-save" "") -(gtk_accel_path "/image/image-merge-layers" "") -; (gtk_accel_path "/filters/filters-noise-perlin" "") -; (gtk_accel_path "/plug-in/plug-in-destripe" "") -; (gtk_accel_path "/dockable/dockable-tab-style-icon-name" "") -; (gtk_accel_path "/dockable/dockable-preview-size-large" "") -; (gtk_accel_path "/layers/layers-color-tag-green" "") -; (gtk_accel_path "/context/context-background-red-decrease-skip" "") -; (gtk_accel_path "/tools/tools-size-decrease-skip" "bracketleft") -; (gtk_accel_path "/dockable/dialogs-selection-editor" "") -; (gtk_accel_path "/quick-mask/quick-mask-configure" "") -; (gtk_accel_path "/filters/filters-cartoon" "") -; (gtk_accel_path "/plug-in/plug-in-fractalexplorer" "") -; (gtk_accel_path "/view/view-softproof-profile" "") -; (gtk_accel_path "/view/view-rotate-270" "") -; (gtk_accel_path "/vectors/vectors-lower-to-bottom" "") -; (gtk_accel_path "/context/context-colormap-background-set" "") -; (gtk_accel_path "/layers/layers-color-tag-gray" "") -; (gtk_accel_path "/tools/tools-paintbrush-size-set" "") -; (gtk_accel_path "/brushes/brushes-popup" "") -; (gtk_accel_path "/dock/dock-show-image-menu" "") -(gtk_accel_path "/context/context-brush-hardness-increase-skip" "braceright") -; (gtk_accel_path "/plug-in/script-fu-selection-to-pattern" "") -; (gtk_accel_path "/documents/documents-clear" "") -; (gtk_accel_path "/plug-in/script-fu-carve-it" "") -; (gtk_accel_path "/plug-in/plug-in-plug-in-details" "") -(gtk_accel_path "/context/context-brush-select-previous" "comma") -; (gtk_accel_path "/context/context-palette-background-set" "") -(gtk_accel_path "/tools/tools-eraser" "e") -(gtk_accel_path "/select/select-float" "") -; (gtk_accel_path "/context/context-gradient-select-next" "") -; (gtk_accel_path "/filters/filters-grid" "") -; (gtk_accel_path "/tools/tools-size-decrease-percent" "") -; (gtk_accel_path "/layers/layers-visible" "") -; (gtk_accel_path "/documents/documents-open" "") -; (gtk_accel_path "/dockable/dialogs-sample-points" "") -; (gtk_accel_path "/context/context-background-blue-decrease-skip" "") -; (gtk_accel_path "/view/view-softproof-intent-saturation" "") -; (gtk_accel_path "/view/view-zoom-minimum" "") -; (gtk_accel_path "/filters/filters-rgb-clip" "") -; (gtk_accel_path "/tools/tools-hardness-decrease-skip" "") -(gtk_accel_path "/windows/windows-display-0009" "9") -; (gtk_accel_path "/context/context-background-value-maximum" "") -(gtk_accel_path "/layers/layers-lower-to-bottom" "braceleft") -; (gtk_accel_path "/tools/tools-force-set" "") -; (gtk_accel_path "/filters/filters-wind" "") -; (gtk_accel_path "/context/context-foreground-red-minimum" "") -; (gtk_accel_path "/filters/filters-displace" "") -; (gtk_accel_path "/debug/debug-dump-managers" "") -; (gtk_accel_path "/context/context-tool-select-last" "") -(gtk_accel_path "/windows/windows-display-0008" "8") -; (gtk_accel_path "/filters/filters-enhance-menu" "") -; (gtk_accel_path "/vectors/vectors-duplicate" "") -; (gtk_accel_path "/filters/filters-engrave" "") -; (gtk_accel_path "/vectors/vectors-selection-from-vectors" "v") -; (gtk_accel_path "/tools/tools-object-2-next" "") -(gtk_accel_path "/view/view-show-guides" "apostrophe") -; (gtk_accel_path "/vectors/vectors-color-tag-red" "") -; (gtk_accel_path "/view/view-zoom-other" "") -(gtk_accel_path "/windows/windows-display-0007" "7") -; (gtk_accel_path "/image/image-convert-u32" "") -; (gtk_accel_path "/dockable/dialogs-symmetry" "") -; (gtk_accel_path "/context/context-swatch-background-previous" "") -(gtk_accel_path "/select/select-feather" "d") -; (gtk_accel_path "/filters/filters-motion-blur-zoom" "") -; (gtk_accel_path "/dialogs/dialogs-tool-presets" "") -(gtk_accel_path "/windows/windows-display-0006" "1") -; (gtk_accel_path "/view/view-display-intent-saturation" "") -; (gtk_accel_path "/tools/tools-foreground-select" "") diff --git a/config/git/aliases.zsh b/config/git/aliases.zsh deleted file mode 100644 index 35eaa2d3..00000000 --- a/config/git/aliases.zsh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env zsh - -g() { [[ $# = 0 ]] && git status --short . || git $*; } - -alias git='noglob git' -alias ga='git add' -alias gap='git add --patch' -alias gb='git branch -av' -alias gop='git open' -alias gbl='git blame' -alias gc='git commit' -alias gcm='git commit -m' -alias gca='git commit --amend' -alias gcf='git commit --fixup' -alias gcl='git clone' -alias gco='git checkout' -alias gcoo='git checkout --' -alias gf='git fetch' -alias gi='git init' -alias gl='git log --graph --pretty="format:%C(yellow)%h%Creset %C(red)%G?%Creset%C(green)%d%Creset %s %Cblue(%cr) %C(bold blue)<%aN>%Creset"' -alias gll='git log --pretty="format:%C(yellow)%h%Creset %C(red)%G?%Creset%C(green)%d%Creset %s %Cblue(%cr) %C(bold blue)<%aN>%Creset"' -alias gL='gl --stat' -alias gp='git push' -alias gpl='git pull --rebase --autostash' -alias gs='git status --short .' -alias gss='git status' -alias gst='git stash' -alias gr='git reset HEAD' -alias grv='git rev-parse' diff --git a/config/git/attributes b/config/git/attributes deleted file mode 100644 index a1bd92e5..00000000 --- a/config/git/attributes +++ /dev/null @@ -1,3 +0,0 @@ -*.lisp diff=lisp -*.el diff=lisp -*.org diff=org diff --git a/config/git/config b/config/git/config deleted file mode 100644 index 32869dc5..00000000 --- a/config/git/config +++ /dev/null @@ -1,46 +0,0 @@ -[user] - name = Henrik Lissner - email = henrik@lissner.net -[core] - whitespace = trailing-space -[init] - defaultBranch = main -[github] - user = chickensoupwithrice -[gitlab] - user = -[rebase] - autosquash = true -[push] - default = current -[pull] - rebase = true -[alias] - unadd = reset HEAD - # data analysis - ranked-authors = !git authors | sort | uniq -c | sort -n - emails = !git log --format="%aE" | sort -u - email-domains = !git log --format="%aE" | awk -F'@' '{print $2}' | sort -u -[filter "lfs"] - required = true - smudge = git-lfs smudge -- %f - process = git-lfs filter-process - clean = git-lfs clean -- %f -[url "https://github.com/"] - insteadOf = gh: -[url "git@github.com:"] - insteadOf = ssh+gh: -[url "git@github.com:chickensoupwithrice/"] - insteadOf = gh:/ -[url "https://gitlab.com/"] - insteadOf = gl: -[url "https://gist.github.com/"] - insteadOf = gist: -[url "https://bitbucket.org/"] - insteadOf = bb: -[url "https://git.v0.com"] - insteadOf = v0: -[diff "lisp"] - xfuncname = "^(((;;;+ )|\\(|([ \t]+\\(((cl-|el-patch-)?def(un|var|macro|method|custom)|gb/))).*)$" -[diff "org"] - xfuncname = "^(\\*+ +.*)$" diff --git a/config/git/ignore b/config/git/ignore deleted file mode 100644 index 663d047a..00000000 --- a/config/git/ignore +++ /dev/null @@ -1,36 +0,0 @@ -# For emacs: -*~ -*.*~ -\#* -.\#* - -# For vim: -*.swp -.*.sw[a-z] -*.un~ -.netrwhist - -# OS generated files # -###################### -.DS_Store? -.DS_Store -.CFUserTextEncoding -.Trash -.Xauthority -thumbs.db -Thumbs.db -Icon? - -# Code stuffs # -############### -.ccls-cache/ -.sass-cache/ -__pycache__/ - -# Compiled thangs # -################### -*.class -*.exe -*.o -*.pyc -*.elc diff --git a/config/ncmpcpp/aliases.zsh b/config/ncmpcpp/aliases.zsh deleted file mode 100644 index e2314296..00000000 --- a/config/ncmpcpp/aliases.zsh +++ /dev/null @@ -1,3 +0,0 @@ -alias rate=mpd-rate -alias mpcs='mpc search any' -alias mpcsp='mpc searchplay any' diff --git a/config/ncmpcpp/bindings b/config/ncmpcpp/bindings deleted file mode 100644 index 8170bafe..00000000 --- a/config/ncmpcpp/bindings +++ /dev/null @@ -1,424 +0,0 @@ -def_key "k" - scroll_up - -def_key "j" - scroll_down - -def_key "K" - select_item - scroll_up - -def_key "J" - select_item - scroll_down - -def_key "h" - previous_column - -def_key "l" - next_column - -def_key "L" - show_lyrics - -def_key "up" - volume_up - -def_key "down" - volume_down - -#def_key "right" -# next_column -# -#def_key "left" -# previous_column -# -#def_key "mouse" -# mouse_event -# -#def_key "up" -# scroll_up -# -#def_key "shift-up" -# select_item -# scroll_up -# -#def_key "down" -# scroll_down -# -#def_key "shift-down" -# select_item -# scroll_down -# -#def_key "[" -# scroll_up_album -# -#def_key "]" -# scroll_down_album -# -#def_key "{" -# scroll_up_artist -# -#def_key "}" -# scroll_down_artist -# -#def_key "page_up" -# page_up -# -#def_key "page_down" -# page_down -# -#def_key "home" -# move_home -# -#def_key "end" -# move_end -# -#def_key "insert" -# select_item -# -#def_key "enter" -# enter_directory -# -#def_key "enter" -# toggle_output -# -#def_key "enter" -# run_action -# -#def_key "enter" -# play_item -# -#def_key "space" -# add_item_to_playlist -# -#def_key "space" -# toggle_lyrics_update_on_song_change -# -#def_key "space" -# toggle_visualization_type -# -#def_key "delete" -# delete_playlist_items -# -#def_key "delete" -# delete_browser_items -# -#def_key "delete" -# delete_stored_playlist -# -#def_key "right" -# next_column -# -#def_key "right" -# slave_screen -# -#def_key "right" -# volume_up -# -#def_key "+" -# volume_up -# -#def_key "left" -# previous_column -# -#def_key "left" -# master_screen -# -#def_key "left" -# volume_down -# -#def_key "-" -# volume_down -# -#def_key ":" -# execute_command -# -#def_key "tab" -# next_screen -# -#def_key "shift-tab" -# previous_screen -# -#def_key "f1" -# show_help -# -#def_key "1" -# show_playlist -# -#def_key "2" -# show_browser -# -#def_key "2" -# change_browse_mode -# -#def_key "3" -# show_search_engine -# -#def_key "3" -# reset_search_engine -# -#def_key "4" -# show_media_library -# -#def_key "4" -# toggle_media_library_columns_mode -# -#def_key "5" -# show_playlist_editor -# -#def_key "6" -# show_tag_editor -# -#def_key "7" -# show_outputs -# -#def_key "8" -# show_visualizer -# -#def_key "=" -# show_clock -# -#def_key "@" -# show_server_info -# -#def_key "s" -# stop -# -#def_key "p" -# pause -# -#def_key ">" -# next -# -#def_key "<" -# previous -# -#def_key "ctrl-h" -# jump_to_parent_directory -# -#def_key "ctrl-h" -# replay_song -# -#def_key "backspace" -# jump_to_parent_directory -# -#def_key "backspace" -# replay_song -# -#def_key "f" -# seek_forward -# -#def_key "b" -# seek_backward -# -#def_key "r" -# toggle_repeat -# -#def_key "z" -# toggle_random -# -#def_key "y" -# save_tag_changes -# -#def_key "y" -# start_searching -# -#def_key "y" -# toggle_single -# -#def_key "R" -# toggle_consume -# -#def_key "Y" -# toggle_replay_gain_mode -# -#def_key "T" -# toggle_add_mode -# -#def_key "|" -# toggle_mouse -# -#def_key "#" -# toggle_bitrate_visibility -# -#def_key "Z" -# shuffle -# -#def_key "x" -# toggle_crossfade -# -#def_key "X" -# set_crossfade -# -#def_key "u" -# update_database -# -#def_key "ctrl-s" -# sort_playlist -# -#def_key "ctrl-s" -# toggle_browser_sort_mode -# -#def_key "ctrl-s" -# toggle_media_library_sort_mode -# -#def_key "ctrl-r" -# reverse_playlist -# -#def_key "ctrl-_" -# select_found_items -# -#def_key "/" -# find -# -#def_key "/" -# find_item_forward -# -#def_key "?" -# find -# -#def_key "?" -# find_item_backward -# -#def_key "." -# next_found_item -# -#def_key "," -# previous_found_item -# -#def_key "w" -# toggle_find_mode -# -#def_key "e" -# edit_song -# -#def_key "e" -# edit_library_tag -# -#def_key "e" -# edit_library_album -# -#def_key "e" -# edit_directory_name -# -#def_key "e" -# edit_playlist_name -# -#def_key "e" -# edit_lyrics -# -#def_key "i" -# show_song_info -# -#def_key "I" -# show_artist_info -# -#def_key "g" -# jump_to_position_in_song -# -#def_key "l" -# show_lyrics -# -#def_key "ctrl-v" -# select_range -# -#def_key "v" -# reverse_selection -# -#def_key "V" -# remove_selection -# -#def_key "B" -# select_album -# -#def_key "a" -# add_selected_items -# -#def_key "c" -# clear_playlist -# -#def_key "c" -# clear_main_playlist -# -#def_key "C" -# crop_playlist -# -#def_key "C" -# crop_main_playlist -# -#def_key "m" -# move_sort_order_up -# -#def_key "m" -# move_selected_items_up -# -#def_key "m" -# set_visualizer_sample_multiplier -# -#def_key "n" -# move_sort_order_down -# -#def_key "n" -# move_selected_items_down -# -#def_key "M" -# move_selected_items_to -# -#def_key "A" -# add -# -#def_key "S" -# save_playlist -# -#def_key "o" -# jump_to_playing_song -# -#def_key "G" -# jump_to_browser -# -#def_key "G" -# jump_to_playlist_editor -# -#def_key "~" -# jump_to_media_library -# -#def_key "E" -# jump_to_tag_editor -# -#def_key "U" -# toggle_playing_song_centering -# -#def_key "P" -# toggle_display_mode -# -#def_key "\\" -# toggle_interface -# -#def_key "!" -# toggle_separators_between_albums -# -#def_key "L" -# toggle_lyrics_fetcher -# -#def_key "F" -# toggle_fetching_lyrics_in_background -# -#def_key "ctrl-l" -# toggle_screen_lock -# -#def_key "`" -# toggle_library_tag_type -# -#def_key "`" -# refetch_lyrics -# -#def_key "`" -# add_random_items -# -#def_key "ctrl-p" -# set_selected_items_priority -# -#def_key "q" -# quit -# diff --git a/config/ncmpcpp/config b/config/ncmpcpp/config deleted file mode 100644 index d9ed1d46..00000000 --- a/config/ncmpcpp/config +++ /dev/null @@ -1,433 +0,0 @@ -##### directories ###### -ncmpcpp_directory = ~/.config/ncmpcpp - -## Directory for storing downloaded lyrics. -lyrics_directory = ~/music/.db/lyrics - -##### connection settings ##### -mpd_host = "~/.config/mpd/mpd.sock" -#mpd_host = "127.0.0.1" -#mpd_port = 6600 -#mpd_connection_timeout = 5 - -## Needed for tag editor and file operations to work. -mpd_music_dir = ~/music -mpd_crossfade_time = 5 - -##### music visualizer ##### -## -## Note: In order to make music visualizer work you'll -## need to use mpd fifo output, whose format parameter -## has to be set to 44100:16:1 for mono visualization -## or 44100:16:2 for stereo visualization. Example -## configuration (it has to be put into mpd.conf): -## -## audio_output { -## type "fifo" -## name "Visualizer feed" -## path "/tmp/mpd.fifo" -## format "44100:16:2" -## } -## -#visualizer_fifo_path = /tmp/mpd.fifo - -## -## Note: Below parameter is needed for ncmpcpp -## to determine which output provides data for -## visualizer and thus allow syncing between -## visualization and sound as currently there -## are some problems with it. -## -#visualizer_output_name = Visualizer feed - -## -## If you set format to 44100:16:2, make it 'yes'. -## -visualizer_in_stereo = no - -## -## Multiply received samples by given value. Very -## useful for proper visualization of quiet music. -## -#visualizer_sample_multiplier = 1.0 - -## -## Note: Below parameter defines how often ncmpcpp -## has to "synchronize" visualizer and audio outputs. -## 30 seconds is optimal value, but if you experience -## synchronization problems, set it to lower value. -## Keep in mind that sane values start with >=10. -## -visualizer_sync_interval = 30 - -## -## Note: To enable spectrum frequency visualization -## you need to compile ncmpcpp with fftw3 support. -## -# -## Available values: spectrum, wave, wave_filled, ellipse. -visualizer_type = spectrum -## Alternative subset of 256 colors for terminals that support it. -#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161 -visualizer_color = blue, cyan, green, yellow, magenta, red -#visualizer_look = ●▮ -# -##### system encoding ##### -## -## ncmpcpp should detect your charset encoding -## but if it failed to do so, you can specify -## charset encoding you are using here. -## -## Note: You can see whether your ncmpcpp build -## supports charset detection by checking output -## of `ncmpcpp --version`. -## -## Note: Since MPD uses UTF-8 by default, setting -## this option makes sense only if your encoding -## is different. -## -#system_encoding = "" -# -##### delays ##### -# -## Time of inactivity (in seconds) after playlist -## highlighting will be disabled (0 = always on). -## -#playlist_disable_highlight_delay = 5 -# -## Defines how long messages are supposed to be visible. -## -message_delay_time = 2 -# -##### song format ##### -## -## For a song format you can use: -## -## %l - length -## %f - filename -## %D - directory -## %a - artist -## %A - album artist -## %t - title -## %b - album -## %y - date -## %n - track number (01/12 -> 01) -## %N - full track info (01/12 -> 01/12) -## %g - genre -## %c - composer -## %p - performer -## %d - disc -## %C - comment -## %P - priority -## $R - begin right alignment -## -## If you want to make sure that a part of the format is displayed -## only when certain tags are present, you can archieve it by -## grouping them with brackets, e.g. '{%a - %t}' will be evaluated -## to 'ARTIST - TITLE' if both tags are present or '' otherwise. -## It is also possible to define a list of alternatives by providing -## several groups and separating them with '|', e.g. '{%t}|{%f}' -## will be evaluated to 'TITLE' or 'FILENAME' if the former is not -## present. -## -## Note: If you want to set limit on maximal length of a tag, just -## put the appropriate number between % and character that defines -## tag type, e.g. to make album take max. 20 terminal cells, use '%20b'. -## -## In addition, formats support markers used for text attributes. -## They are followed by character '$'. After that you can put: -## -## - 0 - default window color (discards all other colors) -## - 1 - black -## - 2 - red -## - 3 - green -## - 4 - yellow -## - 5 - blue -## - 6 - magenta -## - 7 - cyan -## - 8 - white -## - 9 - end of current color -## - b - bold text -## - u - underline text -## - r - reverse colors -## - a - use alternative character set -## -## If you don't want to use a non-color attribute anymore, just put it -## again, but this time insert character '/' between '$' and attribute -## character, e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag -## or filename with reversed colors. -## -## If you want to use 256 colors and/or background colors in formats -## (the naming scheme is described below in section about color -## definitions), it can be done with the syntax $(COLOR), e.g. to set -## the artist tag to one of the non-standard colors and make it have -## yellow background, you need to write $(197_yellow)%a$(end). Note -## that for standard colors this is interchangable with attributes -## listed above. -## -## Note: colors can be nested. -## -# -# song_list_format = {%a }$2%t$9 %C $R{%b }$2%25l$9 -#song_list_format = {{$5%a$9 }{$7%A$9 }}{%n }$(16)%t$(end) $R{$8%l$9} -# song_status_format = {{%a{ $3%b{ (%y)}$9} }{$8%t$9}}|{%f} -#song_library_format = {%n - }{%t}|{%f} -song_list_format = "{$2%a$9} {$5%t$9} $R {$3%b$3} $9({$9%l$9})" -song_library_format = "%n %t" -song_status_format = "$b{$6%a$9 $1|$9} {$7%t$9} $1|$9 {$2%b$9} $1|$9 {$6%y$9} $1|$9" -# -# -#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b -#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D} -# -now_playing_prefix = "$(3_236)> " -now_playing_suffix = $0 -# -#browser_playlist_prefix = "$2playlist$9 " -# -selected_item_prefix = "$(6_237)+ " -selected_item_suffix = $9 -# -# modified_item_prefix = $3> $9 -# -## -## Note: attributes are not supported for the following variables. -## -#song_window_title_format = {%a - }{%t}|{%f} -## -## Note: Below variables are used for sorting songs in browser. -## The sort mode determines how songs are sorted, and can be used -## in combination with a sort format to specify a custom sorting format. -## Available values for browser_sort_mode are "name", "mtime", "format" -## and "noop". -## -# -#browser_sort_mode = name -#browser_sort_format = {%a - }{%t}|{%f} {(%l)} -# -##### columns settings ##### -## -## syntax of song columns list format is "column column etc." -## -## - syntax for each column is: -## -## (width of the column)[color of the column]{displayed tag} -## -## Note: Width is by default in %, if you want a column to -## have fixed size, add 'f' after the value, e.g. (10)[white]{a} -## will be the column that take 10% of screen (so the real width -## will depend on actual screen size), whereas (10f)[white]{a} -## will take 10 terminal cells, no matter how wide the screen is. -## -## - color is optional (if you want the default one, -## leave the field empty). -## -## Note: You can give a column additional attributes by putting appropriate -## character after displayed tag character. Available attributes are: -## -## - r - column will be right aligned -## - E - if tag is empty, empty tag marker won't be displayed -## -## You can also: -## -## - give a column custom name by putting it after attributes, -## separated with character ':', e.g. {lr:Length} gives you -## right aligned column of lengths named "Length". -## -## - define sequence of tags, that have to be displayed in case -## predecessor is empty in a way similar to the one in classic -## song format, i.e. using '|' character, e.g. {a|c|p:Owner} -## creates column named "Owner" that tries to display artist -## tag and then composer and performer if previous ones are -## not available. -## -song_columns_list_format = (3f)[241]{NEr:#} (8f)[5]{l} (22)[6]{a|A:Artist} (40)[9]{t|f:Title} (30)[13]{b} -# -##### various settings ##### -# -## -## Note: Custom command that will be executed each -## time song changes. Useful for notifications etc. -## -execute_on_song_change = "mpd-notify-song" -#playlist_show_mpd_host = no -playlist_show_remaining_time = yes -playlist_shorten_total_times = yes -#playlist_separate_albums = no -# -## -## Note: Possible display modes: classic, columns. -## -playlist_display_mode = classic -browser_display_mode = columns -#search_engine_display_mode = classic -#playlist_editor_display_mode = classic -discard_colors_if_item_is_selected = yes -incremental_seeking = yes -seek_time = 2 -volume_change_step = 10 -#autocenter_mode = no -#centered_cursor = no -# -## -## Note: You can specify third character which will -## be used to build 'empty' part of progressbar. -## -progressbar_look = "─╼ " -#progressbar_boldness -progressbar_color = 1 -progressbar_elapsed_color = 4 -# -## Available values: database, playlist. -## -#default_place_to_search_in = database -# -## Available values: classic, alternative. -## -user_interface = alternative -#data_fetching_delay = yes -# -## Available values: artist, album_artist, date, genre, composer, performer. -## -#media_library_primary_tag = artist -# -## Available values: wrapped, normal. -## -#default_find_mode = wrapped -#default_tag_editor_pattern = %n - %t -header_visibility = yes -statusbar_visibility = yes -titles_visibility = no -#header_text_scrolling = yes -#cyclic_scrolling = no -#lines_scrolled = 2 -#follow_now_playing_lyrics = no -#fetch_lyrics_for_current_song_in_background = no -#store_lyrics_in_song_dir = no -#generate_win32_compatible_filenames = yes -allow_for_physical_item_deletion = yes -# -## -## Note: If you set this variable, ncmpcpp will try to -## get info from last.fm in language you set and if it -## fails, it will fall back to english. Otherwise it will -## use english the first time. -## -## Note: Language has to be expressed as an ISO 639 alpha-2 code. -## -#lastfm_preferred_language = en -#show_hidden_files_in_local_browser = no -# -## -## How shall screen switcher work? -## -## - "previous" - switch between the current and previous screen. -## - "screen1,...,screenN" - switch between given sequence of screens. -## -## Screens available for use: help, playlist, browser, search_engine, -## media_library, playlist_editor, tag_editor, outputs, visualizer, clock. -## -#screen_switcher_mode = playlist, browser -# -## -## Note: You can define startup screen -## by choosing screen from the list above. -## -#startup_screen = playlist -# -## -## Note: You can define startup slave screen -## by choosing screen from the list above or -## an empty value for no slave screen. -## -#startup_slave_screen = "" -#startup_slave_screen_focus = no -# -## -## Default width of locked screen (in %). -## Acceptable values are from 20 to 80. -## -# -#locked_screen_width_part = 50 -#ask_for_locked_screen_width_part = yes -jump_to_now_playing_song_at_start = yes -#ask_before_clearing_playlists = yes -#clock_display_seconds = no -#display_volume_level = no -#display_bitrate = yes -display_remaining_time = no -# -## Available values: none, basic, extended, perl. -## -#regular_expressions = perl -# -## -## Note: If below is enabled, ncmpcpp will ignore leading -## "The" word while sorting items in browser, tags in -## media library, etc. -## -#ignore_leading_the = no -#block_search_constraints_change_if_items_found = yes -#mouse_support = yes -#mouse_list_scroll_whole_page = yes -empty_tag_marker = -#tags_separator = " | " -tag_editor_extended_numeration = yes -#media_library_sort_by_mtime = no -enable_window_title = yes -# -## -## Note: You can choose default search mode for search -## engine. Available modes are: -## -## - 1 - use mpd built-in searching (no regexes, pattern matching) -## - 2 - use ncmpcpp searching (pattern matching with support for regexes, -## but if your mpd is on a remote machine, downloading big database -## to process it can take a while -## - 3 - match only exact values (this mode uses mpd function for searching -## in database and local one for searching in current playlist) -## -search_engine_default_search_mode = 2 -external_editor = vim - -## Note: set to yes if external editor is a console application. -use_console_editor = yes - -##### colors definitions ##### -## -## It is possible to set a background color by setting a color -## value "_", e.g. red_black will set -## foregound color to red and background color to black. -## -## In addition, for terminals that support 256 colors it -## is possible to set one of them by using a number in range -## [1, 256] instead of color name, e.g. numerical value -## corresponding to red_black is 2_1. To find out if the -## terminal supports 256 colors, run ncmpcpp and check out -## the bottom of the help screen for list of available colors -## and their numerical values. -## -## Note: due to technical limitations of ncurses, if 256 colors -## are used, it is possible to either use only the colors with -## default background color, or all pairs from 1_1 up to 254_127, -## depending on the ncurses version used. -## -colors_enabled = yes -empty_tag_color = 13 -header_window_color = 241 -volume_color = 239 -state_line_color = 13 -state_flags_color = 13 -main_window_color = green -color1 = white -color2 = blue -# main_window_highlight_color = yellow -statusbar_color = 13 -statusbar_time_color = 6 -player_state_color = 14 -alternative_ui_separator_color = 2 -current_item_prefix = $(9_238) -current_item_suffix = $(end) -# active_column_color = red -window_border_color = 13 -active_window_border = 13 diff --git a/config/qutebrowser/config.py b/config/qutebrowser/config.py deleted file mode 100644 index f2547de4..00000000 --- a/config/qutebrowser/config.py +++ /dev/null @@ -1,349 +0,0 @@ -import os -import glob - -## Load settings applied with :set -config.load_autoconfig() - -## General config -c.content.default_encoding = 'utf-8' -c.content.javascript.enabled = True -c.content.local_storage = True -c.content.plugins = True - -c.editor.encoding = 'utf-8' - -## Security & privacy -c.content.autoplay = False # don't autoplay videos - -## Adblocking -# Use (superior) Brave adblock if available, or fall back to host blocking -c.content.blocking.method = "auto" -c.content.blocking.hosts.lists = [ - 'https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts', - 'https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext' - # 'https://www.malwaredomainlist.com/hostslist/hosts.txt', - # 'http://someonewhocares.org/hosts/hosts', - # 'http://winhelp2002.mvps.org/hosts.zip', - # 'http://malwaredomains.lehigh.edu/files/justdomains.zip', -] -# c.content.blocking.whitelist = [] - -## Options -c.downloads.position = 'bottom' -c.downloads.location.directory = os.path.expanduser("~/dl") -c.downloads.location.prompt = False -c.input.insert_mode.auto_leave = True -c.input.insert_mode.auto_load = False -c.input.links_included_in_focus_chain = False -c.new_instance_open_target = 'tab-silent' -c.prompt.filebrowser = False -c.prompt.radius = 0 -c.spellcheck.languages = ['en-US'] -c.session.lazy_restore = True -c.tabs.show = 'multiple' -c.tabs.title.format = '{audio}{current_title} - {host}' -c.tabs.title.format_pinned = '' -c.window.title_format = '{current_title} - {host} - qutebrowser' - - -# -## Keybindings - -# Universal Emacsien C-g alias for Escape -config.bind('', 'clear-keychain ;; search ;; fullscreen --leave') -for mode in ['caret', 'command', 'hint', 'insert', 'passthrough', 'prompt', 'register']: - config.bind('', 'mode-leave', mode=mode) - -# ... -config.bind('zz', 'close') -config.bind('tm', 'tab-mute') -config.bind('wi', 'devtools bottom') -config.bind(';;', 'hint inputs --first') # easier to reach than ;t -config.bind(';e', 'hint inputs --first ;; fake-key ;; :spawn nohup bspc rule -a "Emacs:*" -o state=floating sticky=on && emacsclient --eval "(emacs-everywhere)"') -# ;v already bound to 'spawn mpv {url}' -config.bind(';V', 'hint links spawn mpv {hint-url}') - -# Use external editor -c.editor.command = ['emacsclient', '-c', '-F', '((name . "qutebrowser-editor"))', '+{line}:{column}', '{}'] -# Though we set it, I use the more specialzied emacs-everywhere instead -config.bind('', 'edit-text', mode='insert') -config.bind('', 'hint inputs --first ;; edit-text', mode='normal') -config.bind('', 'fake-key ', mode='insert') - -# Vaultwarden integration -config.bind(";pp", 'spawn -u qute-bwmenu') -config.bind(";pu", 'spawn -u qute-bwmenu --field username') -config.bind(";ps", 'spawn -u qute-bwmenu --field password') -config.bind(";po", 'spawn -u qute-bwmenu --field otp') -config.bind(";pl", 'spawn -u qute-bwmenu --last') - -## Ex-commands - - -## Bindings for normal mode -# config.bind("'", 'enter-mode jump_mark') -# config.bind('+', 'zoom-in') -# config.bind('-', 'zoom-out') -# config.bind('.', 'repeat-command') -# config.bind('/', 'set-cmd-text /') -# config.bind(':', 'set-cmd-text :') -# config.bind(';I', 'hint images tab') -# config.bind(';O', 'hint links fill :open -t -r {hint-url}') -# config.bind(';R', 'hint --rapid links window') -# config.bind(';Y', 'hint links yank-primary') -# config.bind(';b', 'hint all tab-bg') -# config.bind(';d', 'hint links download') -# config.bind(';f', 'hint all tab-fg') -# config.bind(';h', 'hint all hover') -# config.bind(';i', 'hint images') -# config.bind(';o', 'hint links fill :open {hint-url}') -# config.bind(';r', 'hint --rapid links tab-bg') -# config.bind(';t', 'hint inputs') -# config.bind(';y', 'hint links yank') -# config.bind('', 'tab-focus 1') -# config.bind('', 'tab-focus 2') -# config.bind('', 'tab-focus 3') -# config.bind('', 'tab-focus 4') -# config.bind('', 'tab-focus 5') -# config.bind('', 'tab-focus 6') -# config.bind('', 'tab-focus 7') -# config.bind('', 'tab-focus 8') -# config.bind('', 'tab-focus -1') -# config.bind('', 'navigate increment') -# config.bind('', 'print') -# config.bind('', 'scroll-page 0 -1') -# config.bind('', 'scroll-page 0 0.5') -# config.bind('', 'reload -f') -# config.bind('', 'scroll-page 0 1') -# config.bind('', 'open -w') -# config.bind('', 'tab-next') -# config.bind('', 'tab-prev') -# config.bind('', 'quit') -# config.bind('', 'follow-selected -t') -# config.bind('', 'open -p') -# config.bind('', 'undo') -# config.bind('', 'close') -# config.bind('', 'open -t') -# config.bind('', 'tab-focus last') -# config.bind('', 'scroll-page 0 -0.5') -# config.bind('', 'enter-mode passthrough') -# config.bind('', 'tab-close') -# config.bind('', 'navigate decrement') -# config.bind('', 'tab-focus last') -# config.bind('', 'home') -# config.bind('', 'tab-pin') -# config.bind('', 'stop') -# config.bind('', 'clear-keychain ;; search ;; fullscreen --leave') -# config.bind('', 'fullscreen') -# config.bind('', 'reload') -# config.bind('', 'follow-selected') -# config.bind('', 'back') -# config.bind('', 'forward') -# config.bind('=', 'zoom') -# config.bind('?', 'set-cmd-text ?') -# config.bind('@', 'run-macro') -# config.bind('B', 'set-cmd-text -s :quickmark-load -t') -# config.bind('D', 'tab-close -o') -# config.bind('F', 'hint all tab') -# config.bind('G', 'scroll-to-perc') -# config.bind('H', 'back') -# config.bind('J', 'tab-next') -# config.bind('K', 'tab-prev') -# config.bind('L', 'forward') -# config.bind('M', 'bookmark-add') -# config.bind('N', 'search-prev') -# config.bind('O', 'set-cmd-text -s :open -t') -# config.bind('PP', 'open -t -- {primary}') -# config.bind('Pp', 'open -t -- {clipboard}') -# config.bind('R', 'reload -f') -# config.bind('Sb', 'open qute://bookmarks#bookmarks') -# config.bind('Sh', 'open qute://history') -# config.bind('Sq', 'open qute://bookmarks') -# config.bind('Ss', 'open qute://settings') -# config.bind('T', 'tab-focus') -# config.bind('ZQ', 'quit') -# config.bind('ZZ', 'quit --save') -# config.bind('[[', 'navigate prev') -# config.bind(']]', 'navigate next') -# config.bind('`', 'enter-mode set_mark') -# config.bind('ad', 'download-cancel') -# config.bind('b', 'set-cmd-text -s :quickmark-load') -# config.bind('cd', 'download-clear') -# config.bind('co', 'tab-only') -# config.bind('d', 'tab-close') -# config.bind('f', 'hint') -# config.bind('g$', 'tab-focus -1') -# config.bind('g0', 'tab-focus 1') -# config.bind('gB', 'set-cmd-text -s :bookmark-load -t') -# config.bind('gC', 'tab-clone') -# config.bind('gO', 'set-cmd-text :open -t -r {url:pretty}') -# config.bind('gU', 'navigate up -t') -# config.bind('g^', 'tab-focus 1') -# config.bind('ga', 'open -t') -# config.bind('gb', 'set-cmd-text -s :bookmark-load') -# config.bind('gd', 'download') -# config.bind('gf', 'view-source') -# config.bind('gg', 'scroll-to-perc 0') -# config.bind('gl', 'tab-move -') -# config.bind('gm', 'tab-move') -# config.bind('go', 'set-cmd-text :open {url:pretty}') -# config.bind('gr', 'tab-move +') -# config.bind('gt', 'set-cmd-text -s :buffer') -# config.bind('gu', 'navigate up') -# config.bind('h', 'scroll left') -# config.bind('i', 'enter-mode insert') -# config.bind('j', 'scroll down') -# config.bind('k', 'scroll up') -# config.bind('l', 'scroll right') -# config.bind('m', 'quickmark-save') -# config.bind('n', 'search-next') -# config.bind('o', 'set-cmd-text -s :open') -# config.bind('pP', 'open -- {primary}') -# config.bind('pp', 'open -- {clipboard}') -# config.bind('q', 'record-macro') -# config.bind('r', 'reload') -# config.bind('sf', 'save') -# config.bind('sk', 'set-cmd-text -s :bind') -# config.bind('sl', 'set-cmd-text -s :set -t') -# config.bind('ss', 'set-cmd-text -s :set') -# config.bind('th', 'back -t') -# config.bind('tl', 'forward -t') -# config.bind('u', 'undo') -# config.bind('v', 'enter-mode caret') -# config.bind('wB', 'set-cmd-text -s :bookmark-load -w') -# config.bind('wO', 'set-cmd-text :open -w {url:pretty}') -# config.bind('wP', 'open -w -- {primary}') -# config.bind('wb', 'set-cmd-text -s :quickmark-load -w') -# config.bind('wf', 'hint all window') -# config.bind('wh', 'back -w') -# config.bind('wi', 'inspector') -# config.bind('wl', 'forward -w') -# config.bind('wo', 'set-cmd-text -s :open -w') -# config.bind('wp', 'open -w -- {clipboard}') -# config.bind('xO', 'set-cmd-text :open -b -r {url:pretty}') -# config.bind('xb', 'config-cycle statusbar.hide') -# config.bind('xo', 'set-cmd-text -s :open -b') -# config.bind('xt', 'config-cycle tabs.show always switching') -# config.bind('xx', 'config-cycle statusbar.hide ;; config-cycle tabs.show always switching') -# config.bind('yD', 'yank domain -s') -# config.bind('yP', 'yank pretty-url -s') -# config.bind('yT', 'yank title -s') -# config.bind('yY', 'yank -s') -# config.bind('yd', 'yank domain') -# config.bind('yp', 'yank pretty-url') -# config.bind('yt', 'yank title') -# config.bind('yy', 'yank') -# config.bind('{{', 'navigate prev -t') -# config.bind('}}', 'navigate next -t') - -## Bindings for caret mode -# config.bind('$', 'move-to-end-of-line', mode='caret') -# config.bind('0', 'move-to-start-of-line', mode='caret') -# config.bind('', 'drop-selection', mode='caret') -# config.bind('', 'leave-mode', mode='caret') -# config.bind('', 'yank selection', mode='caret') -# config.bind('', 'toggle-selection', mode='caret') -# config.bind('G', 'move-to-end-of-document', mode='caret') -# config.bind('H', 'scroll left', mode='caret') -# config.bind('J', 'scroll down', mode='caret') -# config.bind('K', 'scroll up', mode='caret') -# config.bind('L', 'scroll right', mode='caret') -# config.bind('Y', 'yank selection -s', mode='caret') -# config.bind('[', 'move-to-start-of-prev-block', mode='caret') -# config.bind(']', 'move-to-start-of-next-block', mode='caret') -# config.bind('b', 'move-to-prev-word', mode='caret') -# config.bind('c', 'enter-mode normal', mode='caret') -# config.bind('e', 'move-to-end-of-word', mode='caret') -# config.bind('gg', 'move-to-start-of-document', mode='caret') -# config.bind('h', 'move-to-prev-char', mode='caret') -# config.bind('j', 'move-to-next-line', mode='caret') -# config.bind('k', 'move-to-prev-line', mode='caret') -# config.bind('l', 'move-to-next-char', mode='caret') -# config.bind('v', 'toggle-selection', mode='caret') -# config.bind('w', 'move-to-next-word', mode='caret') -# config.bind('y', 'yank selection', mode='caret') -# config.bind('{', 'move-to-end-of-prev-block', mode='caret') -# config.bind('}', 'move-to-end-of-next-block', mode='caret') - -## Bindings for command mode -# config.bind('', 'rl-backward-word', mode='command') -# config.bind('', 'rl-backward-kill-word', mode='command') -# config.bind('', 'rl-kill-word', mode='command') -# config.bind('', 'rl-forward-word', mode='command') -# config.bind('', 'rl-delete-char', mode='command') -# config.bind('', 'rl-beginning-of-line', mode='command') -# config.bind('', 'rl-backward-char', mode='command') -# config.bind('', 'completion-item-del', mode='command') -# config.bind('', 'rl-end-of-line', mode='command') -# config.bind('', 'rl-forward-char', mode='command') -config.bind('', 'rl-backward-word', mode='command') -config.bind('', 'rl-forward-word', mode='command') -# config.bind('', 'rl-backward-delete-char', mode='command') -# config.bind('', 'rl-kill-line', mode='command') -# config.bind('', 'command-history-next', mode='command') -# config.bind('', 'command-history-prev', mode='command') -# config.bind('', 'completion-item-focus prev-category', mode='command') -# config.bind('', 'completion-item-focus next-category', mode='command') -# config.bind('', 'rl-unix-line-discard', mode='command') -# config.bind('', 'rl-unix-word-rubout', mode='command') -# config.bind('', 'rl-yank', mode='command') -# config.bind('', 'command-history-next', mode='command') -# config.bind('', 'leave-mode', mode='command') -# config.bind('', 'command-accept', mode='command') -# config.bind('', 'completion-item-del', mode='command') -# config.bind('', 'completion-item-focus prev', mode='command') -# config.bind('', 'completion-item-focus next', mode='command') -# config.bind('', 'command-history-prev', mode='command') - -## Bindings for hint mode -# config.bind('', 'hint all tab-bg', mode='hint') -# config.bind('', 'hint links', mode='hint') -# config.bind('', 'hint --rapid links tab-bg', mode='hint') -# config.bind('', 'mode-leave', mode='hint') -# config.bind('', 'follow-hint', mode='hint') - -## Bindings for insert mode -# config.bind('', 'open-editor', mode='insert') -# config.bind('', 'leave-mode', mode='insert') -# config.bind('', 'insert-text {primary}', mode='insert') - -## Bindings for passthrough mode -# config.bind('', 'leave-mode', mode='passthrough') - -## Bindings for prompt mode -# config.bind('', 'rl-backward-word', mode='prompt') -# config.bind('', 'rl-backward-kill-word', mode='prompt') -# config.bind('', 'rl-kill-word', mode='prompt') -# config.bind('', 'rl-forward-word', mode='prompt') -# config.bind('', 'rl-delete-char', mode='prompt') -# config.bind('', 'rl-beginning-of-line', mode='prompt') -# config.bind('', 'rl-backward-char', mode='prompt') -# config.bind('', 'rl-end-of-line', mode='prompt') -# config.bind('', 'rl-forward-char', mode='prompt') -config.bind('', 'rl-backward-word', mode='prompt') -config.bind('', 'rl-forward-word', mode='prompt') -# config.bind('', 'rl-backward-delete-char', mode='prompt') -# config.bind('', 'rl-kill-line', mode='prompt') -# config.bind('', 'rl-unix-line-discard', mode='prompt') -# config.bind('', 'rl-unix-word-rubout', mode='prompt') -# config.bind('', 'prompt-open-download', mode='prompt') -# config.bind('', 'rl-yank', mode='prompt') -# config.bind('', 'prompt-item-focus next', mode='prompt') -# config.bind('', 'leave-mode', mode='prompt') -# config.bind('', 'prompt-accept', mode='prompt') -# config.bind('', 'prompt-item-focus prev', mode='prompt') -# config.bind('', 'prompt-item-focus next', mode='prompt') -# config.bind('', 'prompt-item-focus prev', mode='prompt') -# config.bind('n', 'prompt-accept no', mode='prompt') -# config.bind('y', 'prompt-accept yes', mode='prompt') - -## Bindings for register mode -# config.bind('', 'leave-mode', mode='register') - -## Per-domain settings -c.content.user_stylesheets = glob.glob(os.path.expanduser('~/.local/share/qutebrowser/userstyles.css')) - - -## Load theme -for path in glob.glob(os.path.expanduser('~/.config/qutebrowser/extra/*.py')): - config.source(path) diff --git a/config/qutebrowser/greasemonkey/let-there-be-light.user.js b/config/qutebrowser/greasemonkey/let-there-be-light.user.js deleted file mode 100644 index 4f306856..00000000 --- a/config/qutebrowser/greasemonkey/let-there-be-light.user.js +++ /dev/null @@ -1,23 +0,0 @@ -// ==UserScript== -// @name Let there be Light -// @description Change page background to white. -// @version 0.1 -// @author Ingvix -// @include * -// ==/UserScript== - -// Needed to counterbalance my colors.webpage.bg hack to prevent the blinding -// flash of white between page loads. -(function () { - 'use strict'; - - function _bg(element) { - return window.getComputedStyle(element).backgroundColor; - } - - if (_bg(document.documentElement) === "rgba(0, 0, 0, 0)" && - _bg(document.body) === "rgba(0, 0, 0, 0)") { - var sheet = window.document.styleSheets[0]; - sheet.insertRule('body { background-color: white; }', sheet.cssRules.length); - } -})(); diff --git a/config/qutebrowser/greasemonkey/per-domain-stylesheets.user.js b/config/qutebrowser/greasemonkey/per-domain-stylesheets.user.js deleted file mode 100644 index 8f2f54c6..00000000 --- a/config/qutebrowser/greasemonkey/per-domain-stylesheets.user.js +++ /dev/null @@ -1,21 +0,0 @@ -// ==UserScript== -// @name DomainStyles -// @namespace https://github.com/hlissner -// @description Make it possible to use per-domain stylesheets. -// @include * -// @run-at document-start -// @version 1 -// @author Henrik Lissner -// ==/UserScript== - -(function () { - 'use strict'; - - document.addEventListener('readystatechange', function onReadyStateChange() { - if (document.readyState == 'interactive') { - const doc = document.documentElement; - doc.setAttribute('qb-url', window.location.href); - doc.setAttribute('qb-domain', window.location.host); - } - }); -})(); diff --git a/config/stumpwm/config b/config/stumpwm/config deleted file mode 100644 index ed0213ef..00000000 --- a/config/stumpwm/config +++ /dev/null @@ -1,124 +0,0 @@ -;; -*- lisp -*- -;; -;; Author: Henrik Lissner -;; URL: https://github.com/hlissner/doom-emacs -;; -;;; -(in-package :stumpwm) -;; (swank:create-server -;; :dont-close t -;; :port swank::default-server-port) - -;;; -(defvar *config-dir* "~/.config/dotfiles/config/stumpwm") - -(defcommand reload-dotfiles () () - (load (concat *config-dir* "/config")) - (message "Config reloaded")) -(define-key *top-map* (kbd "s-r") "reload-dotfiles") - -;; (load (concat *config-dir* "/core/core.lisp")) - - -(defun show-key-seq (key seq val) - (message (print-key-seq (reverse seq)))) -(add-hook *key-press-hook* 'show-key-seq) - - -;;; Config -(setf *mouse-focus-policy* :click) -(set-font "-CTDB-Fira Sans-normal-normal-normal-*-12-*-*-*-m-0-iso10646-1") - - -;;; Keybinds -(set-prefix-key (kbd "C-z")) -(define-key *top-map* (kbd "C-RET") "exec urxvt") - -(let ((map *top-map*)) - ;; (gnew "a") - ;; (gnew "b") - ;; (gnew "c") - (dotimes (i 9) - (define-key map (kbd (format nil "s-~D" i)) - (format nil "gselect ~D" i)) - (define-key map (kbd (format nil "s-S-~D" i)) - (format nil "gmove ~D" i)))) - -;; Window management -(define-key *top-map* (kbd "s-f") "float-this") -(define-key *top-map* (kbd "s-F") "unfloat-this") - -(define-key *top-map* (kbd "s-h") "move-focus left") -(define-key *top-map* (kbd "s-j") "move-focus down") -(define-key *top-map* (kbd "s-k") "move-focus up") -(define-key *top-map* (kbd "s-l") "move-focus right") - -(define-key *top-map* (kbd "s-H") "move-window left") -(define-key *top-map* (kbd "s-J") "move-window down") -(define-key *top-map* (kbd "s-K") "move-window up") -(define-key *top-map* (kbd "s-L") "move-window right") - -(define-key *top-map* (kbd "s-RET") "exec xst") -(define-key *top-map* (kbd "s-SPC") "exec rofi/appmenu") - -(define-key *top-map* (kbd "s-TAB") "next-in-frame") -(define-key *top-map* (kbd "s-ISO_Left_Tab") "prev-in-frame") - -(define-key *top-map* (kbd "s-`") "exec scratch") - - -(defvar *window-manipulation-map* (make-sparse-keymap)) - -(defcommand kill-or-delete-window () () - (and (delete-window) - (remove-split))) - -(define-key *top-map* (kbd "s-q") "delete-window") -(define-key *top-map* (kbd "s-Q") "kill-or-delete-window") -(define-key *top-map* (kbd "s-w") *window-manipulation-map*) -(let ((map *window-manipulation-map*)) - (define-key map (kbd "s-c") "remove-split") - (define-key map (kbd "s-s") "hsplit") - (define-key map (kbd "s-v") "vsplit")) - - -;;; Modeline -(setf *bar-med-color* "^B^3") -(setf *bar-hi-color* "^B^3") -(setf *bar-crit-color* "^B^1") - -(setf *colors* - '("#101216" ; fg - "#f9a03f" ; orange - "#8BD49C" ; green - "#8abeb7" ; cyan - "#5EC4FF" ; blue - "#cc6666" ; red - "#E27E8D" ; magenta - "#f0c674" ; yellow - )) - -(update-color-map (current-screen)) - -(setf *group-format* " %t ") -(setf *window-format* "%m%s%20t ") -(setf *mode-line-timeout* 1) - -(setf *time-modeline-string* "^B^3 %e %b %H:%M ^n") - -(set-focus-color (elt *colors* 6)) -(set-unfocus-color (elt *colors* 0)) - -(setf *screen-mode-line-format* - (list "^B^3%g ^n^b %W ^> " - "  %B  %d" - )) - -(setf *mode-line-border-width* 0) -(setf *mode-line-pad-x* 0) -(setf *mode-line-pad-y* 0) -(setf *mode-line-background-color* (elt *colors* 0)) -(setf *mode-line-foreground-color* (elt *colors* 1)) - -(unless (head-mode-line (current-head)) - (toggle-mode-line (current-screen) (current-head))) diff --git a/config/sxhkd/sxhkdrc b/config/sxhkd/sxhkdrc deleted file mode 100644 index d9acf138..00000000 --- a/config/sxhkd/sxhkdrc +++ /dev/null @@ -1,129 +0,0 @@ -super + alt + Escape - bspc quit - -super + {_,shift + }q - bspc node -{c,k} - -super + t - bspc desktop -l next - -super + apostrophe - bspc window -s last - -# Attach to a detached session. If none is available create a new one, rather -# than attach to one that is already attached to elsewhere. -super + Return - kitty - -ctrl + super + Return - xst -e bash -c "(tmux ls | grep -qEv 'attached|scratch' && tmux at) || tmux" - -# Open a disposable, floating terminal window, for quick shell commands. -super + grave - scratch - -# Open a disposable scratch buffer in a floating Emacs window, to run arbitrary -# code or quickly note something down. -super + shift + grave - emacsclient --eval "(open-scratch-frame)" - -# Invoke emacs-everywhere at point. -super + e - emacsclient --eval "(emacs-everywhere)" - -super + space - $DOTFILES_BIN/rofi/appmenu - -super + Tab - $DOTFILES_BIN/rofi/windowmenu - -super + p - $DOTFILES_BIN/rofi/bwmenu - -super + shift + p - $DOTFILES_BIN/rofi/bwmenu -r - -super + slash - $DOTFILES_BIN/rofi/filemenu -x - -super + Escape - pkill -USR1 -x sxhkd - - -# -## - -## Toggle floating/fullscreen -super + {_,ctrl + }f - bspc node -t ~{floating,fullscreen} - - -super + {_,ctrl +}{h,j,k,l} - $DOTFILES_BIN/bspwm/focus {_,-m }{west,south,north,east} - -super + shift + {_,ctrl +}{h,j,k,l} - $DOTFILES_BIN/bspwm/swap {_,-m }{west,south,north,east} - -## Resize by preselection -super + alt + {1-9} - $DOTFILES/bin/bspwm/presel 0.{1-9} - -super + alt + {h,j,k,l} - bspc node -p {west,south,north,east} - -super + alt + Return - $DOTFILES/bin/bspwm/subtract-presel - -super + alt + Delete - bspc node -p cancel - -super + {_,shift +}{1-9,0} - bspc {desktop -f,node -d} {1-9,10}; - -# expand a window by moving one of its side outward -super + {Left,Down,Up,Right} - bspc node -z {left -40 0,bottom 0 40,top 0 -40,right 40 0} - -# contract a window by moving one of its side inward -super + ctrl + {Left,Down,Up,Right} - bspc node -z {right -40 0,top 0 40,bottom 0 -40,left 40 0} - -# move a floating window -super + shift + {Left,Down,Up,Right} - bspc node -v {-40 0,0 40,0 -40,40 0} - - -# -## Media keys - -# screenshot region -Print - scrcap -# screencast region to mp4 -super + Print - scrrec -s ~/recordings/$(date +%F-%T).mp4 -# screencast region to gif -super + ctrl + Print - scrrec -s ~/recordings/$(date +%F-%T).gif - -XF86MonBrightnessUp - light -A 5 -XF86MonBrightnessDown - light -U 5 - -XF86AudioMute - amixer -q set Master toggle -XF86AudioLowerVolume - amixer -q set Master 10%- unmute -XF86AudioRaiseVolume - amixer -q set Master 10%+ unmute - -XF86Audio{Play,Pause} - spt-send toggle -XF86AudioNext - spt-send next -XF86AudioPrev - spt-send prev - -# X86Search - diff --git a/config/tmux/aliases.zsh b/config/tmux/aliases.zsh deleted file mode 100644 index 4480414c..00000000 --- a/config/tmux/aliases.zsh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env zsh - -alias ta='tmux attach' -alias tl='tmux ls' - -if [[ -n $TMUX ]]; then # From inside tmux - alias tf='tmux find-window' - # Detach all other clients to this session - alias mine='tmux detach -a' - # Send command to other tmux window - tt() { - tmux send-keys -t .+ C-u && \ - tmux set-buffer "$*" && \ - tmux paste-buffer -t .+ && \ - tmux send-keys -t .+ Enter; - } - # Create new session (from inside one) - tn() { - local name="${1:-`basename $PWD`}" - TMUX= tmux new-session -d -s "$name" - tmux switch-client -t "$name" - tmux display-message "Session #S created" - } -else # From outside tmux - # Start grouped session so I can be in two different windows in one session - tdup() { tmux new-session -t "${1:-`tmux display-message -p '#S'`}"; } -fi diff --git a/config/tmux/swap-pane.sh b/config/tmux/swap-pane.sh deleted file mode 100755 index f5a6e989..00000000 --- a/config/tmux/swap-pane.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash -CONF="$TMUX_PLUGINS_PATH/lastpane" -swap() { tmux swap-pane -s"$1" -t"$2"; } - -target= -case $1 in - up) target="U" ;; - down) target="D" ;; - left) target="L" ;; - right) target="R" ;; - master) target="M" ;; - *) exit 1 ;; -esac - -src_pane=$(tmux display-message -p "#P") -tmux select-pane -${target} - -dst_pane=$(tmux display-message -p "#P") -tmux select-pane -${src_pane} - -[[ "$target" == M ]] && dst_pane=0 -swap "$src_pane" "$dst_pane" -tmux select-pane -t"$dst_pane" diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf deleted file mode 100644 index 82412e2a..00000000 --- a/config/tmux/tmux.conf +++ /dev/null @@ -1,124 +0,0 @@ -# tmux.conf -# By Henrik Lissner -# https://github.com/hlissner/dotfiles -######################################## - -set -g default-terminal "xterm-256color" - -new-session # spawn session if attaching when none are running - -setw -g automatic-rename on # rename window after current program -set -g renumber-windows on # renumber windows when one is closed -# Zero-based indexing is fine in programming languages, but not so much in a -# multiplexer when zero is on the other side of the keyboard. -set -g base-index 1 -setw -g pane-base-index 1 -# display tmux messages longer -set -g display-time 1500 -set -g display-panes-time 800 -# Address vim-mode switching delay (http://superuser.com/a/252717/65504) -set -s escape-time 0 -set -sg repeat-time 600 -set -g history-limit 10000 -# Rather than constraining window size to the maximum size of any client -# connected to the *session*, constrain window size to the maximum size of any -# client connected to *that window*. Much more reasonable. -setw -g aggressive-resize off -# For terminals that support them, propagate these events to programs that -# understand them. -set -s focus-events on -# Enable mouse + mouse wheel -set -g mouse on - -######################################## -# Keybinds # -######################################## - -# Rebind prefix to C-c. Press twice to send literal C-c. -unbind C-b -set -g prefix C-c -bind C-c send-prefix - -# Vi-style keybinds -set -g status-keys vi -set -g mode-keys vi - -bind c new-window -c "#{pane_current_path}" -bind v split-window -h -c "#{pane_current_path}" -bind s split-window -v -c "#{pane_current_path}" - -bind h select-pane -L -bind j select-pane -D -bind k select-pane -U -bind l select-pane -R -bind H run '$TMUX_HOME/swap-pane.sh left' -bind J run '$TMUX_HOME/swap-pane.sh down' -bind K run '$TMUX_HOME/swap-pane.sh up' -bind L run '$TMUX_HOME/swap-pane.sh right' -bind M run '$TMUX_HOME/swap-pane.sh master' - -bind o resize-pane -Z -bind S choose-session -bind W choose-window -bind / choose-session -bind . choose-window - -# bind = select-layout tiled -bind | select-layout even-horizontal -bind _ select-layout even-vertical - -# Disable confirmation -bind x kill-pane -bind X kill-window -bind q kill-session -bind Q kill-server - -# Smart pane switching with awareness of vim splits -# See: https://github.com/christoomey/vim-tmux-navigator -is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?x?)(diff)?$"' -bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L" -bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D" -bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U" -bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R" -bind -n C-\\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l" -bind C-w last-pane -bind C-n next-window -bind C-p previous-window - -# break pane into a window -bind = select-layout even-vertical -bind + select-layout even-horizontal -bind - break-pane -bind _ join-pane - -# reload config without killing server -bind r source-file $DOTFILES/config/tmux/tmux.conf \; display-message " Config reloaded..". -bind ^r refresh-client - - -######################################## -# Copy mode # -######################################## - -bind Enter copy-mode # enter copy mode -bind b list-buffers # list paster buffers -bind B choose-buffer # choose which buffer to paste from -bind p paste-buffer # paste from the top paste buffer -bind P run "xclip -selection clipboard -o | tmux load-buffer - ; tmux paste-buffer" - -bind -T copy-mode-vi v send-keys -X begin-selection -bind -T copy-mode-vi C-v send-keys -X rectangle-toggle -bind -T copy-mode-vi Escape send-keys -X cancel -bind -T copy-mode-vi C-g send-keys -X cancel -bind -T copy-mode-vi H send-keys -X start-of-line -bind -T copy-mode-vi L send-keys -X end-of-line - - -######################################## -# Local config # -######################################## -set -g @open-editor 'C-e' -set -g @open-S 'https://www.duckduckgo.com/' - -source $TMUX_HOME/extraInit -if '[ -f ~/.tmux.conf ]' 'source ~/.tmux.conf' diff --git a/config/zsh/.zshenv b/config/zsh/.zshenv deleted file mode 100644 index 430d11c3..00000000 --- a/config/zsh/.zshenv +++ /dev/null @@ -1,5 +0,0 @@ -## Auto-generated by my nix config -[ -f "${0:a:h}/extra.zshenv" ] && source "${0:a:h}/extra.zshenv" - -# If you have host-local configuration, this is where you'd put it -[ -f ~/.zshenv ] && source ~/.zshenv diff --git a/config/zsh/.zshrc b/config/zsh/.zshrc deleted file mode 100644 index a14a06da..00000000 --- a/config/zsh/.zshrc +++ /dev/null @@ -1,51 +0,0 @@ -[ -d "$ZGEN_DIR" ] || git clone https://github.com/tarjoilija/zgen "$ZGEN_DIR" -source $ZGEN_SOURCE -if ! zgen saved; then - echo "Initializing zgen" - zgen load hlissner/zsh-autopair autopair.zsh - zgen load zsh-users/zsh-history-substring-search - zgen load zdharma/history-search-multi-word - zgen load zsh-users/zsh-completions src - zgen load junegunn/fzf shell - [ -z "$SSH_CONNECTION" ] && zgen load zdharma/fast-syntax-highlighting - zgen save -fi - -source $ZDOTDIR/config.zsh -if [[ $TERM != dumb ]]; then - source $ZDOTDIR/keybinds.zsh - source $ZDOTDIR/completion.zsh - source $ZDOTDIR/aliases.zsh - - ## - function _cache { - command -v "$1" >/dev/null || return 1 - local cache_dir="$XDG_CACHE_HOME/${SHELL##*/}" - local cache="$cache_dir/$1" - if [[ ! -f $cache || ! -s $cache ]]; then - echo "Caching $1" - mkdir -p $cache_dir - "$@" >$cache - fi - source $cache || rm -f $cache - } - - # fd > find - if command -v fd >/dev/null; then - export FZF_DEFAULT_OPTS="--reverse --ansi" - export FZF_DEFAULT_COMMAND="fd ." - export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" - export FZF_ALT_C_COMMAND="fd -t d . $HOME" - fi - _cache fasd --init posix-alias zsh-{hook,{c,w}comp{,-install}} - - ## Auto-generated by my nix config - source $ZDOTDIR/extra.zshrc - - ## - autoload -Uz compinit && compinit -u -d $ZSH_CACHE/zcompdump - autopair-init - - # If you have host-local configuration, this is where you'd put it - [ -f ~/.zshrc ] && source ~/.zshrc -fi diff --git a/config/zsh/aliases.zsh b/config/zsh/aliases.zsh deleted file mode 100644 index 060b08f6..00000000 --- a/config/zsh/aliases.zsh +++ /dev/null @@ -1,74 +0,0 @@ -alias ..='cd ..' -alias ...='cd ../..' -alias ....='cd ../../..' -alias -- -='cd -' -alias cdg='cd `git rev-parse --show-toplevel`' - -alias q=exit -alias clr=clear -alias sudo='sudo ' -alias rm='rm -i' -alias cp='cp -i' -alias mv='mv -i' -alias mkdir='mkdir -pv' -alias wget='wget -c' -alias path='echo -e ${PATH//:/\\n}' -alias ports='netstat -tulanp' - -alias mk=make -alias gurl='curl --compressed' - -alias shutdown='sudo shutdown' -alias reboot='sudo reboot' - -# An rsync that respects gitignore -rcp() { - # -a = -rlptgoD - # -r = recursive - # -l = copy symlinks as symlinks - # -p = preserve permissions - # -t = preserve mtimes - # -g = preserve owning group - # -o = preserve owner - # -z = use compression - # -P = show progress on transferred file - # -J = don't touch mtimes on symlinks (always errors) - rsync -azPJ \ - --include=.git/ \ - --filter=':- .gitignore' \ - --filter=":- $XDG_CONFIG_HOME/git/ignore" \ - "$@" -}; compdef rcp=rsync -alias rcpd='rcp --delete --delete-after' -alias rcpu='rcp --chmod=go=' -alias rcpdu='rcpd --chmod=go=' - -alias y='xclip -selection clipboard -in' -alias p='xclip -selection clipboard -out' - -alias jc='journalctl -xe' -alias sc=systemctl -alias ssc='sudo systemctl' - -if command -v exa >/dev/null; then - alias exa="exa --group-directories-first --git"; - alias l="exa -1"; - alias ll="exa -lg"; - alias la="LC_COLLATE=C exa -la"; -fi - -autoload -U zmv - -take() { - mkdir "$1" && cd "$1"; -}; compdef take=mkdir - -zman() { - PAGER="less -g -I -s '+/^ "$1"'" man zshall; -} - -# Create a reminder with human-readable durations, e.g. 15m, 1h, 40s, etc -r() { - local time=$1; shift - sched "$time" "notify-send --urgency=critical 'Reminder' '$@'; ding"; -}; compdef r=sched diff --git a/config/zsh/completion.zsh b/config/zsh/completion.zsh deleted file mode 100644 index d3b47639..00000000 --- a/config/zsh/completion.zsh +++ /dev/null @@ -1,174 +0,0 @@ -fpath+=( $ZDOTDIR/completions ) - -## Options -setopt COMPLETE_IN_WORD # Complete from both ends of a word. -setopt PATH_DIRS # Perform path search even on command names with slashes. -setopt AUTO_MENU # Show completion menu on a successive tab press. -setopt AUTO_LIST # Automatically list choices on ambiguous completion. -setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash. -setopt AUTO_PARAM_KEYS -setopt FLOW_CONTROL # Disable start/stop characters in shell editor. -unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. -unsetopt COMPLETE_ALIASES # Completion for aliases -unsetopt ALWAYS_TO_END # Move cursor to the end of a completed word. -unsetopt CASE_GLOB - -# Use caching to make completion for commands such as dpkg and apt usable. -zstyle ':completion::complete:*' use-cache on -zstyle ':completion::complete:*' cache-path "$ZSH_CACHE/zcompcache" - -# Case-insensitive (all), partial-word, and then substring completion. -zstyle ':completion:*' matcher-list '' \ - 'm:{a-z\-}={A-Z\_}' \ - 'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \ - 'r:[[:ascii:]]||[[:ascii:]]=** r:|=* m:{a-z\-}={A-Z\_}' - -# Group matches and describe. -zstyle ':completion:*:*:*:*:*' menu select -zstyle ':completion:*:matches' group 'yes' -zstyle ':completion:*:options' description 'yes' -zstyle ':completion:*:options' auto-description '%d' -zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f' -zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f' -zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f' -zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f' -zstyle ':completion:*:default' list-prompt '%S%M matches%s' -zstyle ':completion:*' format ' %F{yellow}-- %d --%f' -zstyle ':completion:*' group-name '' -zstyle ':completion:*' verbose yes - -# Fuzzy match mistyped completions. -zstyle ':completion:*' completer _complete _list _match _approximate -zstyle ':completion:*:match:*' original only -zstyle ':completion:*:approximate:*' max-errors 1 numeric - -# Increase the number of errors based on the length of the typed word. -zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))numeric)' - -# Don't complete unavailable commands. -zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))' - -# Array completion element sorting. -zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters - -# Directories -zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} -zstyle ':completion:*:*:cd:*' ignore-parents parent pwd -zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories -zstyle ':completion:*:*:cd:*:directory-stack' menu yes select -zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand' -zstyle ':completion:*' squeeze-slashes true -zstyle ':completion:*' special-dirs true - -# History -zstyle ':completion:*:history-words' stop yes -zstyle ':completion:*:history-words' remove-all-dups yes -zstyle ':completion:*:history-words' list false -zstyle ':completion:*:history-words' menu yes - -# Environmental Variables -zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-} - -# Populate hostname completion. -zstyle -e ':completion:*:hosts' hosts 'reply=( - ${=${=${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) 2>/dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ } - ${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2>/dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}} -)' - -# Don't complete uninteresting users... -zstyle ':completion:*:*:*:users' ignored-patterns \ - adm amanda apache avahi beaglidx bin cacti canna clamav daemon \ - dbus distcache dovecot fax ftp games gdm gkrellmd gopher \ - hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \ - mailman mailnull mldonkey mysql nagios \ - named netdump news nfsnobody nobody nscd ntp nut nx openvpn \ - operator pcap postfix postgres privoxy pulse pvm quagga radvd \ - rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*' - -# ... unless we really want to. -zstyle '*' single-ignored show - -# Ignore multiple entries. -zstyle ':completion:*:(rm|kill|diff):*' ignore-line other -zstyle ':completion:*:rm:*' file-patterns '*:all-files' - -# Kill -zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w' -zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01' -zstyle ':completion:*:*:kill:*' menu yes select -zstyle ':completion:*:*:kill:*' force-list always -zstyle ':completion:*:*:kill:*' insert-ids single - -# Man -zstyle ':completion:*:manuals' separate-sections true -zstyle ':completion:*:manuals.(^1*)' insert-sections true - -# Media Players -zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' -zstyle ':completion:*:*:mpg321:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' -zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG|flac):ogg\ files *(-/):directories' -zstyle ':completion:*:*:mocp:*' file-patterns '*.(wav|WAV|mp3|MP3|ogg|OGG|flac):ogg\ files *(-/):directories' - -# SSH/SCP/RSYNC -zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' -zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr -zstyle ':completion:*:ssh:*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *' -zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr -zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost -zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*' -zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*' - -# fzf -if command -v fzf >/dev/null; then - # fuzzy completion with 'z' when called without args - unalias z 2> /dev/null - z() { - [ $# -gt 0 ] && _z "$*" && return - cd "$(_z -l 2>&1 | fzf --height 40% --nth 2.. --reverse --inline-info +s --tac --query "${*##-* }" | sed 's/^[0-9,.]* *//')" - } - - __git_log () { - # format str implies: - # --abbrev-commit - # --decorate - git log \ - --color=always \ - --graph \ - --all \ - --date=short \ - --format="%C(bold blue)%h%C(reset) %C(green)%ad%C(reset) | %C(white)%s %C(red)[%an] %C(bold yellow)%d" - } - - _fzf_complete_git() { - ARGS="$@" - - # these are commands I commonly call on commit hashes. - # cp->cherry-pick, co->checkout - - if [[ $ARGS == 'git cp'* || \ - $ARGS == 'git cherry-pick'* || \ - $ARGS == 'git co'* || \ - $ARGS == 'git checkout'* || \ - $ARGS == 'git reset'* || \ - $ARGS == 'git show'* || \ - $ARGS == 'git log'* ]]; then - _fzf_complete "--reverse --multi" "$@" < <(__git_log) - else - eval "zle ${fzf_default_completion:-expand-or-complete}" - fi - } - - _fzf_complete_git_post() { - sed -e 's/^[^a-z0-9]*//' | awk '{print $1}' - } - - # pass completion suggested by @d4ndo (#362) (slightly modified) - _fzf_complete_pass() { - _fzf_complete '+m' "$@" < <( - local pwdir=${PASSWORD_STORE_DIR-~/.password-store/} - find "$pwdir" -name "*.gpg" -print | - sed -e "s#${pwdir}/\{0,1\}##" | - sed -e 's/\(.*\)\.gpg/\1/' - ) - } -fi diff --git a/config/zsh/completions/_hey b/config/zsh/completions/_hey deleted file mode 100755 index fe091bf4..00000000 --- a/config/zsh/completions/_hey +++ /dev/null @@ -1,36 +0,0 @@ -#compdef hey - -_hey_dispatch () { - local cmd="$@" - local offset=$# - CURRENT=$((CURRENT-$offset)) - words=($cmd "${words[$((2 + offset)),-1]}") - _$cmd -} - -_hey_command_list () { - hey | sed '1,/Available commands:/d' | awk '{ print $1 }' -} - -_hey () { - local -a commands - IFS=$'\n' commands=($(_hey_command_list)) - - if (( CURRENT == 2 )); then - _describe -t commands "hey commands" commands - return - fi - integer ret=1 - case ${words[2]} in - ch|channel) _hey_dispatch nix-channel ;; - b|build) _hey_dispatch nix-build ;; - ch|check) _hey_dispatch nix flake check ;; - sh|show) _hey_dispatch nix flake show ;; - s|search) _hey_dispatch nix search nixpkgs ;; - -*) _hey_dispatch nix-env ;; - *) _message "Command not found: ${words[2]}" ;; - esac - return ret -} - -_hey diff --git a/config/zsh/config.zsh b/config/zsh/config.zsh deleted file mode 100644 index 048e8470..00000000 --- a/config/zsh/config.zsh +++ /dev/null @@ -1,64 +0,0 @@ -# Stop TRAMP (in Emacs) from hanging or term/shell from echoing back commands -if [[ $TERM == dumb || -n $INSIDE_EMACS ]]; then - unsetopt zle prompt_cr prompt_subst - whence -w precmd >/dev/null && unfunction precmd - whence -w preexec >/dev/null && unfunction preexec - PS1='$ ' -fi - -## General -export _FASD_DATA="$XDG_CACHE_HOME/fasd" -export _FASD_VIMINFO="$XDG_CACHE_HOME/viminfo" - -# Treat these characters as part of a word. -WORDCHARS='_-*?[]~&.;!#$%^(){}<>' - -unsetopt BRACE_CCL # Allow brace character class list expansion. -setopt COMBINING_CHARS # Combine zero-length punc chars (accents) with base char -setopt RC_QUOTES # Allow 'Henry''s Garage' instead of 'Henry'\''s Garage' -setopt HASH_LIST_ALL -unsetopt CORRECT_ALL -unsetopt NOMATCH -unsetopt MAIL_WARNING # Don't print a warning message if a mail file has been accessed. -unsetopt BEEP # Hush now, quiet now. -setopt IGNOREEOF - -## Jobs -setopt LONG_LIST_JOBS # List jobs in the long format by default. -setopt AUTO_RESUME # Attempt to resume existing job before creating a new process. -setopt NOTIFY # Report status of background jobs immediately. -unsetopt BG_NICE # Don't run all background jobs at a lower priority. -unsetopt HUP # Don't kill jobs on shell exit. -unsetopt CHECK_JOBS # Don't report on jobs when shell exit. - -## History -HISTFILE="$XDG_CACHE_HOME/zhistory" -HISTSIZE=1000 # Max events to store in internal history. -SAVEHIST=1000 # Max events to store in history file. - -setopt BANG_HIST # Don't treat '!' specially during expansion. -setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. -setopt APPEND_HISTORY # Appends history to history file on exit -setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. -setopt SHARE_HISTORY # Share history between all sessions. -setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history. -setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again. -setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate. -setopt HIST_FIND_NO_DUPS # Do not display a previously found event. -setopt HIST_IGNORE_SPACE # Do not record an event starting with a space. -setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file. -setopt HIST_VERIFY # Do not execute immediately upon history expansion. -setopt HIST_BEEP # Beep when accessing non-existent history. - -## Directories -DIRSTACKSIZE=9 -setopt AUTO_CD # Auto changes to a directory without typing cd. -setopt AUTO_PUSHD # Push the old directory onto the stack on cd. -setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack. -setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd. -setopt PUSHD_TO_HOME # Push to home directory when no argument is given. -setopt CDABLE_VARS # Change directory to a path stored in a variable. -setopt MULTIOS # Write to multiple descriptors. -setopt EXTENDED_GLOB # Use extended globbing syntax. -unsetopt GLOB_DOTS -unsetopt AUTO_NAME_DIRS # Don't add variable-stored paths to ~ list diff --git a/config/zsh/keybinds.zsh b/config/zsh/keybinds.zsh deleted file mode 100644 index 645e0f6d..00000000 --- a/config/zsh/keybinds.zsh +++ /dev/null @@ -1,127 +0,0 @@ -# The surround module wasn't working if KEYTIMEOUT was <= 10. Specifically, -# (delete|change)-surround immediately abort into insert mode if KEYTIMEOUT <= -# 8. If <= 10, then add-surround does the same. At 11, all these issues vanish. -# Very strange! -export KEYTIMEOUT=15 - -autoload -U is-at-least - -## vi-mode ############### -bindkey -v -bindkey -M viins 'jk' vi-cmd-mode -bindkey -M viins ' ' magic-space -# bindkey -M viins '^I' expand-or-complete-prefix - -# surround -autoload -Uz surround -zle -N delete-surround surround -zle -N add-surround surround -zle -N change-surround surround -bindkey -a cs change-surround -bindkey -a ds delete-surround -bindkey -a ys add-surround - -# <5.0.8 doesn't have visual map -if is-at-least 5.0.8; then - bindkey -M visual S add-surround - - # add vimmish text-object support to zsh - 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 - 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 -fi - -# Open current prompt in external editor -autoload -Uz edit-command-line; zle -N edit-command-line -bindkey '^ ' edit-command-line - -bindkey -M viins '^n' history-substring-search-down -bindkey -M viins '^p' history-substring-search-up -bindkey -M viins '^s' history-incremental-pattern-search-backward -bindkey -M viins '^u' backward-kill-line -bindkey -M viins '^w' backward-kill-word -bindkey -M viins '^b' backward-word -bindkey -M viins '^f' forward-word -bindkey -M viins '^g' push-line-or-edit -bindkey -M viins '^a' beginning-of-line -bindkey -M viins '^e' end-of-line -bindkey -M viins '^d' push-line-or-edit - -bindkey -M vicmd '^k' kill-line -bindkey -M vicmd 'H' run-help - -# Shift + Tab -bindkey -M viins '^[[Z' reverse-menu-complete - -# bind UP and DOWN arrow keys -bindkey '^[[A' history-substring-search-up -bindkey '^[[B' history-substring-search-down - -# C-z to toggle current process (background/foreground) -fancy-ctrl-z () { - if [[ $#BUFFER -eq 0 ]]; then - BUFFER="fg" - zle accept-line - else - zle push-input - zle clear-screen - fi -} -zle -N fancy-ctrl-z -bindkey '^Z' fancy-ctrl-z - -# Omni-Completion -bindkey -M viins '^x^f' fasd-complete-f # C-x C-f to do fasd-complete-f (only files) -bindkey -M viins '^x^d' fasd-complete-d # C-x C-d to do fasd-complete-d (only directories) -# Completing words in buffer in tmux -if [ -n "$TMUX" ]; then - _tmux_pane_words() { - local expl - local -a w - if [[ -z "$TMUX_PANE" ]]; then - _message "not running inside tmux!" - return 1 - fi - w=( ${(u)=$(tmux capture-pane \; show-buffer \; delete-buffer)} ) - _wanted values expl 'words from current tmux pane' compadd -a w - } - - zle -C tmux-pane-words-prefix complete-word _generic - zle -C tmux-pane-words-anywhere complete-word _generic - - bindkey -M viins '^x^n' tmux-pane-words-prefix - bindkey -M viins '^x^o' tmux-pane-words-anywhere - - zstyle ':completion:tmux-pane-words-(prefix|anywhere):*' completer _tmux_pane_words - zstyle ':completion:tmux-pane-words-(prefix|anywhere):*' ignore-line current - zstyle ':completion:tmux-pane-words-anywhere:*' matcher-list 'b:=* m:{A-Za-z}={a-zA-Z}' -fi - -# Vim's C-x C-l in zsh -history-beginning-search-backward-then-append() { - zle history-beginning-search-backward - zle vi-add-eol -} -zle -N history-beginning-search-backward-then-append -bindkey -M viins '^x^l' history-beginning-search-backward-then-append - -# Fix the DEL key -bindkey -M vicmd "^[[3~" delete-char -bindkey "^[[3~" delete-char - -# Fix vimmish ESC -bindkey -sM vicmd '^[' '^G' -bindkey -rM viins '^X' -bindkey -M viins '^X,' _history-complete-newer \ - '^X/' _history-complete-older \ - '^X`' _bash_complete-word - diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 00000000..232ebc51 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,143 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ./common.nix + ./box.nix + ]; + + environment.systemPackages = [ pkgs.wpa_supplicant ]; + # Use the GRUB 2 boot loader. + boot.loader.efi.canTouchEfiVariables = false; + boot.loader.efi.efiSysMountPoint = "/boot/efi"; + boot.loader.grub = { + enable = true; + device = "nodev"; + version = 2; + efiSupport = true; + enableCryptodisk = true; + efiInstallAsRemovable = true; + }; + + boot.initrd.secrets = { + "/keyfile0.bin" = /etc/secrets/initrd/keyfile0.bin; + "/keyfile1.bin" = /etc/secrets/initrd/keyfile1.bin; + }; + + boot.initrd.luks.devices = { + "root" = { + #name = "root"; + device = "/dev/disk/by-uuid/f37f3222-47d7-42d8-b400-363320a31853"; # UUID for /dev/nvme01np2 + preLVM = true; + allowDiscards = true; + keyFile = "/keyfile0.bin"; + }; + }; + + # Data mount + fileSystems."/data" = { + device = "/dev/disk/by-uuid/3276a297-9ee4-4998-b262-1ed100366c06"; # UUID for /dev/mapper/crypted-data + encrypted = { + enable = true; + label = "crypted-data"; + blkDev = "/dev/disk/by-uuid/8a317bf4-fe13-4334-a6df-5fe5a5048b5e"; # UUID for /dev/sda1 + keyFile = "/keyfile1.bin"; + }; + }; + + # boot.loader.grub.efiInstallAsRemovable = true; + # boot.loader.efi.efiSysMountPoint = "/boot/efi"; + # Define on which hard drive you want to install Grub. + # boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only + + networking.hostName = "box"; # Define your hostname. + networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + # Per-interface useDHCP will be mandatory in the future, so this generated config + # replicates the default behaviour. + networking.useDHCP = false; + networking.interfaces.wlp3s0.useDHCP = true; + networking.interfaces.enp2s0.useDHCP = false; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + # i18n = { + # consoleFont = "Lat2-Terminus16"; + # consoleKeyMap = "us"; + # defaultLocale = "en_US.UTF-8"; + # }; + + # Set your time zone. + # time.timeZone = "Europe/Amsterdam"; + + # List packages installed in system profile. To search, run: + # $ nix search wget + # environment.systemPackages = with pkgs; [ + # wget vim + # ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { enable = true; enableSSHSupport = true; }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + services.openssh.permitRootLogin = "yes"; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + sound.enable = false; + # hardware.pulseaudio.enable = true; + + # Enable the X11 windowing system. + # services.xserver.enable = true; + # services.xserver.layout = "us"; + # services.xserver.xkbOptions = "eurosign:e"; + + # Enable touchpad support. + # services.xserver.libinput.enable = true; + + # Enable the KDE Desktop Environment. + # services.xserver.displayManager.sddm.enable = true; + # services.xserver.desktopManager.plasma5.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.anish = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + hashedPassword = "MO0Pbd2O4eIlA"; + openssh.authorizedKeys.keys = [" + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCeWQsf9rbE+KBrWLkLkg1PMKx0jPfDP8xyv+XtddIQzAskRTN+JSSQp1GpoRgfQij7bx6f6DfjkwSQK5NWDQNQ+klGhcdEwEdptWUzpRAvKHMImjyIwFHmRKKEgcfH8+DSHVM93nRSQKrLezX4PzPkHF9f3TLxFdGeQDeY0J2oP2Oa97hRtuTJZW9BwUojyvDYUbg7F3fxf+pdFCvIAFaayiLkhOYdTXnjLt1Ks6NOhSzM78ZibHv4pFYI9r6dhflkFP/SzyLeSSm1aVAtxqE7vF5HnnORAg0byDsiOv/9RXxiDx7gkAAw3xENDSpp9TRj54M7iz1OSsRMhmD6orHjZFIRejlE4DIn+PBPm3PH+U5ILKTogE6n5MfPT28V0QdtHuqq3b5tSWiDcFpnjxbIUmEIo5hLzMR0tXZoNLQhBCSNfxjE8CYzpk7mHbvhSs2GPfG+NI1vvldbw2EF8beJFQHNYTqJw8y7p8RXpCwZqqpSitJX6v9DiYdLVG1hWvE= nix-on-droid@localhost + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve + "]; + }; + + # This value determines the NixOS release with which your system is to be + # compatible, in order to avoid breaking some software such as database + # servers. You should change this only after NixOS release notes say you + # should. + system.stateVersion = "19.09"; # Did you read the comment? + +} + diff --git a/cron.nix b/cron.nix new file mode 100644 index 00000000..acb3d9d3 --- /dev/null +++ b/cron.nix @@ -0,0 +1,10 @@ +{ pkgs, lib, ... }: + +{ + services.cron = { + enable = true; + systemCronJobs = [ + "* */24 * * * * anish ~/get-music.sh" + ]; + }; +} diff --git a/default.nix b/default.nix deleted file mode 100644 index 24aa4e6e..00000000 --- a/default.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ inputs, config, lib, pkgs, ... }: - -with lib; -with lib.my; -{ - imports = - # I use home-manager to deploy files to $HOME; little else - [ inputs.home-manager.nixosModules.home-manager ] - # All my personal modules - ++ (mapModulesRec' (toString ./modules) import); - - # Common config for all nixos machines; and to ensure the flake operates - # soundly - environment.variables.DOTFILES = config.dotfiles.dir; - environment.variables.DOTFILES_BIN = config.dotfiles.binDir; - - # Configure nix and nixpkgs - environment.variables.NIXPKGS_ALLOW_UNFREE = "1"; - nix = - let filteredInputs = filterAttrs (n: _: n != "self") inputs; - nixPathInputs = mapAttrsToList (n: v: "${n}=${v}") filteredInputs; - registryInputs = mapAttrs (_: v: { flake = v; }) filteredInputs; - in { - package = pkgs.nixFlakes; - extraOptions = "experimental-features = nix-command flakes"; - nixPath = nixPathInputs ++ [ - "nixpkgs-overlays=${config.dotfiles.dir}/overlays" - "dotfiles=${config.dotfiles.dir}" - ]; - binaryCaches = [ - "https://nix-community.cachix.org" - ]; - binaryCachePublicKeys = [ - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; - registry = registryInputs // { dotfiles.flake = inputs.self; }; - autoOptimiseStore = true; - }; - system.configurationRevision = with inputs; mkIf (self ? rev) self.rev; - system.stateVersion = "21.05"; - - ## Some reasonable, global defaults - # This is here to appease 'nix flake check' for generic hosts with no - # hardware-configuration.nix or fileSystem config. - fileSystems."/".device = mkDefault "/dev/disk/by-label/nixos"; - - # Use the latest kernel - boot = { - kernelPackages = mkDefault pkgs.linuxPackages_5_12; - loader = { - efi.canTouchEfiVariables = mkDefault true; - systemd-boot.configurationLimit = 10; - systemd-boot.enable = mkDefault true; - }; - }; - - # Just the bear necessities... - environment.systemPackages = with pkgs; [ - bind - cached-nix-shell - git - vim - wget - gnumake - unzip - ]; -} diff --git a/dev.nix b/dev.nix new file mode 100644 index 00000000..18f33c16 --- /dev/null +++ b/dev.nix @@ -0,0 +1,10 @@ +{config, pkgs, ...}: + +{ + # Database + services.postgresql.enable = true; + + # Docker + virtualisation.docker.enable = true; + users.users."anish".extraGroups = [ "docker" ]; +} diff --git a/dns.nix b/dns.nix new file mode 100644 index 00000000..96800e0a --- /dev/null +++ b/dns.nix @@ -0,0 +1,16 @@ +{ config, pkgs, lib, ... }: +{ + services.dnsmasq.enable = true; + services.dnsmasq.extraConfig = '' + domain-needed + no-resolv + local=/lan/ + local=/moss/ + cache-size=5000 + addn-hosts=/ec/adblock.hosts + ''; + services.dnsmasq.servers = [ "45.90.30.49" "45.90.28.49" "1.1.1.1" "8.8.8.8" ]; + networking.hosts = {"192.168.1.240" = ["mossnet.lan" "links.mossnet.lan" "read.mossnet.lan" "stats.mossnet.lan" "music.moss" "tasks.moss" "headphones.moss" "cloud.moss" "links.moss" "read.moss" "stats.moss" "rss.moss"];}; + networking.firewall.allowedTCPPorts = [ 53 ]; + networking.firewall.allowedUDPPorts = [ 53 ]; +} diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 38860b6b..00000000 --- a/flake.lock +++ /dev/null @@ -1,117 +0,0 @@ -{ - "nodes": { - "agenix": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1626960455, - "narHash": "sha256-N3+qOtsADo59UcG8PxqNMhT94wqTQ73k08gpy1dLaWU=", - "owner": "ryantm", - "repo": "agenix", - "rev": "fb00f178b3a49a39cc964049075439b575d36d60", - "type": "github" - }, - "original": { - "owner": "ryantm", - "repo": "agenix", - "type": "github" - } - }, - "emacs-overlay": { - "locked": { - "lastModified": 1627320437, - "narHash": "sha256-1HGXjkm7kElz3VsGSciaQlZclUhyvfIXVl+FOooBTJo=", - "owner": "nix-community", - "repo": "emacs-overlay", - "rev": "9da066d11fbedda841cae9d06c5391e1ebd65801", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "emacs-overlay", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1627312560, - "narHash": "sha256-h2mpDJIu/rd4nZX4i5U1AFA/3MGXrmFRFy04FDxnvhE=", - "owner": "rycee", - "repo": "home-manager", - "rev": "f6f6990fc811454cb3082ba3662b711488fd0554", - "type": "github" - }, - "original": { - "owner": "rycee", - "ref": "master", - "repo": "home-manager", - "type": "github" - } - }, - "nixos-hardware": { - "locked": { - "lastModified": 1627212500, - "narHash": "sha256-KMUQCT3JSqznp+dR6BTvbwLqPFErjNlotVpkp/P/ZmM=", - "owner": "nixos", - "repo": "nixos-hardware", - "rev": "03e7686c72345f237405c0b46b153dccd3ec9913", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixos-hardware", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1627128856, - "narHash": "sha256-yw3lA8zyNFhj309lmxvNByEEymRT1rRy5oE+jEPnsP4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dd14e5d78e90a2ccd6007e569820de9b4861a6c2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-unstable", - "type": "indirect" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1627170405, - "narHash": "sha256-6t7ISnt0Iqc2jxIf5+/su6eFmZNWnPAOA1JeOv9lLRE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ecaf3da9340231e5493eccc3db87604a3705da42", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixpkgs-unstable", - "type": "indirect" - } - }, - "root": { - "inputs": { - "agenix": "agenix", - "emacs-overlay": "emacs-overlay", - "home-manager": "home-manager", - "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", - "nixpkgs-unstable": "nixpkgs-unstable" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 4154b202..00000000 --- a/flake.nix +++ /dev/null @@ -1,85 +0,0 @@ -# flake.nix --- the heart of my dotfiles -# -# Author: Henrik Lissner -# URL: https://github.com/hlissner/dotfiles -# License: MIT -# -# Welcome to ground zero. Where the whole flake gets set up and all its modules -# are loaded. - -{ - description = "A grossly incandescent nixos config."; - - inputs = - { - # Core dependencies. - nixpkgs.url = "nixpkgs/nixos-unstable"; # primary nixpkgs - nixpkgs-unstable.url = "nixpkgs/nixpkgs-unstable"; # for packages on the edge - home-manager.url = "github:rycee/home-manager/master"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - agenix.url = "github:ryantm/agenix"; - agenix.inputs.nixpkgs.follows = "nixpkgs"; - - # Extras - emacs-overlay.url = "github:nix-community/emacs-overlay"; - nixos-hardware.url = "github:nixos/nixos-hardware"; - }; - - outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, ... }: - let - inherit (lib.my) mapModules mapModulesRec mapHosts; - - system = "x86_64-linux"; - - mkPkgs = pkgs: extraOverlays: import pkgs { - inherit system; - config.allowUnfree = true; # forgive me Stallman senpai - overlays = extraOverlays ++ (lib.attrValues self.overlays); - }; - pkgs = mkPkgs nixpkgs [ self.overlay ]; - pkgs' = mkPkgs nixpkgs-unstable [ ]; - - lib = nixpkgs.lib.extend - (self: super: { my = import ./lib { inherit pkgs inputs; lib = self; }; }); - in { - lib = lib.my; - - overlay = - final: prev: { - unstable = pkgs'; - my = self.packages."${system}"; - }; - - overlays = - mapModules ./overlays import; - - packages."${system}" = - mapModules ./packages (p: pkgs.callPackage p {}); - - nixosModules = - { dotfiles = import ./.; } // mapModulesRec ./modules import; - - nixosConfigurations = - mapHosts ./hosts {}; - - devShell."${system}" = - import ./shell.nix { inherit pkgs; }; - - templates = { - full = { - path = ./.; - description = "A grossly incandescent nixos config"; - }; - minimal = { - path = ./templates/minimal; - description = "A grossly incandescent and minimal nixos config"; - }; - }; - defaultTemplate = self.templates.minimal; - - defaultApp."${system}" = { - type = "app"; - program = ./bin/hey; - }; - }; -} diff --git a/ftp.nix b/ftp.nix new file mode 100644 index 00000000..4b0da48a --- /dev/null +++ b/ftp.nix @@ -0,0 +1,20 @@ +{ pkgs, lib, ... }: + +{ + networking.firewall.allowedTCPPorts = [ 20 21 ]; + networking.firewall.allowedTCPPortRanges = [ { from = 51000; to = 51999; } ]; + services.vsftpd = { + enable = true; + writeEnable = true; + anonymousUser = true; + anonymousUserNoPassword = true; + anonymousUploadEnable = true; + anonymousMkdirEnable = true; + anonymousUserHome = "/home/ftp"; + extraConfig = '' + pasv_enable=Yes + pasv_min_port=51000 + pasv_max_port=51999 + ''; + }; +} diff --git a/gonic.nix b/gonic.nix new file mode 100644 index 00000000..11bed1f2 --- /dev/null +++ b/gonic.nix @@ -0,0 +1,12 @@ +{ config, lib, pkgs, ... }: +{ + services.gonic.enable = true; + services.gonic.settings = '' + music-path /data/music + podcast-path /data/music + cache-path /data/cache + ''; + services.gonic.group = "audio"; + services.gonic.user = "headphones"; + networking.firewall.allowedTCPPorts = [ 4747 ]; +} diff --git a/hosts/curve/hardware-configuration.nix b/hardware-configuration.nix similarity index 52% rename from hosts/curve/hardware-configuration.nix rename to hardware-configuration.nix index 9b8a0228..5a3f3976 100644 --- a/hosts/curve/hardware-configuration.nix +++ b/hardware-configuration.nix @@ -8,30 +8,30 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ "dm-snapshot" ]; - boot.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; fileSystems."/" = - { device = "/dev/disk/by-uuid/6ee9d430-1b1b-4e39-bced-606145570a78"; - fsType = "btrfs"; - options = [ "subvol=root" ]; + { device = "/dev/disk/by-uuid/ade0752d-84d3-4e39-865b-9027ba2d5c67"; + fsType = "ext4"; }; - fileSystems."/home" = - { device = "/dev/disk/by-uuid/6ee9d430-1b1b-4e39-bced-606145570a78"; - fsType = "btrfs"; - options = [ "subvol=home" ]; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/AD0C-92EF"; + fileSystems."/boot/efi" = + { device = "/dev/disk/by-uuid/1715-278E"; fsType = "vfat"; }; + fileSystems."/data" = + { device = "/dev/disk/by-uuid/3276a297-9ee4-4998-b262-1ed100366c06"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."crypted-data".device = "/dev/disk/by-uuid/8a317bf4-fe13-4334-a6df-5fe5a5048b5e"; + swapDevices = - [ { device = "/dev/disk/by-uuid/5486bd9f-6826-4ac7-b09b-8768a35c331f"; } + [ { device = "/dev/disk/by-uuid/b790abb4-ba5f-4476-8f09-b0fc575414aa"; } ]; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; diff --git a/headphones.nix b/headphones.nix new file mode 100644 index 00000000..a4211f76 --- /dev/null +++ b/headphones.nix @@ -0,0 +1,12 @@ +{config, lib, pkgs, ... }: +{ + services.headphones = { + enable = true; + host = "172.16.11.240"; + port = 8181; + user = "headphones"; + group = "audio"; + dataDir = "/data/music"; + }; + networking.firewall.allowedTCPPorts = [ 8181 ]; +} diff --git a/hosts/README.org b/hosts/README.org deleted file mode 100644 index f8dbafb9..00000000 --- a/hosts/README.org +++ /dev/null @@ -1,9 +0,0 @@ -#+TITLE: Host Configurations - -* Systems -+ kuro -+ shiro -+ ao -+ aka -+ aijiro -+ unlisted: 100+ linodes, 7 VMs diff --git a/hosts/aijiro/README.org b/hosts/aijiro/README.org deleted file mode 100644 index 04b4e810..00000000 --- a/hosts/aijiro/README.org +++ /dev/null @@ -1,30 +0,0 @@ -#+TITLE: Aijiro -#+DATE: September 3, 2021 - -* Overview -... - -* Specs -+ Intel i5-6400 -+ 8GB - -* Installation -** Set up root file system -#+BEGIN_SRC sh -parted /dev/sda -- mklabel gpt -parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB -parted /dev/sda -- mkpart primary linux-swap 512MiB 8.5GiB -parted /dev/sda -- mkpart primary 8.5GiB 100% -parted /dev/sda -- set 1 boot on -mkfs.fat -F32 -n BOOT /dev/sda1 -mkswap -L swap /dev/sda2 -mkfs.ext4 -L nixos /dev/sda3 -#+END_SRC - -** Mount drives -#+BEGIN_SRC sh -mount /dev/sda3 /mnt -mkdir -p /mnt/boot -mount /dev/sda1 /mnt/boot -swapon /dev/sda2 -#+END_SRC diff --git a/hosts/aijiro/default.nix b/hosts/aijiro/default.nix deleted file mode 100644 index fa198463..00000000 --- a/hosts/aijiro/default.nix +++ /dev/null @@ -1,86 +0,0 @@ -# Shiro -- my laptop - -{ ... }: -{ - imports = [ - ../home.nix - ./hardware-configuration.nix - ]; - - ## Modules - modules = { - desktop = { - bspwm.enable = true; - apps = { - discord.enable = true; - rofi.enable = true; - # godot.enable = true; - }; - browsers = { - default = "brave"; - brave.enable = true; - # firefox.enable = true; - # qutebrowser.enable = true; - }; - gaming = { - # steam.enable = true; - # emulators.enable = true; - # emulators.psx.enable = true; - }; - media = { - daw.enable = true; - documents.enable = true; - graphics.enable = true; - mpv.enable = true; - recording.enable = true; - spotify.enable = true; - }; - term = { - default = "xst"; - st.enable = true; - }; - vm = { - qemu.enable = true; - }; - }; - dev = { - node.enable = true; - rust.enable = true; - python.enable = true; - }; - editors = { - default = "nvim"; - emacs.enable = true; - vim.enable = true; - }; - shell = { - # adl.enable = true; - vaultwarden.enable = true; - direnv.enable = true; - git.enable = true; - gnupg.enable = true; - tmux.enable = true; - zsh.enable = true; - }; - services = { - ssh.enable = true; - docker.enable = true; - # Needed occasionally to help the parental units with PC problems - # teamviewer.enable = true; - }; - theme.active = "alucard"; - }; - - - ## Local config - programs.ssh.startAgent = true; - services.openssh.startWhenNeeded = true; - - networking.wireless.enable = true; - # The global useDHCP flag is deprecated, therefore explicitly set to false - # here. Per-interface useDHCP will be mandatory in the future, so this - # generated config replicates the default behaviour. - networking.useDHCP = false; - - time.timeZone = "Europe/Copenhagen"; -} diff --git a/hosts/aijiro/hardware-configuration.nix b/hosts/aijiro/hardware-configuration.nix deleted file mode 100644 index 3a2c0dd1..00000000 --- a/hosts/aijiro/hardware-configuration.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ config, lib, pkgs, inputs, modulesPath, ... }: - -{ - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot = { - initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "sr_mod" "nvme" ]; - initrd.kernelModules = [ "dm-snapshot" ]; - kernelModules = [ "kvm-intel" ]; - extraModulePackages = [ ]; - kernelParams = [ - # HACK Disables fixes for spectre, meltdown, L1TF and a number of CPU - # vulnerabilities. Don't copy this blindly! And especially not for - # mission critical or server/headless builds exposed to the world. - "mitigations=off" - ]; - - # Refuse ICMP echo requests on my desktop/laptop; nobody has any business - # pinging them, unlike my servers. - kernel.sysctl."net.ipv4.icmp_echo_ignore_broadcasts" = 1; - }; - - # Modules - modules.hardware = { - audio.enable = true; - fs = { - enable = true; - ssd.enable = true; - }; - }; - - # CPU - nix.maxJobs = lib.mkDefault 4; - hardware.cpu.intel.updateMicrocode = true; - # performance gives better battery life/perf than ondemand on sandy bridge and - # newer because of intel pstates. - powerManagement.cpuFreqGovernor = "performance"; - # Without this wpa_supplicant may fail to auto-discover wireless interfaces at - # startup (and must be restarted). - networking.wireless.interfaces = [ "wlp3s0" ]; - - # Storage - fileSystems = { - "/" = { - device = "/dev/disk/by-label/nixos"; - fsType = "ext4"; - options = [ "noatime" ]; - }; - "/boot" = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - }; - }; - swapDevices = [ { device = "/dev/disk/by-label/swap"; }]; -} diff --git a/hosts/ao/README.org b/hosts/ao/README.org deleted file mode 100644 index a00290e4..00000000 --- a/hosts/ao/README.org +++ /dev/null @@ -1,26 +0,0 @@ -#+TITLE: Ao -#+DATE: December 16, 2014 - -* Overview -Mac Mini 2014. Used as a low-power home server. - -* Specs -https://support.apple.com/kb/SP710?locale=en_CA - -* Installation -** Set up root file system -#+BEGIN_SRC sh -parted /dev/sda -- mklabel gpt -parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB -parted /dev/sda -- mkpart primary 512MiB 100% -parted /dev/sda -- set 1 boot on -mkfs.fat -F32 -n BOOT /dev/sda1 -mkfs.ext4 -L nixos /dev/sda2 -#+END_SRC - -** Mount drives -#+BEGIN_SRC sh -mount /dev/sda2 /mnt -mkdir -p /mnt/boot -mount /dev/sda1 /mnt/boot -#+END_SRC diff --git a/hosts/ao/default.nix b/hosts/ao/default.nix deleted file mode 100644 index c4446748..00000000 --- a/hosts/ao/default.nix +++ /dev/null @@ -1,61 +0,0 @@ -# Ao -- my home development and user-facing server - -{ config, lib, ... }: - -with lib.my; -{ - imports = [ - ../server.nix - ../home.nix - ./hardware-configuration.nix - - ./modules/backup.nix - ./modules/gitea.nix - ./modules/vaultwarden.nix - ]; - - - ## Modules - modules = { - shell = { - direnv.enable = true; - git.enable = true; - zsh.enable = true; - }; - services = { - fail2ban.enable = true; - ssh.enable = true; - nginx.enable = true; - }; - - theme.active = "alucard"; - }; - - ## Local config - networking.networkmanager.enable = true; - - # nginx hosts - services.nginx.virtualHosts."v0.io" = { - default = true; - forceSSL = true; - enableACME = true; - locations = { - "~* \.(?:ico|css|map|js|gif|jpe?g|png|ttf|woff)$".extraConfig = '' - access_log off; - expires 30d; - add_header Pragma public; - add_header Cache-Control "public, mustrevalidate, proxy-revalidate"; - proxy_pass http://kiiro:8000; - proxy_buffering off; - ''; - "/".extraConfig = '' - client_max_body_size 10m; - proxy_pass http://kiiro:8000; - proxy_buffering off; - proxy_redirect off; - ''; - }; - }; - - security.acme.email = "henrik@lissner.net"; -} diff --git a/hosts/ao/hardware-configuration.nix b/hosts/ao/hardware-configuration.nix deleted file mode 100644 index 2a77977a..00000000 --- a/hosts/ao/hardware-configuration.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ config, lib, modulesPath, ... }: -{ - imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - - boot = { - initrd.availableKernelModules = [ "ohci_pci" "ehci_pci" "ahci" "firewire_ohci" "usb_storage" "usbhid" "sd_mod" "sr_mod" "sdhci_pci" ]; - initrd.kernelModules = [ ]; - kernelModules = [ "kvm-intel" "wl" ]; - extraModulePackages = []; - }; - - ## CPU - nix.maxJobs = lib.mkDefault 2; - powerManagement.cpuFreqGovernor = "ondemand"; - - ## Harddrives - fileSystems = { - "/" = { - device = "/dev/disk/by-label/nixos"; - fsType = "ext4"; - options = [ "noatime" ]; - }; - "/boot" = { - device = "/dev/disk/by-label/boot"; - fsType = "vfat"; - }; - "/usr/drive" = { - device = "kiiro:/volume1/homes/hlissner/Drive/backup/ao"; - fsType = "nfs"; - options = [ - "nofail" "noauto" "noatime" "x-systemd.automount" "x-systemd.idle-timeout=5min" - "nodev" "nosuid" "noexec" - ]; - }; - }; - swapDevices = [{ device = "/dev/disk/by-label/swap"; }]; -} diff --git a/hosts/ao/modules/backup.nix b/hosts/ao/modules/backup.nix deleted file mode 100644 index 1008bea8..00000000 --- a/hosts/ao/modules/backup.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - services.vaultwarden.backupDir = "/backups/vaultwarden"; - services.gitea.dump.enable = true; - services.gitea.dump.backupDir = "/backups/gitea"; - system.activationScripts.createBackupDir = '' - mkdir -m 750 -p "${config.services.vaultwarden.backupDir}" || true - mkdir -m 750 -p "${config.services.gitea.dump.backupDir}" || true - chown vaultwarden:vaultwarden "${config.services.vaultwarden.backupDir}" - chown git:gitea "${config.services.gitea.dump.backupDir}" - ''; - - # systemd = { - # services.backups = { - # description = "Backup /backups to NAS"; - # wants = [ "usr-drive.mount" ]; - # path = [ pkgs.rsync ]; - # environment = { - # SRC_DIR = "/backups"; - # DEST_DIR = "/usr/drive"; - # }; - # script = '' - # if [[ -d "$1" && -d "$2" ]]; then - # echo "---- BACKUPING UP $1 TO $2 ----" - # rsync -rlptPJ --delete --delete-after \ - # --chmod=go= \ - # --chown=hlissner:users \ - # --exclude=lost+found/ \ - # --exclude=@eaDir/ \ - # --include=.git/ \ - # --filter=':- .gitignore' \ - # --filter=':- $XDG_CONFIG_HOME/git/ignore' \ - # "$SRC_DIR/" "$DEST_DIR" - # fi - # ''; - # serviceConfig = { - # Type = "oneshot"; - # Nice = 19; - # IOSchedulingClass = "idle"; - # }; - # }; - # timers.backups = { - # wantedBy = [ "timers.target" ]; - # partOf = [ "backups.service" ]; - # timerConfig.OnCalendar = "*-*-* 03:00:00"; - # timerConfig.Persistent = true; - # }; - # }; -} diff --git a/hosts/ao/modules/gitea.nix b/hosts/ao/modules/gitea.nix deleted file mode 100644 index b66d5301..00000000 --- a/hosts/ao/modules/gitea.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ config, lib, ... }: - -{ - modules.services.gitea.enable = true; - - services.gitea = { - appName = "V-NOUGHT"; - domain = "v0.io"; - rootUrl = "https://git.v0.io/"; - disableRegistration = true; - settings = { - server.SSH_DOMAIN = "v0.io"; - mailer = { - ENABLED = true; - FROM = "mail@v0.io"; - HOST = "mail.gmail.com:465"; - USER = "hlissner@gmail.com"; - MAILER_TYPE = "smtp"; - }; - }; - mailerPasswordFile = config.age.secrets.gitea-smtp.path; - }; - - services.nginx.virtualHosts."git.v0.io" = { - forceSSL = true; - enableACME = true; - root = "/srv/www/git.v0.io"; - locations."/".proxyPass = "http://127.0.0.1:3000"; - }; -} diff --git a/hosts/ao/modules/vaultwarden.nix b/hosts/ao/modules/vaultwarden.nix deleted file mode 100644 index 97eea774..00000000 --- a/hosts/ao/modules/vaultwarden.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ config, lib, ... }: - -{ - modules.services.vaultwarden.enable = true; - - services.vaultwarden.config = { - signupsAllowed = false; - invitationsAllowed = true; - domain = "https://p.v0.io"; - httpPort = 8002; - }; - - # Inject secrets at runtime - systemd.services.vaultwarden.serviceConfig = { - EnvironmentFile = [ config.age.secrets.vaultwarden-smtp-env.path ]; - Restart = "on-failure"; - RestartSec = "2s"; - }; - - services.nginx.virtualHosts."p.v0.io" = { - forceSSL = true; - enableACME = true; - root = "/srv/www/p.v0.io"; - extraConfig = '' - client_max_body_size 128M; - ''; - locations = { - "/".proxyPass = "http://127.0.0.1:8000"; - "/notifications/hub".proxyWebsockets = true; - "/notifications/hub/negotiate".proxyPass = "http://127.0.0.1:8001"; - }; - }; -} diff --git a/hosts/ao/secrets/gitea-smtp.age b/hosts/ao/secrets/gitea-smtp.age deleted file mode 100644 index 580888fc..00000000 --- a/hosts/ao/secrets/gitea-smtp.age +++ /dev/null @@ -1,7 +0,0 @@ -age-encryption.org/v1 --> ssh-ed25519 4+kR2g aFztrZ7QN3Odj4EbFwuaRn+1VSuTFSUZ1Gwtgf5ELmw -H2s3EFMm4cRnFw5AbeOmX+OdADnEuMW5KqR4erH8Rv0 --> (-grease 10P|_2X -JP9WDuBVhwq8P4B/QTPM/UFVgEM ---- IV78E3ztrIne6HidhqvOUfg//H77bnXQlXvEtqmpkBA -,S"2(*b ׍z=CIPmg܅g4tog!DJm \ No newline at end of file diff --git a/hosts/ao/secrets/secrets.nix b/hosts/ao/secrets/secrets.nix deleted file mode 100644 index bac7d92e..00000000 --- a/hosts/ao/secrets/secrets.nix +++ /dev/null @@ -1,5 +0,0 @@ -let key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINd+4ijlEHI98NLpgP/El73BmpBUfzka9ovdt8FoaVAG hlissner@home"; -in { - "vaultwarden-smtp-env.age".publicKeys = [key]; - "gitea-smtp.age".publicKeys = [key]; -} diff --git a/hosts/ao/secrets/vaultwarden-smtp-env.age b/hosts/ao/secrets/vaultwarden-smtp-env.age deleted file mode 100644 index 2f6db06f420fd78e02e2e6443253179b9b05d5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmV;?0WSVwXJsvAZewzJaCB*JZZ2OLk*OY;R6*RySvCdT>x@b73zwXI4gQF+mC~J|I(BIDKd>XL4m>b7cxO zcWh93H*YdUPFGMwOKNmBF;g&0MPx)raWzv^M@4Z>OEEV~ax_b7FIrDof zT6i*VN>^rVWMxwdVk>D$N@YuTbVGM9EiE8Lc2-3}bt`6YWNc7* zbysy}V{~#>HAgmCGE;0rIc_yKO;A`bR#{1NX-Nw9)sseiyfi_Z3~d>(h)HmVRWgrJ zEJ76UmY1;cjGA7B%OHUuS^eOuPr=8WURL&dB?Z}8(njJjJia!4gPJDMge4CY Installer -# - /dev/sdb -> Swap -# - /dev/sdc -> NixOS -# -# 3. Once booted into Finnix (step 2) pipe this script to sh: -# iso=https://channels.nixos.org/nixos-20.09/latest-nixos-minimal-x86_64-linux.iso -# update-ca-certificates -# curl -k $iso | dd bs=1M of=/dev/sda -# -# 4. Create two configuration profiles: -# - Installer -# - Kernel: Direct Disk -# - /dev/sda -> NixOS -# - /dev/sdb -> Swap -# - /dev/sdc -> Installer -# - Helpers: distro and auto network helpers = off -# - Boot -# - Kernel: GRUB 2 -# - /dev/sda -> NixOS -# - /dev/sdb -> Swap -# - Helpers: distro and auto network helpers = off -# -# 5. Boot into installer profile. -# -# 6. Generate hardware-configuration.nix -# e2label /dev/sda nixos -# swaplabel -L swap /dev/sdb -# mount /dev/disk/by-label/nixos /mnt -# swapon /dev/disk/by-label/swap -# nixos-generate-config --root /mnt -# vim /mnt/etc/nixos/hardware-configuration.nix # change uuids to labels -# -# 7. Install dotfiles: -# nix-env -iA nixos.git nixos.nixFlakes -# mkdir -p /mnt/home/hlissner/.config -# cd /mnt/home/hlissner/.config -# git clone https://github.com/hlissner/dotfiles -# nixos-install --root /mnt --flake .#linode --impure -# OR (on older versions of nixos) -# nixos-install --root /mnt --flake .#linode --option pure-eval false -# -# 8. Reboot into "Boot" profile. - -{ modulesPath, config, lib, pkgs, ... }: - -with lib; -{ - imports = [ - "${modulesPath}/profiles/qemu-guest.nix" - ./server.nix - ]; - - environment.systemPackages = - with pkgs; [ inetutils mtr sysstat git ]; - - modules = { - editors = { - default = "nvim"; - vim.enable = true; - }; - shell = { - git.enable = true; - zsh.enable = true; - }; - services.ssh.enable = true; - }; - - # GRUB - boot = { - kernelModules = []; - # Needed for LISH (part 1) - kernelParams = [ "console=ttyS0" ]; - extraModulePackages = []; - initrd = { - availableKernelModules = [ "virtio_pci" "ahci" "sd_mod" ]; - kernelModules = []; - }; - loader = { - timeout = 10; - grub = { - enable = true; - version = 2; - device = "/dev/sda"; - copyKernels = true; - fsIdentifier = "provided"; - # Needed for LISH (part 2) - extraConfig = "serial; terminal_input serial; terminal_output serial"; - # GRUB will complain about blocklists when trying to install grub on a - # partition-less disk. This tells it to ignore the warning and carry on. - forceInstall = true; - }; - # Disable globals - systemd-boot.enable = false; - efi.canTouchEfiVariables = false; - }; - }; - - networking = { - useDHCP = false; - usePredictableInterfaceNames = false; - interfaces.eth0 = { - useDHCP = true; - }; - }; - - fileSystems."/" = { - device = "/dev/sda"; - fsType = "ext4"; - }; - swapDevices = [ { device = "/dev/sdb"; } ]; -} diff --git a/hosts/server.nix b/hosts/server.nix deleted file mode 100644 index 5edf73a2..00000000 --- a/hosts/server.nix +++ /dev/null @@ -1,31 +0,0 @@ -# hosts/server.nix -# -# Only to be used for headless servers, at home or abroad, with more -# security/automation-minded configuration. - -{ config, lib, pkgs, ... }: - -{ - boot.kernelPackages = pkgs.linuxPackages_latest_hardened; - - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; - }; - - systemd = { - services.clear-log = { - description = "Clear >1 month-old logs every week"; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${pkgs.systemd}/bin/journalctl --vacuum-time=30d"; - }; - }; - timers.clear-log = { - wantedBy = [ "timers.target" ]; - partOf = [ "clear-log.service" ]; - timerConfig.OnCalendar = "weekly UTC"; - }; - }; -} diff --git a/hosts/shiro/README.org b/hosts/shiro/README.org deleted file mode 100644 index 5e1bb0fa..00000000 --- a/hosts/shiro/README.org +++ /dev/null @@ -1,18 +0,0 @@ -#+TITLE: Shiro -#+DATE: December 29, 2018 - -* Overview -For work on the go. Dual boots Windows and NixOS. - -* Specs -| MAKE | [[https://www.dell.com/support/manuals/en-ca/xps-13-9370-laptop/xps-13-9370-setupandspecs/specifications-for-xps-13-9370?guid=guid-c3a6ce65-b23d-41b2-b9c9-244850da6393&lang=en-us][Dell 13" 9370]] | -| CPU | Intel i7-8550U | -| RAM | 16gb | -| HDD | 500gb NVMe | - -* Installation -The primary partition needs to be shrunk on the Windows side, then: - -#+BEGIN_SRC sh -# TODO -#+END_SRC diff --git a/hosts/shiro/default.nix b/hosts/shiro/default.nix deleted file mode 100644 index 1e0ef52d..00000000 --- a/hosts/shiro/default.nix +++ /dev/null @@ -1,67 +0,0 @@ -# Shiro -- my laptop - -{ ... }: -{ - imports = [ - ../home.nix - ./hardware-configuration.nix - ]; - - ## Modules - modules = { - desktop = { - bspwm.enable = true; - apps = { - discord.enable = true; - rofi.enable = true; - # skype.enable = true; - }; - browsers = { - default = "firefox"; - firefox.enable = true; - }; - media = { - # daw.enable = true; - documents.enable = true; - graphics.enable = true; - mpv.enable = true; - recording.enable = true; - spotify.enable = true; - }; - term = { - default = "xst"; - st.enable = true; - }; - vm = {}; - }; - editors = { - default = "nvim"; - emacs.enable = true; - vim.enable = true; - }; - dev = {}; - shell = { - vaultwarden.enable = true; - direnv.enable = true; - git.enable = true; - gnupg.enable = true; - tmux.enable = true; - zsh.enable = true; - }; - services = { - # syncthing.enable = true; - ssh.enable = true; - }; - theme.active = "alucard"; - }; - - - ## Local config - programs.ssh.startAgent = true; - services.openssh.startWhenNeeded = true; - - networking.wireless.enable = true; - hardware.opengl.enable = true; - - # time.timeZone = "Europe/Copenhagen"; -} diff --git a/hosts/shiro/hardware-configuration.nix b/hosts/shiro/hardware-configuration.nix deleted file mode 100644 index 68e3e383..00000000 --- a/hosts/shiro/hardware-configuration.nix +++ /dev/null @@ -1,84 +0,0 @@ -{ config, lib, pkgs, inputs, modulesPath, ... }: - -{ - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - inputs.nixos-hardware.nixosModules.dell-xps-13-9370 - ]; - - boot = { - initrd.availableKernelModules = [ "xhci_pci" "nvme" "rtsx_pci_sdmmc" ]; - initrd.kernelModules = [ "dm-snapshot" ]; - kernelModules = [ "kvm-intel" ]; - extraModulePackages = [ ]; - kernelParams = [ - # HACK Disables fixes for spectre, meltdown, L1TF and a number of CPU - # vulnerabilities. Don't copy this blindly! And especially not for - # mission critical or server/headless builds exposed to the world. - "mitigations=off" - ]; - - # Refuse ICMP echo requests on my desktop/laptop; nobody has any business - # pinging them, unlike my servers. - kernel.sysctl."net.ipv4.icmp_echo_ignore_broadcasts" = 1; - }; - - # Modules - modules.hardware = { - audio.enable = true; - fs = { - enable = true; - ssd.enable = true; - }; - }; - - # CPU - nix.maxJobs = lib.mkDefault 8; - hardware.cpu.intel.updateMicrocode = true; - # performance gives better battery life/perf than ondemand on sandy bridge and - # newer because of intel pstates. - powerManagement.cpuFreqGovernor = "performance"; - # Without this wpa_supplicant may fail to auto-discover wireless interfaces at - # startup (and must be restarted). - networking.wireless.interfaces = [ "wlp2s0" ]; - - # Power management - environment.systemPackages = [ pkgs.acpi ]; - powerManagement.powertop.enable = true; - # Monitor backlight control - programs.light.enable = true; - user.extraGroups = [ "video" ]; - - # Storage - fileSystems = { - "/" = { - device = "/dev/disk/by-label/nixos"; - fsType = "ext4"; - options = [ "noatime" ]; - }; - "/boot" = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - }; - "/home" = { - device = "/dev/disk/by-label/home"; - fsType = "ext4"; - options = [ "noatime" ]; - }; - "/usr/drive" = { - device = "kiiro:/volume1/homes/hlissner/Drive"; - fsType = "nfs"; - options = [ - "nofail" "noauto" "noatime" "x-systemd.automount" "x-systemd.idle-timeout=5min" - "nodev" "nosuid" "noexec" - ]; - }; - }; - swapDevices = [ { device = "/dev/disk/by-label/swap"; }]; - - boot.initrd.luks.devices.home = { - device = "/dev/nvme0n1p8"; - preLVM = true; - allowDiscards = true; - }; -} diff --git a/lib/attrs.nix b/lib/attrs.nix deleted file mode 100644 index 0f8ebd19..00000000 --- a/lib/attrs.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ lib, ... }: - -with builtins; -with lib; -rec { - # attrsToList - attrsToList = attrs: - mapAttrsToList (name: value: { inherit name value; }) attrs; - - # mapFilterAttrs :: - # (name -> value -> bool) - # (name -> value -> { name = any; value = any; }) - # attrs - mapFilterAttrs = pred: f: attrs: filterAttrs pred (mapAttrs' f attrs); - - # Generate an attribute set by mapping a function over a list of values. - genAttrs' = values: f: listToAttrs (map f values); - - # anyAttrs :: (name -> value -> bool) attrs - anyAttrs = pred: attrs: - any (attr: pred attr.name attr.value) (attrsToList attrs); - - # countAttrs :: (name -> value -> bool) attrs - countAttrs = pred: attrs: - count (attr: pred attr.name attr.value) (attrsToList attrs); -} diff --git a/lib/default.nix b/lib/default.nix deleted file mode 100644 index 8cd67160..00000000 --- a/lib/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ inputs, lib, pkgs, ... }: - -let - inherit (lib) makeExtensible attrValues foldr; - inherit (modules) mapModules; - - modules = import ./modules.nix { - inherit lib; - self.attrs = import ./attrs.nix { inherit lib; self = {}; }; - }; - - mylib = makeExtensible (self: - with self; mapModules ./. - (file: import file { inherit self lib pkgs inputs; })); -in -mylib.extend - (self: super: - foldr (a: b: a // b) {} (attrValues super)) diff --git a/lib/generators.nix b/lib/generators.nix deleted file mode 100644 index 4b298e52..00000000 --- a/lib/generators.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ lib, pkgs, ... }: - -with builtins; -with lib; -{ - toCSSFile = file: - let fileName = removeSuffix ".scss" (baseNameOf file); - compiledStyles = - pkgs.runCommand "compileScssFile" - { buildInputs = [ pkgs.sass ]; } '' - mkdir "$out" - scss --sourcemap=none \ - --no-cache \ - --style compressed \ - --default-encoding utf-8 \ - "${file}" \ - >>"$out/${fileName}.css" - ''; - in "${compiledStyles}/${fileName}.css"; - - toFilteredImage = imageFile: options: - let result = "result.png"; - filteredImage = - pkgs.runCommand "filterWallpaper" - { buildInputs = [ pkgs.imagemagick ]; } '' - mkdir "$out" - convert ${options} ${imageFile} $out/${result} - ''; - in "${filteredImage}/${result}"; -} diff --git a/lib/modules.nix b/lib/modules.nix deleted file mode 100644 index 47743f12..00000000 --- a/lib/modules.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ self, lib, ... }: - -let - inherit (builtins) attrValues readDir pathExists concatLists; - inherit (lib) id mapAttrsToList filterAttrs hasPrefix hasSuffix nameValuePair removeSuffix; - inherit (self.attrs) mapFilterAttrs; -in -rec { - mapModules = dir: fn: - mapFilterAttrs - (n: v: - v != null && - !(hasPrefix "_" n)) - (n: v: - let path = "${toString dir}/${n}"; in - if v == "directory" && pathExists "${path}/default.nix" - then nameValuePair n (fn path) - else if v == "regular" && - n != "default.nix" && - hasSuffix ".nix" n - then nameValuePair (removeSuffix ".nix" n) (fn path) - else nameValuePair "" null) - (readDir dir); - - mapModules' = dir: fn: - attrValues (mapModules dir fn); - - mapModulesRec = dir: fn: - mapFilterAttrs - (n: v: - v != null && - !(hasPrefix "_" n)) - (n: v: - let path = "${toString dir}/${n}"; in - if v == "directory" - then nameValuePair n (mapModulesRec path fn) - else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n - then nameValuePair (removeSuffix ".nix" n) (fn path) - else nameValuePair "" null) - (readDir dir); - - mapModulesRec' = dir: fn: - let - dirs = - mapAttrsToList - (k: _: "${dir}/${k}") - (filterAttrs - (n: v: v == "directory" && !(hasPrefix "_" n)) - (readDir dir)); - files = attrValues (mapModules dir id); - paths = files ++ concatLists (map (d: mapModulesRec' d id) dirs); - in map fn paths; -} diff --git a/lib/nixos.nix b/lib/nixos.nix deleted file mode 100644 index 4595af76..00000000 --- a/lib/nixos.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ inputs, lib, pkgs, ... }: - -with lib; -with lib.my; -let sys = "x86_64-linux"; -in { - mkHost = path: attrs @ { system ? sys, ... }: - nixosSystem { - inherit system; - specialArgs = { inherit lib inputs system; }; - modules = [ - { - nixpkgs.pkgs = pkgs; - networking.hostName = mkDefault (removeSuffix ".nix" (baseNameOf path)); - } - (filterAttrs (n: v: !elem n [ "system" ]) attrs) - ../. # /default.nix - (import path) - ]; - }; - - mapHosts = dir: attrs @ { system ? system, ... }: - mapModules dir - (hostPath: mkHost hostPath attrs); -} diff --git a/lib/options.nix b/lib/options.nix deleted file mode 100644 index 2b9c0810..00000000 --- a/lib/options.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ lib, ... }: - -let - inherit (lib) mkOption types; -in -rec { - mkOpt = type: default: - mkOption { inherit type default; }; - - mkOpt' = type: default: description: - mkOption { inherit type default description; }; - - mkBoolOpt = default: mkOption { - inherit default; - type = types.bool; - example = true; - }; -} diff --git a/mod-grasp.nix b/mod-grasp.nix new file mode 100644 index 00000000..4318650a --- /dev/null +++ b/mod-grasp.nix @@ -0,0 +1,12 @@ +{ config, lib, pkgs, ...}: + +{ + systemd.services.grasp = { + description = "grasp server"; + wantedBy = [ "default.target" ]; + + serviceConfig = { + ExecStart = "{$pkgs.grasp}/server/grasp_server.py --path /data/grasp/capture.org"; + }; + }; +} diff --git a/mod-wallabag.nix b/mod-wallabag.nix new file mode 100644 index 00000000..dda36c14 --- /dev/null +++ b/mod-wallabag.nix @@ -0,0 +1,220 @@ +{ config, options, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.wallabag; + + poolName = "wallabag"; + + configFile = pkgs.writeTextFile { + name = "wallabag-config"; + text = cfg.conf; + destination = "/config/parameters.yml"; + }; + + appDir = pkgs.buildEnv { + name = "wallabag-app-dir"; + ignoreCollisions = true; + checkCollisionContents = false; + paths = [ configFile "${cfg.package}/app" ]; + }; + +in { + + options = { + + services.wallabag = { + enable = mkEnableOption "wallabag"; + + user = mkOption { + type = types.str; + default = "nginx"; + description = '' + User account under which both the update daemon and the web-application run. + ''; + }; + + dataDir = mkOption { + type = types.path; + default = "/var/lib/wallabag"; + description = '' + Data directory. + ''; + }; + + package = mkOption { + type = types.package; + default = pkgs.wallabag; + description = '' + Wallabag package to use. + ''; + }; + + hostName = mkOption { + type = types.str; + description = '' + Name of the nginx virtualhost to use and setup. + ''; + }; + + poolConfig = mkOption { + type = types.lines; + default = '' + pm = dynamic + pm.max_children = 75 + pm.start_servers = 1 + pm.min_spare_servers = 1 + pm.max_spare_servers = 20 + pm.max_requests = 500 + catch_workers_output = 1 + ''; + description = '' + Options for wallabag's PHP pool. See the documentation on php-fpm.conf for details on configuration directives. + ''; + }; + + conf = mkOption { + type = types.str; + description = '' + Contents of the wallabag configuration file (parameters.yml) + ''; + }; + }; + }; + + + config = mkIf cfg.enable { + + services.phpfpm.pools."${poolName}" = { + user = "${cfg.user}"; + group = "nginx"; + settings = { + "listen.owner" = "nginx"; + "listen.group" = "nginx"; + "listen.mode" = "0600"; + "user" = "${cfg.user}"; + "group" = "nginx"; + "env[WALLABAG_DATA]" = "${cfg.dataDir}"; + "pm" = "dynamic"; + "pm.max_children" = "75"; + "pm.min_spare_servers" = "5"; + "pm.max_spare_servers" = "20"; + "pm.max_requests" = "10"; + "catch_workers_output" = "1"; + "php_admin_value[error_log]" = "/var/log/nginx/${poolName}-phpfpm-error.log"; + }; + }; + services.phpfpm.phpOptions = '' + max_execution_time = 120 + ''; + + services.nginx.enable = mkDefault true; + + services.nginx.virtualHosts."${cfg.hostName}" = { + enableACME = false; + forceSSL = false; + root = "${cfg.package}/web"; + + extraConfig = '' + add_header X-Frame-Options SAMEORIGIN; + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + ''; + + locations."/" = { + extraConfig = '' + try_files $uri /app.php$is_args$args; + ''; + }; + + locations."/assets".root = "${cfg.dataDir}/web"; + + locations."~ ^/app\\.php(/|$)" = { + extraConfig = '' + fastcgi_pass unix:${config.services.phpfpm.pools."${poolName}".socket}; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + + fastcgi_param SCRIPT_FILENAME ${cfg.package}/web/$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT ${cfg.package}/web; + fastcgi_read_timeout 120; + + fastcgi_param QUERY_STRING $query_string; + fastcgi_param REQUEST_METHOD $request_method; + fastcgi_param CONTENT_TYPE $content_type; + fastcgi_param CONTENT_LENGTH $content_length; + + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param SCRIPT_NAME $fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; + fastcgi_param REQUEST_URI $request_uri; + fastcgi_param DOCUMENT_URI $document_uri; + fastcgi_param SERVER_PROTOCOL $server_protocol; + + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + + fastcgi_param REMOTE_ADDR $remote_addr; + fastcgi_param REMOTE_PORT $remote_port; + fastcgi_param SERVER_ADDR $server_addr; + fastcgi_param SERVER_PORT $server_port; + fastcgi_param SERVER_NAME $server_name; + + internal; + ''; + }; + + locations."~ /(?!app)\\.php$" = { + extraConfig = '' + return 404; + ''; + }; + }; + + systemd.services.wallabag-install = { + description = "Wallabag install service"; + wantedBy = [ "multi-user.target" ]; + before = [ "phpfpm-wallabag.service" ]; + after = [ "mysql.service" "postgresql.service" ]; + path = with pkgs; [ coreutils php phpPackages.composer ]; + + serviceConfig = { + User = cfg.user; + Type = "oneshot"; + RemainAfterExit = "yes"; + PermissionsStartOnly = true; + }; + + preStart = '' + mkdir -p "${cfg.dataDir}" + chown ${cfg.user}:nginx "${cfg.dataDir}" + ''; + + script = '' + echo "Setting up wallabag files in ${cfg.dataDir} ..." + cd "${cfg.dataDir}" + + rm -rf var/cache/* + rm -f app + ln -sf ${appDir} app + ln -sf ${cfg.package}/composer.{json,lock} . + + export WALLABAG_DATA="${cfg.dataDir}" + if [ ! -f installed ]; then + php ${cfg.package}/bin/console --env=prod doctrine:database:create --if-not-exists --no-interaction + php ${cfg.package}/bin/console --env=prod doctrine:migrations:migrate --no-interaction + # Until https://github.com/wallabag/wallabag/issues/3662 is fixed + # yes no | php ${cfg.package}/bin/console --env=prod wallabag:install + touch installed + else + php ${cfg.package}/bin/console --env=prod doctrine:migrations:migrate --no-interaction + fi + php ${cfg.package}/bin/console --env=prod cache:clear + ''; + }; + }; + + meta = with stdenv.lib; { + maintainers = with maintainers; [ nadrieril ]; + }; +} diff --git a/module-gonic.nix b/module-gonic.nix new file mode 100644 index 00000000..f3a32fca --- /dev/null +++ b/module-gonic.nix @@ -0,0 +1,109 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.gonic; + configFile = "/etc/gonic/config"; + dataFolder = "/var/lib/gonic"; +in { + options = { + + services.gonic = { + enable = mkEnableOption "Gonic music server and streamer"; + + settings = lib.mkOption { + type = types.str; + default = {}; + example = literalExample '' + music-path + podcast-path + cache-path + ''; + description = '' + Configuration for Gonic, see for supported values. + ''; + }; + + user = mkOption { + type = types.str; + default = "gonic"; + description = "User account under which gonic runs."; + }; + + group = mkOption { + type = types.str; + default = "gonic"; + description = "Group account under which gonic runs."; + }; + + }; + }; + + config = mkIf cfg.enable { + + environment.etc."gonic/config".text = cfg.settings; + + systemd.services.gonic = { + description = "gonic Music Server and Streamer compatible with Subsonic/Airsonic"; + after = [ "remote-fs.target" "network.target" ]; + wantedBy = [ "multi-user.target" ]; + environment = { + #GONIC_MUSIC_PATH + #GONIC_PODCAST_PATH + #GONIC_CACHE_PATH + #GONIC_DB_PATH + GONIC_SCAN_INTERVAL="800"; + #... + }; + serviceConfig = { + ExecStart = "${pkgs.gonic}/bin/gonic -config-path /etc/gonic/config"; + WorkingDirectory = dataFolder; + TimeoutStopSec = "20"; + KillMode = "process"; + Restart = "on-failure"; + RestartSec = "10"; + User = cfg.user; + Group = cfg.group; + DevicePolicy = "closed"; + NoNewPrivileges= " yes"; + PrivateTmp = "yes"; + PrivateUsers = "yes"; + ProtectControlGroups = "yes"; + ProtectKernelModules = "yes"; + ProtectKernelTunables = "yes"; + RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6"; + RestrictNamespaces = "yes"; + RestrictRealtime = "yes"; + SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap"; + ReadWritePaths = dataFolder; + StateDirectory = baseNameOf dataFolder; + }; + }; + + users.users = optionalAttrs (cfg.user == "gonic") ({ + gonic = { + description = "gonic service user"; + name = cfg.user; + group = cfg.group; + isSystemUser = true; + }; + }); + + users.groups = optionalAttrs (cfg.group == "gonic") ({ + gonic = {}; + }); + + services.nginx.virtualHosts."music.mossnet.lan" = { + enableACME = false; + forceSSL = false; + + locations."/" = { + extraConfig = '' + proxy_pass http://localhost:4747/; + proxy_set_header X-Forwarded-Host $host; + ''; + }; + }; + }; +} diff --git a/modules/agenix.nix b/modules/agenix.nix deleted file mode 100644 index f82e8e97..00000000 --- a/modules/agenix.nix +++ /dev/null @@ -1,29 +0,0 @@ -# modules/agenix.nix -- encrypt secrets in nix store - -{ options, config, inputs, lib, pkgs, ... }: - -with builtins; -with lib; -with lib.my; -let inherit (inputs) agenix; - secretsDir = "${toString ../hosts}/${config.networking.hostName}/secrets"; - secretsFile = "${secretsDir}/secrets.nix"; -in { - imports = [ agenix.nixosModules.age ]; - environment.systemPackages = [ agenix.defaultPackage.x86_64-linux ]; - - age = { - secrets = - if pathExists secretsFile - then mapAttrs' (n: _: nameValuePair (removeSuffix ".age" n) { - file = "${secretsDir}/${n}"; - owner = mkDefault config.user.name; - }) (import secretsFile) - else {}; - sshKeyPaths = - options.age.sshKeyPaths.default ++ (filter pathExists [ - "${config.user.home}/.ssh/id_ed25519" - "${config.user.home}/.ssh/id_rsa" - ]); - }; -} diff --git a/modules/desktop/apps/discord.nix b/modules/desktop/apps/discord.nix deleted file mode 100644 index e1dddf05..00000000 --- a/modules/desktop/apps/discord.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.apps.discord; -in { - options.modules.desktop.apps.discord = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - # If not installed from the bleeding edge, Discord will sometimes - # soft-lock itself on a "there's an update for discord" screen. - unstable.discord - ]; - }; -} diff --git a/modules/desktop/apps/godot.nix b/modules/desktop/apps/godot.nix deleted file mode 100644 index 102cf139..00000000 --- a/modules/desktop/apps/godot.nix +++ /dev/null @@ -1,21 +0,0 @@ -# modules/dev/godot.nix --- https://godotengine.org/ -# -# Gamedev is my hobby. C++ or Rust are my main drivers (and occasionally Lua), -# but to prototype (for 3D, mainly) I'll occasionally reach for godot. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.apps.godot; -in { - options.modules.desktop.apps.godot = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - godot - ]; - }; -} diff --git a/modules/desktop/apps/rofi.nix b/modules/desktop/apps/rofi.nix deleted file mode 100644 index 4b1f4916..00000000 --- a/modules/desktop/apps/rofi.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.apps.rofi; -in { - options.modules.desktop.apps.rofi = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - # link recursively so other modules can link files in its folder - # home.xdg.configFile."rofi" = { - # source = ; - # recursive = true; - # }; - - user.packages = with pkgs; [ - (writeScriptBin "rofi" '' - #!${stdenv.shell} - exec ${pkgs.rofi}/bin/rofi -terminal xst -m -1 "$@" - '') - - # Fake rofi dmenu entries - (makeDesktopItem { - name = "rofi-browsermenu"; - desktopName = "Open Bookmark in Browser"; - icon = "bookmark-new-symbolic"; - exec = "${config.dotfiles.binDir}/rofi/browsermenu"; - }) - (makeDesktopItem { - name = "rofi-browsermenu-history"; - desktopName = "Open Browser History"; - icon = "accessories-clock"; - exec = "${config.dotfiles.binDir}/rofi/browsermenu history"; - }) - (makeDesktopItem { - name = "rofi-filemenu"; - desktopName = "Open Directory in Terminal"; - icon = "folder"; - exec = "${config.dotfiles.binDir}/rofi/filemenu"; - }) - (makeDesktopItem { - name = "rofi-filemenu-scratch"; - desktopName = "Open Directory in Scratch Terminal"; - icon = "folder"; - exec = "${config.dotfiles.binDir}/rofi/filemenu -x"; - }) - - (makeDesktopItem { - name = "lock-display"; - desktopName = "Lock screen"; - icon = "system-lock-screen"; - exec = "${config.dotfiles.binDir}/zzz"; - }) - ]; - }; -} diff --git a/modules/desktop/apps/signal.nix b/modules/desktop/apps/signal.nix deleted file mode 100644 index 283928d0..00000000 --- a/modules/desktop/apps/signal.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.apps.signal; -in { - options.modules.desktop.apps.signal = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - # If not installed from the bleeding edge, signal will refuse to work. - unstable.signal-desktop - ]; - }; -} diff --git a/modules/desktop/apps/skype.nix b/modules/desktop/apps/skype.nix deleted file mode 100644 index f12fbbce..00000000 --- a/modules/desktop/apps/skype.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.apps.skype; -in { - options.modules.desktop.apps.skype = { - enable = mkEnableOption false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - skypeforlinux - skype_call_recorder - ]; - }; -} diff --git a/modules/desktop/apps/unity3d.nix b/modules/desktop/apps/unity3d.nix deleted file mode 100644 index afe1251f..00000000 --- a/modules/desktop/apps/unity3d.nix +++ /dev/null @@ -1,20 +0,0 @@ -# modules/dev/unity3d.nix --- https://unity.com -# -# I don't use Unity often, but when I do, it's in a team or with students. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.apps.unity3d; -in { - options.modules.desktop.apps.unity3d = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - unity3d - ]; - }; -} diff --git a/modules/desktop/awesomewm.nix b/modules/desktop/awesomewm.nix deleted file mode 100644 index f0600c6f..00000000 --- a/modules/desktop/awesomewm.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.awesomewm; - configDir = config.dotfiles.configDir; -in { - options.modules.desktop.awesomewm = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - nixpkgs.overlays = [ - (self: super: with super; { - awesome = super.awesome.override { luaPackages = super.luajitPackages; }; - }) - ]; - - environment.systemPackages = with pkgs; [ - luajit - my.fennel - ]; - - services = { - picom.enable = true; - redshift.enable = true; - xserver = { - enable = true; - displayManager = { - lightdm.enable = true; - # lightdm.greeters.mini.enable = true; - }; - windowManager.awesome.enable = true; - }; - }; - - home.configFile = { - "awesome" = { source = "${configDir}/awesome"; recursive = true; }; - "awesome/rc.lua".text = '' - -- File was auto-generated by nix. Do not touch! - - -- Load system fennel - package.path = package.path .. ";${pkgs.my.fennel}/?.lua" - local fennel = require("fennel") - debug.traceback = fennel.traceback - - -- Then load our awesomewm config - fennel.path = fennel.path .. ";.config/awesome/?.fnl" - table.insert(package.loaders or package.searchers, fennel.makeSearcher({ - correlate = true, - useMetadata = true - })) - require("init") - ''; - }; - }; -} diff --git a/modules/desktop/browsers/brave.nix b/modules/desktop/browsers/brave.nix deleted file mode 100644 index ab985404..00000000 --- a/modules/desktop/browsers/brave.nix +++ /dev/null @@ -1,28 +0,0 @@ -# modules/browser/brave.nix --- https://publishers.basicattentiontoken.org -# -# A FOSS and privacy-minded browser. - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.browsers.brave; -in { - options.modules.desktop.browsers.brave = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - brave - (makeDesktopItem { - name = "brave-private"; - desktopName = "Brave Web Browser"; - genericName = "Open a private Brave window"; - icon = "brave"; - exec = "${brave}/bin/brave --incognito"; - categories = "Network"; - }) - ]; - }; -} diff --git a/modules/desktop/browsers/default.nix b/modules/desktop/browsers/default.nix deleted file mode 100644 index 972985ed..00000000 --- a/modules/desktop/browsers/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.browsers; -in { - options.modules.desktop.browsers = { - default = mkOpt (with types; nullOr str) null; - }; - - config = mkIf (cfg.default != null) { - env.BROWSER = cfg.default; - }; -} diff --git a/modules/desktop/browsers/firefox.nix b/modules/desktop/browsers/firefox.nix deleted file mode 100644 index 3ebbed87..00000000 --- a/modules/desktop/browsers/firefox.nix +++ /dev/null @@ -1,161 +0,0 @@ -# modules/browser/firefox.nix --- https://www.mozilla.org/en-US/firefox -# -# Oh firefox, gateway to the interwebs, devourer of ram. Give onto me your -# infinite knowledge and shelter me from ads. - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.browsers.firefox; -in { - options.modules.desktop.browsers.firefox = with types; { - enable = mkBoolOpt false; - profileName = mkOpt types.str config.user.name; - - settings = mkOpt' (attrsOf (oneOf [ bool int str ])) {} '' - Firefox preferences to set in user.js - ''; - extraConfig = mkOpt' lines "" '' - Extra lines to add to user.js - ''; - - userChrome = mkOpt' lines "" "CSS Styles for Firefox's interface"; - userContent = mkOpt' lines "" "Global CSS Styles for websites"; - }; - - config = mkIf cfg.enable (mkMerge [ - { - user.packages = with pkgs; [ - firefox-bin - (makeDesktopItem { - name = "firefox-private"; - desktopName = "Firefox (Private)"; - genericName = "Open a private Firefox window"; - icon = "firefox"; - exec = "${firefox-bin}/bin/firefox --private-window"; - categories = "Network"; - }) - ]; - - # Prevent auto-creation of ~/Desktop. The trailing slash is necessary; see - # https://bugzilla.mozilla.org/show_bug.cgi?id=1082717 - env.XDG_DESKTOP_DIR = "$HOME/"; - - modules.desktop.browsers.firefox.settings = { - "devtools.theme" = "dark"; - # Enable userContent.css and userChrome.css for our theme modules - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - # Stop creating ~/Downloads! - "browser.download.dir" = "${config.user.home}/downloads"; - # Don't use the built-in password manager; a nixos user is more likely - # using an external one (you are using one, right?). - #"signon.rememberSignons" = false; - # Do not check if Firefox is the default browser - "browser.shell.checkDefaultBrowser" = false; - # Disable the "new tab page" feature and show a blank tab instead - # https://wiki.mozilla.org/Privacy/Reviews/New_Tab - # https://support.mozilla.org/en-US/kb/new-tab-page-show-hide-and-customize-top-sites#w_how-do-i-turn-the-new-tab-page-off - "browser.newtabpage.enabled" = false; - "browser.newtab.url" = "about:blank"; - # Disable Activity Stream - # https://wiki.mozilla.org/Firefox/Activity_Stream - "browser.newtabpage.activity-stream.enabled" = false; - # Disable new tab tile ads & preload - # http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox - # http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331 - # https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping - # https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source - # https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping - "browser.newtabpage.enhanced" = false; - "browser.newtab.preload" = false; - "browser.newtabpage.directory.ping" = ""; - "browser.newtabpage.directory.source" = "data:text/plain,{}"; - # Disable some not so useful functionality. - "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; - "extensions.htmlaboutaddons.recommendations.enabled" = false; - "extensions.htmlaboutaddons.discover.enabled" = false; - "extensions.pocket.enabled" = false; - "app.normandy.enabled" = false; - "app.normandy.api_url" = ""; - "extensions.shield-recipe-client.enabled" = false; - "app.shield.optoutstudies.enabled" = false; - # Disable battery API - # https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager - # https://bugzilla.mozilla.org/show_bug.cgi?id=1313580 - "dom.battery.enabled" = false; - # Disable "beacon" asynchronous HTTP transfers (used for analytics) - # https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon - "beacon.enabled" = false; - # Disable pinging URIs specified in HTML ping= attributes - # http://kb.mozillazine.org/Browser.send_pings - "browser.send_pings" = false; - # Disable gamepad API to prevent USB device enumeration - # https://www.w3.org/TR/gamepad/ - # https://trac.torproject.org/projects/tor/ticket/13023 - "dom.gamepad.enabled" = false; - # Don't try to guess domain names when entering an invalid domain name in URL bar - # http://www-archive.mozilla.org/docs/end-user/domain-guessing.html - "browser.fixup.alternate.enabled" = false; - # Disable telemetry - # https://wiki.mozilla.org/Platform/Features/Telemetry - # https://wiki.mozilla.org/Privacy/Reviews/Telemetry - # https://wiki.mozilla.org/Telemetry - # https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry - # https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715 - # https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry - # https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html - # https://wiki.mozilla.org/Telemetry/Experiments - # https://support.mozilla.org/en-US/questions/1197144 - # https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1 - "toolkit.telemetry.enabled" = false; - "toolkit.telemetry.unified" = false; - "toolkit.telemetry.archive.enabled" = false; - "experiments.supported" = false; - "experiments.enabled" = false; - "experiments.manifest.uri" = ""; - # Disable health reports (basically more telemetry) - # https://support.mozilla.org/en-US/kb/firefox-health-report-understand-your-browser-perf - # https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html - "datareporting.healthreport.uploadEnabled" = false; - "datareporting.healthreport.service.enabled" = false; - "datareporting.policy.dataSubmissionEnabled" = false; - }; - - # Use a stable profile name so we can target it in themes - home.file = let cfgPath = ".mozilla/firefox"; in { - "${cfgPath}/profiles.ini".text = '' - [Profile0] - Name=default - IsRelative=1 - Path=${cfg.profileName}.default - Default=1 - - [General] - StartWithLastProfile=1 - Version=2 - ''; - - "${cfgPath}/${cfg.profileName}.default/user.js" = - mkIf (cfg.settings != {} || cfg.extraConfig != "") { - text = '' - ${concatStrings (mapAttrsToList (name: value: '' - user_pref("${name}", ${builtins.toJSON value}); - '') cfg.settings)} - ${cfg.extraConfig} - ''; - }; - - "${cfgPath}/${cfg.profileName}.default/chrome/userChrome.css" = - mkIf (cfg.userChrome != "") { - text = cfg.userChrome; - }; - - "${cfgPath}/${cfg.profileName}.default/chrome/userContent.css" = - mkIf (cfg.userContent != "") { - text = cfg.userContent; - }; - }; - } - ]); -} diff --git a/modules/desktop/browsers/qutebrowser.nix b/modules/desktop/browsers/qutebrowser.nix deleted file mode 100644 index 8421feea..00000000 --- a/modules/desktop/browsers/qutebrowser.nix +++ /dev/null @@ -1,56 +0,0 @@ -# modules/browser/qutebrowser.nix --- https://github.com/qutebrowser/qutebrowser -# -# Qutebrowser is cute because it's not enough of a browser to be handsome. -# Still, we can all tell he'll grow up to be one hell of a lady-killer. - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.browsers.qutebrowser; - pkg = pkgs.unstable.qutebrowser; - configDir = config.dotfiles.configDir; -in { - options.modules.desktop.browsers.qutebrowser = with types; { - enable = mkBoolOpt false; - userStyles = mkOpt lines ""; - extraConfig = mkOpt lines ""; - dicts = mkOpt (listOf str) [ "en-US" ]; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - pkg - (makeDesktopItem { - name = "qutebrowser-private"; - desktopName = "Qutebrowser (Private)"; - genericName = "Open a private Qutebrowser window"; - icon = "qutebrowser"; - exec = ''${pkg}/bin/qutebrowser -T -s content.private_browsing true''; - categories = "Network"; - }) - # For Brave adblock in qutebrowser, which is significantly better than the - # built-in host blocking. Works on youtube and crunchyroll ads! - python39Packages.adblock - ]; - - home = { - configFile = { - "qutebrowser" = { - source = "${configDir}/qutebrowser"; - recursive = true; - }; - "qutebrowser/extra/00-extraConfig.py".text = cfg.extraConfig; - }; - dataFile."qutebrowser/userstyles.css".text = cfg.userStyles; - }; - - # Install language dictionaries for spellcheck backends - system.userActivationScripts.qutebrowserInstallDicts = - concatStringsSep "\\\n" (map (lang: '' - if ! find "$XDG_DATA_HOME/qutebrowser/qtwebengine_dictionaries" -type d -maxdepth 1 -name "${lang}*" 2>/dev/null | grep -q .; then - ${pkgs.python3}/bin/python ${pkg}/share/qutebrowser/scripts/dictcli.py install ${lang} - fi - '') cfg.dicts); - }; -} diff --git a/modules/desktop/bspwm.nix b/modules/desktop/bspwm.nix deleted file mode 100644 index 3c0c9c84..00000000 --- a/modules/desktop/bspwm.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.bspwm; - configDir = config.dotfiles.configDir; -in { - options.modules.desktop.bspwm = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - modules.theme.onReload.bspwm = '' - ${pkgs.bspwm}/bin/bspc wm -r - source $XDG_CONFIG_HOME/bspwm/bspwmrc - ''; - - environment.systemPackages = with pkgs; [ - lightdm - dunst - libnotify - (polybar.override { - pulseSupport = true; - nlSupport = true; - }) - ]; - - services = { - picom.enable = true; - redshift.enable = true; - xserver = { - enable = true; - displayManager = { - defaultSession = "none+bspwm"; - lightdm.enable = true; - lightdm.greeters.mini.enable = true; - }; - windowManager.bspwm.enable = true; - }; - }; - - systemd.user.services."dunst" = { - enable = true; - description = ""; - wantedBy = [ "default.target" ]; - serviceConfig.Restart = "always"; - serviceConfig.RestartSec = 2; - serviceConfig.ExecStart = "${pkgs.dunst}/bin/dunst"; - }; - - # link recursively so other modules can link files in their folders - home.configFile = { - "sxhkd".source = "${configDir}/sxhkd"; - "bspwm" = { - source = "${configDir}/bspwm"; - recursive = true; - }; - }; - }; -} diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix deleted file mode 100644 index 1a79188e..00000000 --- a/modules/desktop/default.nix +++ /dev/null @@ -1,123 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop; -in { - config = mkIf config.services.xserver.enable { - assertions = [ - { - assertion = (countAttrs (n: v: n == "enable" && value) cfg) < 2; - message = "Can't have more than one desktop environment enabled at a time"; - } - { - assertion = - let srv = config.services; - in srv.xserver.enable || - srv.sway.enable || - !(anyAttrs - (n: v: isAttrs v && - anyAttrs (n: v: isAttrs v && v.enable)) - cfg); - message = "Can't enable a desktop app without a desktop environment"; - } - ]; - - user.packages = with pkgs; [ - feh # image viewer - xclip - xdotool - xorg.xwininfo - libqalculate # calculator cli w/ currency conversion - (makeDesktopItem { - name = "scratch-calc"; - desktopName = "Calculator"; - icon = "calc"; - exec = ''scratch "${tmux}/bin/tmux new-session -s calc -n calc qalc"''; - categories = "Development"; - }) - ]; - - fonts = { - fontDir.enable = true; - enableGhostscriptFonts = true; - fonts = with pkgs; [ - ubuntu_font_family - dejavu_fonts - symbola - noto-fonts - noto-fonts-cjk - ]; - }; - - ## Apps/Services - services.xserver.displayManager.lightdm.greeters.mini.user = config.user.name; - - services.picom = { - backend = "glx"; - vSync = true; - opacityRules = [ - # "100:class_g = 'Firefox'" - # "100:class_g = 'Vivaldi-stable'" - "100:class_g = 'VirtualBox Machine'" - # Art/image programs where we need fidelity - "100:class_g = 'Gimp'" - "100:class_g = 'Inkscape'" - "100:class_g = 'aseprite'" - "100:class_g = 'krita'" - "100:class_g = 'feh'" - "100:class_g = 'mpv'" - "100:class_g = 'Rofi'" - "100:class_g = 'Peek'" - "99:_NET_WM_STATE@:32a = '_NET_WM_STATE_FULLSCREEN'" - ]; - shadowExclude = [ - # Put shadows on notifications, the scratch popup and rofi only - "! name~='(rofi|scratch|Dunst)$'" - ]; - settings = { - blur-background-exclude = [ - "window_type = 'dock'" - "window_type = 'desktop'" - "class_g = 'Rofi'" - "_GTK_FRAME_EXTENTS@:c" - ]; - - # Unredirect all windows if a full-screen opaque window is detected, to - # maximize performance for full-screen windows. Known to cause - # flickering when redirecting/unredirecting windows. - unredir-if-possible = true; - - # GLX backend: Avoid using stencil buffer, useful if you don't have a - # stencil buffer. Might cause incorrect opacity when rendering - # transparent content (but never practically happened) and may not work - # with blur-background. My tests show a 15% performance boost. - # Recommended. - glx-no-stencil = true; - - # Use X Sync fence to sync clients' draw calls, to make sure all draw - # calls are finished before picom starts drawing. Needed on - # nvidia-drivers with GLX backend for some users. - xrender-sync-fence = true; - }; - }; - - # Try really hard to get QT to respect my GTK theme. - env.GTK_DATA_PREFIX = [ "${config.system.path}" ]; - env.QT_QPA_PLATFORMTHEME = "gtk2"; - qt5 = { style = "gtk2"; platformTheme = "gtk2"; }; - - services.xserver.displayManager.sessionCommands = '' - # GTK2_RC_FILES must be available to the display manager. - export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc" - ''; - - # Clean up leftovers, as much as we can - system.userActivationScripts.cleanupHome = '' - pushd "${config.user.home}" - rm -rf .compose-cache .nv .pki .dbus .fehbg - [ -s .xsession-errors ] || rm -f .xsession-errors* - popd - ''; - }; -} diff --git a/modules/desktop/gaming/emulators.nix b/modules/desktop/gaming/emulators.nix deleted file mode 100644 index cc1f7b91..00000000 --- a/modules/desktop/gaming/emulators.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.gaming.emulators; -in { - options.modules.desktop.gaming.emulators = { - psx.enable = mkBoolOpt false; # Playstation - ds.enable = mkBoolOpt false; # Nintendo DS - gb.enable = mkBoolOpt false; # GameBoy + GameBoy Color - gba.enable = mkBoolOpt false; # GameBoy Advance - snes.enable = mkBoolOpt false; # Super Nintendo - }; - - config = { - user.packages = with pkgs; [ - (mkIf cfg.psx.enable epsxe) - (mkIf cfg.ds.enable desmume) - (mkIf (cfg.gba.enable || - cfg.gb.enable || - cfg.snes.enable) - higan) - ]; - }; -} diff --git a/modules/desktop/gaming/steam.nix b/modules/desktop/gaming/steam.nix deleted file mode 100644 index 56cd1c35..00000000 --- a/modules/desktop/gaming/steam.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.gaming.steam; -in { - options.modules.desktop.gaming.steam = with types; { - enable = mkBoolOpt false; - hardware.enable = mkBoolOpt false; - libDir = mkOpt str "$XDG_DATA_HOME/steamlib"; - }; - - config = mkIf cfg.enable (mkMerge [ - { - # I avoid programs.steam.enable because it installs another steam binary, - # which the xdesktop package invokes, instead of my steam shims below. - hardware.opengl.enable = true; - hardware.opengl.driSupport32Bit = true; - hardware.pulseaudio.support32Bit = config.hardware.pulseaudio.enable; - - user.packages = with pkgs; [ - # Get steam to keep its garbage out of $HOME - (writeScriptBin "steam" '' - #!${stdenv.shell} - HOME="${cfg.libDir}" exec ${steam}/bin/steam "$@" - '') - # for running GOG and humble bundle games - (writeScriptBin "steam-run" '' - #!${stdenv.shell} - HOME="${cfg.libDir}" exec ${steam-run-native}/bin/steam-run "$@" - '') - # So a rofi entry exists - (makeDesktopItem { - name = "steam"; - desktopName = "Steam"; - icon = "steam"; - exec = "steam"; - terminal = "false"; - mimeType = "x-scheme-handler/steam"; - categories = "Network;FileTransfer;Game"; - }) - ]; - system.userActivationScripts.setupSteamDir = ''mkdir -p "${cfg.libDir}"''; - - # better for steam proton games - systemd.extraConfig = "DefaultLimitNOFILE=1048576"; - } - - (mkIf cfg.hardware.enable { - hardware.steam-hardware.enable = true; - }) - ]); -} diff --git a/modules/desktop/media/daw.nix b/modules/desktop/media/daw.nix deleted file mode 100644 index fa6cb2da..00000000 --- a/modules/desktop/media/daw.nix +++ /dev/null @@ -1,25 +0,0 @@ -# modules/desktop/media/daw.nix -# -# I make music for my games. LMMS is my DAW; or will be, once I've weened myself -# off of Fruityloops. When I'm in the mood for a quicky I fire up sunvox -# instead. It runs absolutely anywhere, even on my ipad and phone. As if I'd -# ever need to. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.media.daw; -in { - options.modules.desktop.media.daw = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - lmms # for making music - # sunvox # my favorite midi tracker - # audacity # for recording and remastering audio - ]; - }; -} diff --git a/modules/desktop/media/documents.nix b/modules/desktop/media/documents.nix deleted file mode 100644 index 4bc87e70..00000000 --- a/modules/desktop/media/documents.nix +++ /dev/null @@ -1,24 +0,0 @@ -# modules/desktop/media/docs.nix - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.media.documents; -in { - options.modules.desktop.media.documents = { - enable = mkBoolOpt false; - pdf.enable = mkBoolOpt false; - ebook.enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - (mkIf cfg.ebook.enable calibre) - (mkIf cfg.pdf.enable evince) - # zathura - ]; - - # TODO calibre/evince/zathura dotfiles - }; -} diff --git a/modules/desktop/media/graphics.nix b/modules/desktop/media/graphics.nix deleted file mode 100644 index 2b0f5387..00000000 --- a/modules/desktop/media/graphics.nix +++ /dev/null @@ -1,57 +0,0 @@ -# modules/desktop/media/graphics.nix -# -# The hardest part about switching to linux? Sacrificing Adobe. It really is -# difficult to replace and its open source alternatives don't *quite* cut it, -# but enough that I can do a fraction of it on Linux. For the rest I have a -# second computer dedicated to design work (and gaming). - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.media.graphics; - configDir = config.dotfiles.configDir; -in { - options.modules.desktop.media.graphics = { - enable = mkBoolOpt false; - tools.enable = mkBoolOpt true; - raster.enable = mkBoolOpt true; - vector.enable = mkBoolOpt true; - sprites.enable = mkBoolOpt true; - models.enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; - (if cfg.tools.enable then [ - font-manager # so many damned fonts... - imagemagick # for image manipulation from the shell - ] else []) ++ - - # replaces illustrator & indesign - (if cfg.vector.enable then [ - unstable.inkscape - ] else []) ++ - - # Replaces photoshop - (if cfg.raster.enable then [ - krita - gimp - gimpPlugins.resynthesizer # content-aware scaling in gimp - ] else []) ++ - - # Sprite sheets & animation - (if cfg.sprites.enable then [ - aseprite-unfree - ] else []) ++ - - # 3D modelling - (if cfg.models.enable then [ - blender - ] else []); - - home.configFile = mkIf cfg.raster.enable { - "GIMP/2.10" = { source = "${configDir}/gimp"; recursive = true; }; - }; - }; -} diff --git a/modules/desktop/media/mpv.nix b/modules/desktop/media/mpv.nix deleted file mode 100644 index 96dcf5e3..00000000 --- a/modules/desktop/media/mpv.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.media.mpv; -in { - options.modules.desktop.media.mpv = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - mpv-with-scripts - mpvc # CLI controller for mpv - ]; - }; -} diff --git a/modules/desktop/media/ncmpcpp.nix b/modules/desktop/media/ncmpcpp.nix deleted file mode 100644 index 449f069d..00000000 --- a/modules/desktop/media/ncmpcpp.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.media.ncmpcpp; - configDir = config.dotfiles.configDir; -in { - options.modules.desktop.media.ncmpcpp = { - enable = mkBoolOpt false; - # modipy.enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - (ncmpcpp.override { visualizerSupport = true; }) - ]; - - env.NCMPCPP_HOME = "$XDG_CONFIG_HOME/ncmpcpp"; - - # Symlink these one at a time because ncmpcpp writes other files to - # ~/.config/ncmpcpp, so it needs to be writeable. - home.configFile = { - "ncmpcpp/config".source = "${configDir}/ncmpcpp/config"; - "ncmpcpp/bindings".source = "${configDir}/ncmpcpp/bindings"; - }; - }; -} diff --git a/modules/desktop/media/recording.nix b/modules/desktop/media/recording.nix deleted file mode 100644 index 2a141d26..00000000 --- a/modules/desktop/media/recording.nix +++ /dev/null @@ -1,26 +0,0 @@ -# modules/desktop/media/recording.nix -# -# OBS to capture footage/stream, audacity for audio, handbrake to encode it all. -# This, paired with DaVinci Resolve for video editing (on my Windows system) and -# I have what I need for youtube videos and streaming. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.media.recording; -in { - options.modules.desktop.media.recording = { - enable = mkBoolOpt false; - audio.enable = mkBoolOpt true; - video.enable = mkBoolOpt true; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; - # for recording and remastering audio - (if cfg.audio.enable then [ audacity ] else []) ++ - # for longer term streaming/recording the screen - (if cfg.video.enable then [ obs-studio handbrake ] else []); - }; -} diff --git a/modules/desktop/media/spotify.nix b/modules/desktop/media/spotify.nix deleted file mode 100644 index 3587cfa0..00000000 --- a/modules/desktop/media/spotify.nix +++ /dev/null @@ -1,100 +0,0 @@ -# I use spotify for my music needs. Gone are the days where I'd manage 200gb+ of -# local music; most of which I haven't heard or don't even like. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.media.spotify; -in { - options.modules.desktop.media.spotify = { - enable = mkBoolOpt false; - tui.enable = mkBoolOpt false; # TODO - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - # spotify-tui is fine for selecting and playing music, but incomplete. We - # still occasionally need the official client for more sophisticated - # search and the "made for you" playlists. - spotify - - # # services.spotifyd doesn't work so we'll have to roll our own spotifyd + - # # spotify-tui solution. The dbus interface doesn't work, though, so we - # # have to wait for spotify-tui to implement CLI command for controlling - # # spotify playback. See - # # https://github.com/Rigellute/spotify-tui/issues/147 or for spotifyd to - # # get fixed. - # master.spotifyd - # (writeScriptBin "spt" '' - # #!${stdenv.shell} - # if ! systemctl --user is-active spotifyd >/dev/null; then - # systemctl --user start spotifyd - # fi - # echo $TMUX >/tmp/spt.tmux - # exec ${master.spotify-tui}/bin/spt - # '') - - # # Since dbus doesn't work with Nix's spotifyd/spotify-tui, and I always - # # use tmux for my terminal, may as well exploit tmux to control spotify. - # playerctl - # (writeScriptBin "spt-send" '' - # #!${stdenv.shell} - # dbus_cmd='playerctl -p spotify' - # tmux_cmd="tmux send-keys -t $(cat /tmp/spt.tmux | cut -d, -f3)" - # case "$1" in - # toggle) $dbus_cmd play-pause 2>/dev/null || $tmux_cmd " " ;; - # next) $dbus_cmd next 2>/dev/null || $tmux_cmd n ;; - # prev) $dbus_cmd previous 2>/dev/null || $tmux_cmd p ;; - # esac - # '') - - # (writeScriptBin "spt-send-notify" '' - # #!${stdenv.shell} - # client_id=$(pass www/spotify.com | grep -E '^client_id:' | awk '{print $2}') - # client_secretd=$(pass www/spotify.com | grep -E '^client_secret:' | awk '{print $2}') - # jq="${pkgs.jq}/bin/jq" - - # token=$(curl -s -X 'POST' -u $client_id:$client_secretd -d grant_type=client_credentials https://accounts.spotify.com/api/token | $jq '.access_token' | cut -d\" -f2) - # result=$? - # if [[ $result != 0 ]]; then - # notify-send "spt-send failure" "Could not acquire token" - # exit 1 - # fi - # case "$PLAYER_EVENT" in - # start) - # curl -s -X 'GET' https://api.spotify.com/v1/tracks/$TRACK_ID -H 'Accept: application/json' -H 'Content-Type: application/json' -H "Authorization:\"Bearer $token\"" | $jq '.name, .artists[].name, .album.name, .album.release_date, .track_number, .album.total_tracks' | xargs printf "\"Playing '%s' from '%s' (album: '%s' in %s (%s/%s))\"" | xargs notify-send --urgency=low --expire-time=3000 --icon=/usr/share/icons/gnome/32x32/actions/player_play.png --app-name=spotifyd spotifyd - # ;; - # stop) - # curl -s -X 'GET' https://api.spotify.com/v1/tracks/$TRACK_ID -H 'Accept: application/json' -H 'Content-Type: application/json' -H "Authorization:\"Bearer $token\"" | $jq '.name, .artists[].name, .album.name, .album.release_date, .track_number, .album.total_tracks' | xargs printf "Stoping music (Last song: '%s' from '%s' (album: '%s' in %s (%s/%s)))\"" | xargs notify-send --urgency=low --expire-time=3000 --icon=/usr/share/icons/gnome/32x32/actions/player_stop.png --app-name=spotifyd spotifyd - # ;; - # change) - # curl -s -X 'GET' https://api.spotify.com/v1/tracks/$TRACK_ID -H 'Accept: application/json' -H 'Content-Type: application/json' -H "Authorization:\"Bearer $token\"" | $jq '.name, .artists[].name, .album.name, .album.release_date, .track_number, .album.total_tracks' | xargs printf "\"Music changed to '%s' from '%s' (album: '%s' in %s (%s/%s))\"" | xargs notify-send --urgency=low --expire-time=3000 --icon=/usr/share/icons/gnome/32x32/actions/player_fwd.png --app-name=spotifyd spotifyd - # ;; - # *) 2>&1 echo "Unkown event." - # exit 2 - # ;; - # esac - # '') - ]; - - # systemd.user.services.spotifyd.serviceConfig = - # let spotifydConf = pkgs.writeText "spotifyd.conf" '' - # [global] - # username = g2qwjcs6334oacg1zg9wrihnn - # password_cmd = ${pkgs.pass}/bin/pass www/spotify.com | head -n1 - # backend = pulseaudio - # on_song_change_hook = spt-send-notify - # cache_path = ${config.my.home}/.cache/spotifyd - # ''; - # in { - # ExecStart = '' - # ${pkgs.master.spotifyd}/bin/spotifyd --no-daemon \ - # --cache-path /tmp/spotifyd \ - # --config-path ${spotifydConf} - # ''; - # Restart = "always"; - # RestartSec = 6; - # }; - }; -} diff --git a/modules/desktop/stumpwm.nix b/modules/desktop/stumpwm.nix deleted file mode 100644 index 18bacfff..00000000 --- a/modules/desktop/stumpwm.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.stumpwm; - configDir = config.dotfiles.configDir; -in { - options.modules.desktop.stumpwm = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - lightdm - dunst - libnotify - ]; - - # master.services.picom.enable = true; - services = { - redshift.enable = true; - xserver = { - enable = true; - windowManager.default = "stumpwm"; - windowManager.stumpwm.enable = true; - displayManager.lightdm.enable = true; - displayManager.lightdm.greeters.mini.enable = true; - }; - }; - - # link recursively so other modules can link files in their folders - home.configFile."stumpwm" = { - source = "${configDir}/stumpwm"; - recursive = true; - }; - }; -} diff --git a/modules/desktop/term/default.nix b/modules/desktop/term/default.nix deleted file mode 100644 index 79528254..00000000 --- a/modules/desktop/term/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.term; -in { - options.modules.desktop.term = { - default = mkOpt types.str "xterm"; - }; - - config = { - services.xserver.desktopManager.xterm.enable = mkDefault (cfg.default == "xterm"); - - env.TERMINAL = cfg.default; - }; -} diff --git a/modules/desktop/term/st.nix b/modules/desktop/term/st.nix deleted file mode 100644 index f95e2e2a..00000000 --- a/modules/desktop/term/st.nix +++ /dev/null @@ -1,34 +0,0 @@ -# modules/desktop/term/st.nix -# -# I like (x)st. This appears to be a controversial opinion; don't tell anyone, -# mkay? - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.term.st; -in { - options.modules.desktop.term.st = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - # xst-256color isn't supported over ssh, so revert to a known one - modules.shell.zsh.rcInit = '' - [ "$TERM" = xst-256color ] && export TERM=xterm-256color - ''; - - user.packages = with pkgs; [ - xst # st + nice-to-have extensions - (makeDesktopItem { - name = "xst"; - desktopName = "Suckless Terminal"; - genericName = "Default terminal"; - icon = "utilities-terminal"; - exec = "${xst}/bin/xst"; - categories = "Development;System;Utility"; - }) - ]; - }; -} diff --git a/modules/desktop/vm/lxd.nix b/modules/desktop/vm/lxd.nix deleted file mode 100644 index 44b74d12..00000000 --- a/modules/desktop/vm/lxd.nix +++ /dev/null @@ -1,32 +0,0 @@ -# Inspired by https://www.srid.ca/2012301.html - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.vm.lxd; -in { - options.modules.desktop.vm.lxd = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - virtualisation.lxd.enable = true; - - user.packages = [ - (pkgs.writeScriptBin "lxc-build-nixos-image" '' - #!/usr/bin/env nix-shell - #!nix-shell -i bash -p nixos-generators - set -xe - config=$1 - metaimg=`nixos-generate -f lxc-metadata \ - | xargs -r cat \ - | awk '{print $3}'` - img=`nixos-generate -c $config -f lxc \ - | xargs -r cat \ - | awk '{print $3}'` - lxc image import --alias nixos $metaimg $img - '') - ]; - }; -} diff --git a/modules/desktop/vm/qemu.nix b/modules/desktop/vm/qemu.nix deleted file mode 100644 index 2dd8967a..00000000 --- a/modules/desktop/vm/qemu.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.vm.qemu; -in { - options.modules.desktop.vm.qemu = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - qemu - ]; - }; -} - -# Creating an image: -# qemu-img create -f qcow2 disk.img -# Creating a snapshot (don't tamper with disk.img): -# qemu-img create -f qcow2 -b disk.img snapshot.img diff --git a/modules/desktop/vm/virtualbox.nix b/modules/desktop/vm/virtualbox.nix deleted file mode 100644 index 018b314a..00000000 --- a/modules/desktop/vm/virtualbox.nix +++ /dev/null @@ -1,25 +0,0 @@ -# modules/desktop/vm/virtualbox.nix -# -# For testing or building software on other OSes. If I find out how to get macOS -# on qemu/libvirt I'd be happy to leave virtualbox behind. - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.vm.virtualbox; -in { - options.modules.desktop.vm.virtualbox = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - virtualisation.virtualbox.host = { - enable = true; - # urg, takes so long to build, but needed for macOS guest - # enableExtensionPack = true; - }; - - user.extraGroups = [ "vboxusers" ]; - }; -} diff --git a/modules/dev/cc.nix b/modules/dev/cc.nix deleted file mode 100644 index 61291196..00000000 --- a/modules/dev/cc.nix +++ /dev/null @@ -1,27 +0,0 @@ -# modules/dev/cc.nix --- C & C++ -# -# I love C. I tolerate C++. I adore C with a few choice C++ features tacked on. -# Liking C/C++ seems to be an unpopular opinion. It's my guilty secret, so don't -# tell anyone pls. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.cc; -in { - options.modules.dev.cc = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - clang - gcc - bear - gdb - cmake - llvmPackages.libcxx - ]; - }; -} diff --git a/modules/dev/clojure.nix b/modules/dev/clojure.nix deleted file mode 100644 index 23f267d5..00000000 --- a/modules/dev/clojure.nix +++ /dev/null @@ -1,22 +0,0 @@ -# modules/dev/clojure.nix --- https://clojure.org/ -# -# I don't use clojure. Perhaps one day... - -{ config, options, lib, pkgs, my, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.clojure; -in { - options.modules.dev.clojure = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - clojure - joker - leiningen - ]; - }; -} diff --git a/modules/dev/common-lisp.nix b/modules/dev/common-lisp.nix deleted file mode 100644 index 71fc25bd..00000000 --- a/modules/dev/common-lisp.nix +++ /dev/null @@ -1,21 +0,0 @@ -# modules/dev/common-lisp.nix --- https://common-lisp.net/ -# -# Mostly for my stumpwm config, and the occasional dip into lisp gamedev. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.common-lisp; -in { - options.modules.dev.common-lisp = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - sbcl - lispPackages.quicklisp - ]; - }; -} diff --git a/modules/dev/lua.nix b/modules/dev/lua.nix deleted file mode 100644 index d1fbd93e..00000000 --- a/modules/dev/lua.nix +++ /dev/null @@ -1,26 +0,0 @@ -# modules/dev/lua.nix --- https://www.lua.org/ -# -# I use lua for modding, awesomewm or Love2D for rapid gamedev prototyping (when -# godot is overkill and I have the luxury of avoiding JS). I write my Love games -# in moonscript to get around lua's idiosynchrosies. That said, I install love2d -# on a per-project basis. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.lua; -in { - options.modules.dev.lua = { - enable = mkBoolOpt false; - love2D.enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - lua - luaPackages.moonscript - (mkIf cfg.love2D.enable love2d) - ]; - }; -} diff --git a/modules/dev/node.nix b/modules/dev/node.nix deleted file mode 100644 index e366fa7e..00000000 --- a/modules/dev/node.nix +++ /dev/null @@ -1,47 +0,0 @@ -# modules/dev/node.nix --- https://nodejs.org/en/ -# -# JS is one of those "when it's good, it's alright, when it's bad, it's a -# disaster" languages. - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.node; - node = pkgs.nodejs_latest; -in { - options.modules.dev.node = { - enable = mkBoolOpt false; - enableGlobally = mkBoolOpt false; - }; - - config = mkIf cfg.enable (mkMerge [ - (mkIf cfg.enableGlobally { - user.packages = with pkgs; [ - node - yarn - ]; - - # Run locally installed bin-script, e.g. n coffee file.coffee - environment.shellAliases = { - n = "PATH=\"$(${node}/bin/npm bin):$PATH\""; - ya = "yarn"; - }; - - env.PATH = [ "$(${pkgs.yarn}/bin/yarn global bin)" ]; - }) - - { - env.NPM_CONFIG_USERCONFIG = "$XDG_CONFIG_HOME/npm/config"; - env.NPM_CONFIG_CACHE = "$XDG_CACHE_HOME/npm"; - env.NPM_CONFIG_TMP = "$XDG_RUNTIME_DIR/npm"; - env.NPM_CONFIG_PREFIX = "$XDG_CACHE_HOME/npm"; - env.NODE_REPL_HISTORY = "$XDG_CACHE_HOME/node/repl_history"; - - home.configFile."npm/config".text = '' - cache=$XDG_CACHE_HOME/npm - prefix=$XDG_DATA_HOME/npm - ''; - } - ]); -} diff --git a/modules/dev/python.nix b/modules/dev/python.nix deleted file mode 100644 index 721166eb..00000000 --- a/modules/dev/python.nix +++ /dev/null @@ -1,51 +0,0 @@ -# modules/dev/python.nix --- https://godotengine.org/ -# -# Python's ecosystem repulses me. The list of environment "managers" exhausts -# me. The Py2->3 transition make trainwrecks jealous. But SciPy, NumPy, iPython -# and Jupyter can have my babies. Every single one. - -{ config, options, lib, pkgs, my, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.python; -in { - options.modules.dev.python = { - enable = mkBoolOpt false; - enableGlobally = mkBoolOpt false; - }; - - config = mkIf cfg.enable (mkMerge [ - (mkIf cfg.enableGlobally { - user.packages = with pkgs; [ - python37 - python37Packages.pip - python37Packages.ipython - python37Packages.black - python37Packages.setuptools - python37Packages.pylint - python37Packages.poetry - ]; - - environment.shellAliases = { - py = "python"; - py2 = "python2"; - py3 = "python3"; - po = "poetry"; - ipy = "ipython --no-banner"; - ipylab = "ipython --pylab=qt5 --no-banner"; - }; - }) - - { - env.IPYTHONDIR = "$XDG_CONFIG_HOME/ipython"; - env.PIP_CONFIG_FILE = "$XDG_CONFIG_HOME/pip/pip.conf"; - env.PIP_LOG_FILE = "$XDG_DATA_HOME/pip/log"; - env.PYLINTHOME = "$XDG_DATA_HOME/pylint"; - env.PYLINTRC = "$XDG_CONFIG_HOME/pylint/pylintrc"; - env.PYTHONSTARTUP = "$XDG_CONFIG_HOME/python/pythonrc"; - env.PYTHON_EGG_CACHE = "$XDG_CACHE_HOME/python-eggs"; - env.JUPYTER_CONFIG_DIR = "$XDG_CONFIG_HOME/jupyter"; - } - ]); -} diff --git a/modules/dev/rust.nix b/modules/dev/rust.nix deleted file mode 100644 index b009911e..00000000 --- a/modules/dev/rust.nix +++ /dev/null @@ -1,40 +0,0 @@ -# modules/dev/rust.nix --- https://rust-lang.org -# -# Oh Rust. The light of my life, fire of my loins. Years of C++ has conditioned -# me to believe there was no hope left, but the gods have heard us. Sure, you're -# not going to replace C/C++. Sure, your starlight popularity has been -# overblown. Sure, macros aren't namespaced, cargo bypasses crates.io, and there -# is no formal proof of your claims for safety, but who said you have to solve -# all the world's problems to be wonderful? - -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.rust; -in { - options.modules.dev.rust = { - enable = mkBoolOpt false; - enableGlobally = mkBoolOpt false; - }; - - config = mkIf cfg.enable (mkMerge [ - (mkIf cfg.enableGlobally { - user.packages = [ pkgs.rustup ]; - - env.PATH = [ "$(${pkgs.yarn}/bin/yarn global bin)" ]; - }) - - { - env.RUSTUP_HOME = "$XDG_DATA_HOME/rustup"; - env.CARGO_HOME = "$XDG_DATA_HOME/cargo"; - env.PATH = [ "$CARGO_HOME/bin" ]; - - environment.shellAliases = { - rs = "rustc"; - rsp = "rustup"; - ca = "cargo"; - }; - } - ]); -} diff --git a/modules/dev/scala.nix b/modules/dev/scala.nix deleted file mode 100644 index 90106062..00000000 --- a/modules/dev/scala.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, options, lib, pkgs, my, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.scala; -in { - options.modules.dev.scala = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - scala - jdk - sbt - ]; - }; -} diff --git a/modules/dev/shell.nix b/modules/dev/shell.nix deleted file mode 100644 index 4e4e539f..00000000 --- a/modules/dev/shell.nix +++ /dev/null @@ -1,23 +0,0 @@ -# modules/dev/shell.nix --- http://zsh.sourceforge.net/ -# -# Shell script programmers are strange beasts. Writing programs in a language -# that wasn't intended as a programming language. Alas, it is not for us mere -# mortals to question the will of the ancient ones. If they want shell programs, -# they get shell programs. - -{ config, options, lib, pkgs, my, ... }: - -with lib; -with lib.my; -let cfg = config.modules.dev.shell; -in { - options.modules.dev.shell = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - shellcheck - ]; - }; -} diff --git a/modules/editors/default.nix b/modules/editors/default.nix deleted file mode 100644 index 590df572..00000000 --- a/modules/editors/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.editors; -in { - options.modules.editors = { - default = mkOpt types.str "vim"; - }; - - config = mkIf (cfg.default != null) { - env.EDITOR = cfg.default; - }; -} diff --git a/modules/editors/emacs.nix b/modules/editors/emacs.nix deleted file mode 100644 index d824a7cc..00000000 --- a/modules/editors/emacs.nix +++ /dev/null @@ -1,87 +0,0 @@ -# Emacs is my main driver. I'm the author of Doom Emacs -# https://github.com/hlissner/doom-emacs. This module sets it up to meet my -# particular Doomy needs. - -{ config, lib, pkgs, inputs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.editors.emacs; - configDir = config.dotfiles.configDir; -in { - options.modules.editors.emacs = { - enable = mkBoolOpt false; - doom = { - enable = mkBoolOpt true; - fromSSH = mkBoolOpt false; - }; - }; - - config = mkIf cfg.enable { - nixpkgs.overlays = [ inputs.emacs-overlay.overlay ]; - - user.packages = with pkgs; [ - ## Emacs itself - binutils # native-comp needs 'as', provided by this - # emacsPgtkGcc # 28 + pgtk + native-comp - ((emacsPackagesNgGen emacsPgtkGcc).emacsWithPackages (epkgs: [ - epkgs.vterm - ])) - - ## Doom dependencies - git - (ripgrep.override {withPCRE2 = true;}) - gnutls # for TLS connectivity - - ## Optional dependencies - fd # faster projectile indexing - imagemagick # for image-dired - (mkIf (config.programs.gnupg.agent.enable) - pinentry_emacs) # in-emacs gnupg prompts - zstd # for undo-fu-session/undo-tree compression - - ## Module dependencies - # :checkers spell - (aspellWithDicts (ds: with ds; [ - en en-computers en-science - ])) - # :checkers grammar - languagetool - # :tools editorconfig - editorconfig-core-c # per-project style config - # :tools lookup & :lang org +roam - sqlite - # :lang cc - ccls - # :lang javascript - nodePackages.javascript-typescript-langserver - # :lang latex & :lang org (latex previews) - texlive.combined.scheme-medium - # :lang beancount - beancount - unstable.fava # HACK Momentarily broken on nixos-unstable - # :lang rust - rustfmt - unstable.rust-analyzer - ]; - - env.PATH = [ "$XDG_CONFIG_HOME/emacs/bin" ]; - - modules.shell.zsh.rcFiles = [ "${configDir}/emacs/aliases.zsh" ]; - - fonts.fonts = [ pkgs.emacs-all-the-icons-fonts ]; - - # init.doomEmacs = mkIf cfg.doom.enable '' - # if [ -d $HOME/.config/emacs ]; then - # ${optionalString cfg.doom.fromSSH '' - # git clone git@github.com:hlissner/doom-emacs.git $HOME/.config/emacs - # git clone git@github.com:hlissner/doom-emacs-private.git $HOME/.config/doom - # ''} - # ${optionalString (cfg.doom.fromSSH == false) '' - # git clone https://github.com/hlissner/doom-emacs $HOME/.config/emacs - # git clone https://github.com/hlissner/doom-emacs-private $HOME/.config/doom - # ''} - # fi - # ''; - }; -} diff --git a/modules/editors/vim.nix b/modules/editors/vim.nix deleted file mode 100644 index e4d26962..00000000 --- a/modules/editors/vim.nix +++ /dev/null @@ -1,286 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.editors.vim; -in { - options.modules.editors.vim = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - editorconfig-core-c - unstable.neovim - ]; - - # options.users - home-manager.users.anish.programs.neovim = { - enable = true; - - # = TODO something like this n00b. - # builtins.concatStringsSep "\n" [ - # (lib.strings.fileContents ./base.vim) - # (lib.strings.fileContents ./plugins.vim) - # (lib.strings.fileContents ./lsp.vim) - - # # this allows you to add lua config files - # '' - # lua << EOF - # ${lib.strings.fileContents ./config.lua} - # ${lib.strings.fileContents ./lsp.lua} - # EOF - # '' - # ]; - - #home-manager.programs.nvim = { - # extraConfig = '' - # set tabstop=2 - # set showmatch - # set shiftwidth=2 - # set noexpandtab - # set autoindent - # - # set foldmethod=indent " fold based on indent - # set number - # set nocompatible - # set relativenumber - # set showtabline=2 - # set autowriteall - # syntax on - # set list lcs=tab:\|\ - # filetype plugin on - # - # set termguicolors - # let ayucolor="dark" - # colorscheme ayu - # - # " window - # nmap wh :topleft vnew - # nmap wl :botright vnew - # nmap wk :topleft new - # nmap wj :botright new - # - # let mapleader = "\" - # - # " lightline colorscheme - # let g:lightline = { - # \ 'colorscheme': 'seoul256', - # \ } - # - # " moving splits with vim movements. - # :tnoremap h - # :tnoremap j - # :tnoremap k - # :tnoremap l - # :inoremap h - # :inoremap j - # :inoremap k - # :inoremap l - # :nnoremap h - # :nnoremap j - # :nnoremap k - # :nnoremap l - # :nnoremap "=strftime("%Y-%m-%d %H:%M:") - # :inoremap =strftime("%Y-%m-%d %H:%M:") - # - # " exit normal mode in terminal - # :tnoremap - # - # let g:syntastic_always_populate_loc_list = 1 - # let g:syntastic_auto_loc_list = 1 - # let g:syntastic_check_on_open = 1 - # let g:syntastic_check_on_wq = 0 - # - # let g:rainbow_active = 0 - # autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll - # - # " keyboard commands - # map t :NERDTreeToggle - # map s :w - # map q :wq - # map r :RainbowParenthesesToggleAll - # map zs :ZettelSearch - # map zo :ZettelOpen - # map zn :ZettelNew - # - # - # " NERDTree - # " open on directory - # autocmd StdinReadPre * let s:std_in=1 - # - # " coc - # " - # " if hidden is not set, TextEdit might fail. - # set hidden - # - # " Some servers have issues with backup files, see #649 - # set nobackup - # set nowritebackup - # - # " Better display for messages - # set cmdheight=2 - # - # " You will have bad experience for diagnostic messages when it's default 4000. - # set updatetime=300 - # - # " don't give |ins-completion-menu| messages. - # set shortmess+=c - # - # " always show signcolumns - # set signcolumn=yes - # - # " Use tab for trigger completion with characters ahead and navigate. - # " Use command ':verbose imap ' to make sure tab is not mapped by other plugin. - # inoremap - # \ pumvisible() ? "\" : - # \ check_back_space() ? "\" : - # \ coc#refresh() - # inoremap pumvisible() ? "\" : "\" - # - # function! s:check_back_space() abort - # let col = col('.') - 1 - # return !col || getline('.')[col - 1] =~# '\s' - # endfunction - # - # " Use to trigger completion. - # inoremap coc#refresh() - # - # " Use to confirm completion, `u` means break undo chain at current position. - # " Coc only does snippet and additional edit on confirm. - # inoremap pumvisible() ? "\" : "\u\" - # " Or use `complete_info` if your vim support it, like: - # " inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" - # - # " Use `[g` and `]g` to navigate diagnostics - # nmap [g (coc-diagnostic-prev) - # nmap ]g (coc-diagnostic-next) - # - # " Remap keys for gotos - # nmap gd (coc-definition) - # nmap gy (coc-type-definition) - # nmap gi (coc-implementation) - # nmap gr (coc-references) - # - # " Use K to show documentation in preview window - # nnoremap K :call show_documentation() - # - # function! s:show_documentation() - # if (index(['vim','help'], &filetype) >= 0) - # execute 'h '.expand('') - # else - # call CocAction('doHover') - # endif - # endfunction - # - # " Highlight symbol under cursor on CursorHold - # autocmd CursorHold * silent call CocActionAsync('highlight') - # - # " Remap for rename current word - # nmap rn (coc-rename) - # - # " Remap for format selected region - # xmap f (coc-format-selected) - # nmap f (coc-format-selected) - # - # augroup mygroup - # autocmd! - # " Setup formatexpr specified filetype(s). - # autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') - # " Update signature help on jump placeholder - # autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') - # augroup end - # - # " Remap for do codeAction of selected region, ex: `aap` for current paragraph - # xmap a (coc-codeaction-selected) - # nmap a (coc-codeaction-selected) - # - # " Remap for do codeAction of current line - # nmap ac (coc-codeaction) - # " Fix autofix problem of current line - # nmap qf (coc-fix-current) - # - # " Create mappings for function text object, requires document symbols feature of languageserver. - # xmap if (coc-funcobj-i) - # xmap af (coc-funcobj-a) - # omap if (coc-funcobj-i) - # omap af (coc-funcobj-a) - # - # " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python - # nmap (coc-range-select) - # xmap (coc-range-select) - # - # " Use `:Format` to format current buffer - # command! -nargs=0 Format :call CocAction('format') - # - # " Use `:Fold` to fold current buffer - # command! -nargs=? Fold :call CocAction('fold', ) - # - # " use `:OR` for organize import of current buffer - # command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') - # - # " Add status line support, for integration with other plugin, checkout `:h coc-status` - # " set statusline^=%{coc#status()}%{get(b:,'coc_current_function',"")} - # - # " Using CocList - # " Show all diagnostics - # nnoremap a :CocList diagnostics - # " Manage extensions - # nnoremap e :CocList extensions - # " Show commands - # nnoremap c :CocList commands - # " Find symbol of current document - # nnoremap o :CocList outline - # " Search workspace symbols - # nnoremap s :CocList -I symbols - # " Do default action for next item. - # nnoremap j :CocNext - # " Do default action for previous item. - # nnoremap k :CocPrev - # " Resume latest coc list - # nnoremap p :CocListResume - # - # au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl - # ''; - - # extraPackages = with pkgs.vimPlugins; [ - # vim-nix - # fzf-vim - # vim-elixir - # emmet-vim - # nerdtree - # goyo-vim - # vim-sneak - # lightline-vim - # csv-vim - # vimwiki - # coc-nvim - # coc-json - # coc-python - # coc-pairs - # coc-emmet - # emmet-vim - # LanguageClient-neovim - # ayu-vim - # rainbow_parentheses-vim - # vim-surround - # vim-fugitive - # #iron-nvim - # #nvim-colorizer - # vim-devicons - # # testing - # #vim-processing - # #vim-tidal - # taskwiki - # #vim-zettel - # ]; - }; - - environment.shellAliases = { - vim = "nvim"; - v = "nvim"; - k = "vim -c :VimwikiIndex"; - kz = "vim -c :VimwikiIndex -c :ZettelNew"; - }; - }; -} diff --git a/modules/hardware/audio.nix b/modules/hardware/audio.nix deleted file mode 100644 index 9508b3d4..00000000 --- a/modules/hardware/audio.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.hardware.audio; -in { - options.modules.hardware.audio = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - sound.enable = true; - hardware.pulseaudio.enable = true; - - # HACK Prevents ~/.esd_auth files by disabling the esound protocol module - # for pulseaudio, which I likely don't need. Is there a better way? - hardware.pulseaudio.configFile = - let inherit (pkgs) runCommand pulseaudio; - paConfigFile = - runCommand "disablePulseaudioEsoundModule" - { buildInputs = [ pulseaudio ]; } '' - mkdir "$out" - cp ${pulseaudio}/etc/pulse/default.pa "$out/default.pa" - sed -i -e 's|load-module module-esound-protocol-unix|# ...|' "$out/default.pa" - ''; - in mkIf config.hardware.pulseaudio.enable - "${paConfigFile}/default.pa"; - - user.extraGroups = [ "audio" ]; - }; -} diff --git a/modules/hardware/bluetooth.nix b/modules/hardware/bluetooth.nix deleted file mode 100644 index 195f1237..00000000 --- a/modules/hardware/bluetooth.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let hwCfg = config.modules.hardware; - cfg = hwCfg.bluetooth; -in { - options.modules.hardware.bluetooth = { - enable = mkBoolOpt false; - audio.enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable (mkMerge [ - { hardware.bluetooth.enable = true; } - - (mkIf cfg.audio.enable { - hardware.pulseaudio = { - # NixOS allows either a lightweight build (default) or full build of - # PulseAudio to be installed. Only the full build has Bluetooth - # support, so it must be selected here. - package = pkgs.pulseaudioFull; - # Enable additional codecs - extraModules = [ pkgs.pulseaudio-modules-bt ]; - }; - - hardware.bluetooth.config = { - General.Enable = "Source,Sink,Media,Socket"; - }; - }) - ]); -} diff --git a/modules/hardware/ergodox.nix b/modules/hardware/ergodox.nix deleted file mode 100644 index 3353b17f..00000000 --- a/modules/hardware/ergodox.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.hardware.ergodox; -in { - options.modules.hardware.ergodox = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = [ pkgs.unstable.wally-cli ]; - - hardware.keyboard.zsa.enable = true; - - user.extraGroups = [ "plugdev" ]; - - services.xserver.xkbOptions = "compose:ralt"; - }; -} diff --git a/modules/hardware/fs.nix b/modules/hardware/fs.nix deleted file mode 100644 index 15476b3d..00000000 --- a/modules/hardware/fs.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.hardware.fs; -in { - options.modules.hardware.fs = { - enable = mkBoolOpt false; - zfs.enable = mkBoolOpt false; - ssd.enable = mkBoolOpt false; - # TODO automount.enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable (mkMerge [ - { - programs.udevil.enable = true; - - # Support for more filesystems, mostly to support external drives - environment.systemPackages = with pkgs; [ - sshfs - exfat # Windows drives - ntfs3g # Windows drives - hfsprogs # MacOS drives - ]; - } - - (mkIf (!cfg.zfs.enable && cfg.ssd.enable) { - services.fstrim.enable = true; - }) - - (mkIf cfg.zfs.enable (mkMerge [ - { - boot.loader.grub.copyKernels = true; - boot.supportedFilesystems = [ "zfs" ]; - boot.zfs.devNodes = "/dev/disk/by-partuuid"; - services.zfs.autoScrub.enable = true; - } - - (mkIf cfg.ssd.enable { - # Will only TRIM SSDs; skips over HDDs - services.fstrim.enable = false; - services.zfs.trim.enable = true; - }) - ])) - ]); -} diff --git a/modules/hardware/nvidia.nix b/modules/hardware/nvidia.nix deleted file mode 100644 index 4073118d..00000000 --- a/modules/hardware/nvidia.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.hardware.nvidia; -in { - options.modules.hardware.nvidia = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - hardware.opengl.enable = true; - - services.xserver.videoDrivers = [ "nvidia" ]; - - environment.systemPackages = with pkgs; [ - # Respect XDG conventions, damn it! - (writeScriptBin "nvidia-settings" '' - #!${stdenv.shell} - mkdir -p "$XDG_CONFIG_HOME/nvidia" - exec ${config.boot.kernelPackages.nvidia_x11.settings}/bin/nvidia-settings --config="$XDG_CONFIG_HOME/nvidia/settings" - '') - ]; - }; -} diff --git a/modules/hardware/razer.nix b/modules/hardware/razer.nix deleted file mode 100644 index 48e2a13f..00000000 --- a/modules/hardware/razer.nix +++ /dev/null @@ -1,22 +0,0 @@ -# modules/hardware/razer.nix --- support for razer devices - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.hardware.razer; -in { - options.modules.hardware.razer = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - hardware.openrazer.enable = true; - - user.extraGroups = [ "plugdev" ]; - - environment.systemPackages = with pkgs; [ - # TODO Install polychromatic - ]; - }; -} diff --git a/modules/hardware/sensors.nix b/modules/hardware/sensors.nix deleted file mode 100644 index 42739013..00000000 --- a/modules/hardware/sensors.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.hardware.sensors; -in { - options.modules.hardware.sensors = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = [ pkgs.lm_sensors ]; - }; -} diff --git a/modules/hardware/wacom.nix b/modules/hardware/wacom.nix deleted file mode 100644 index b93bccf6..00000000 --- a/modules/hardware/wacom.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.hardware.wacom; -in -{ - options.modules.hardware.wacom = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - # For my intuos4 pro. Doesn't work for cintiqs. - services.xserver.wacom.enable = true; - # TODO Move this to udev - system.userActivationScripts.wacom = '' - # lock tablet to main display - if xinput list --id-only "Wacom Intuos Pro S Pen stylus" 2>&1 >/dev/null; then - xinput map-to-output $(xinput list --id-only "Wacom Intuos Pro S Pen stylus") DVI-I-1 - xinput map-to-output $(xinput list --id-only "Wacom Intuos Pro S Pen eraser") DVI-I-1 - xinput map-to-output $(xinput list --id-only "Wacom Intuos Pro S Pen cursor") DVI-I-1 - fi - ''; - }; -} diff --git a/modules/options.nix b/modules/options.nix deleted file mode 100644 index 2a7fc8f3..00000000 --- a/modules/options.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ config, options, lib, home-manager, ... }: - -with lib; -with lib.my; -{ - options = with types; { - user = mkOpt attrs {}; - - dotfiles = { - dir = mkOpt path - (findFirst pathExists (toString ../.) [ - "${config.user.home}/.config/dotfiles" - "/etc/dotfiles" - ]); - binDir = mkOpt path "${config.dotfiles.dir}/bin"; - configDir = mkOpt path "${config.dotfiles.dir}/config"; - modulesDir = mkOpt path "${config.dotfiles.dir}/modules"; - themesDir = mkOpt path "${config.dotfiles.modulesDir}/themes"; - }; - - home = { - file = mkOpt' attrs {} "Files to place directly in $HOME"; - configFile = mkOpt' attrs {} "Files to place in $XDG_CONFIG_HOME"; - dataFile = mkOpt' attrs {} "Files to place in $XDG_DATA_HOME"; - }; - - env = mkOption { - type = attrsOf (oneOf [ str path (listOf (either str path)) ]); - apply = mapAttrs - (n: v: if isList v - then concatMapStringsSep ":" (x: toString x) v - else (toString v)); - default = {}; - description = "TODO"; - }; - }; - - config = { - user = - let user = builtins.getEnv "USER"; - name = if elem user [ "" "root" ] then "anish" else user; - in { - inherit name; - description = "The primary user account"; - extraGroups = [ "wheel" ]; - isNormalUser = true; - home = "/home/${name}"; - group = "users"; - uid = 1000; - }; - - # Install user packages to /etc/profiles instead. Necessary for - # nixos-rebuild build-vm to work. - home-manager = { - useUserPackages = true; - - # I only need a subset of home-manager's capabilities. That is, access to - # its home.file, home.xdg.configFile and home.xdg.dataFile so I can deploy - # files easily to my $HOME, but 'home-manager.users.hlissner.home.file.*' - # is much too long and harder to maintain, so I've made aliases in: - # - # home.file -> home-manager.users.hlissner.home.file - # home.configFile -> home-manager.users.hlissner.home.xdg.configFile - # home.dataFile -> home-manager.users.hlissner.home.xdg.dataFile - users.${config.user.name} = { - home = { - file = mkAliasDefinitions options.home.file; - # Necessary for home-manager to work with flakes, otherwise it will - # look for a nixpkgs channel. - stateVersion = config.system.stateVersion; - }; - xdg = { - configFile = mkAliasDefinitions options.home.configFile; - dataFile = mkAliasDefinitions options.home.dataFile; - }; - }; - }; - - users.users.${config.user.name} = mkAliasDefinitions options.user; - - nix = let users = [ "root" config.user.name ]; in { - trustedUsers = users; - allowedUsers = users; - }; - - # must already begin with pre-existing PATH. Also, can't use binDir here, - # because it contains a nix store path. - env.PATH = [ "$DOTFILES_BIN" "$XDG_BIN_HOME" "$PATH" ]; - - environment.extraInit = - concatStringsSep "\n" - (mapAttrsToList (n: v: "export ${n}=\"${v}\"") config.env); - }; -} diff --git a/modules/security.nix b/modules/security.nix deleted file mode 100644 index 45ab953d..00000000 --- a/modules/security.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ config, lib, ... }: - -{ - ## System security tweaks - # sets hidepid=2 on /proc (make process info visible only to owning user) - # NOTE Was removed on nixpkgs-unstable because it doesn't do anything - # security.hideProcessInformation = true; - # Prevent replacing the running kernel w/o reboot - security.protectKernelImage = true; - - # tmpfs = /tmp is mounted in ram. Doing so makes temp file management speedy - # on ssd systems, and volatile! Because it's wiped on reboot. - boot.tmpOnTmpfs = lib.mkDefault true; - # If not using tmpfs, which is naturally purged on reboot, we must clean it - # /tmp ourselves. /tmp should be volatile storage! - boot.cleanTmpDir = lib.mkDefault (!config.boot.tmpOnTmpfs); - - # Fix a security hole in place for backwards compatibility. See desc in - # nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix - boot.loader.systemd-boot.editor = false; - - boot.kernel.sysctl = { - # The Magic SysRq key is a key combo that allows users connected to the - # system console of a Linux kernel to perform some low-level commands. - # Disable it, since we don't need it, and is a potential security concern. - "kernel.sysrq" = 0; - - ## TCP hardening - # Prevent bogus ICMP errors from filling up logs. - "net.ipv4.icmp_ignore_bogus_error_responses" = 1; - # Reverse path filtering causes the kernel to do source validation of - # packets received from all interfaces. This can mitigate IP spoofing. - "net.ipv4.conf.default.rp_filter" = 1; - "net.ipv4.conf.all.rp_filter" = 1; - # Do not accept IP source route packets (we're not a router) - "net.ipv4.conf.all.accept_source_route" = 0; - "net.ipv6.conf.all.accept_source_route" = 0; - # Don't send ICMP redirects (again, we're on a router) - "net.ipv4.conf.all.send_redirects" = 0; - "net.ipv4.conf.default.send_redirects" = 0; - # Refuse ICMP redirects (MITM mitigations) - "net.ipv4.conf.all.accept_redirects" = 0; - "net.ipv4.conf.default.accept_redirects" = 0; - "net.ipv4.conf.all.secure_redirects" = 0; - "net.ipv4.conf.default.secure_redirects" = 0; - "net.ipv6.conf.all.accept_redirects" = 0; - "net.ipv6.conf.default.accept_redirects" = 0; - # Protects against SYN flood attacks - "net.ipv4.tcp_syncookies" = 1; - # Incomplete protection again TIME-WAIT assassination - "net.ipv4.tcp_rfc1337" = 1; - - ## TCP optimization - # TCP Fast Open is a TCP extension that reduces network latency by packing - # data in the sender’s initial TCP SYN. Setting 3 = enable TCP Fast Open for - # both incoming and outgoing connections: - "net.ipv4.tcp_fastopen" = 3; - # Bufferbloat mitigations + slight improvement in throughput & latency - "net.ipv4.tcp_congestion_control" = "bbr"; - "net.core.default_qdisc" = "cake"; - }; - boot.kernelModules = [ "tcp_bbr" ]; - - # Change me later! - user.initialPassword = "nixos"; - users.users.root.initialPassword = "nixos"; - - # So we don't have to do this later... - security.acme.acceptTerms = true; -} diff --git a/modules/services/calibre.nix b/modules/services/calibre.nix deleted file mode 100644 index 22c28347..00000000 --- a/modules/services/calibre.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.calibre; -in { - options.modules.services.calibre = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - services.calibre-server.enable = true; - - networking.firewall.allowedTCPPorts = [ 8080 ]; - }; -} diff --git a/modules/services/docker.nix b/modules/services/docker.nix deleted file mode 100644 index 1c037243..00000000 --- a/modules/services/docker.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.docker; - configDir = config.dotfiles.configDir; -in { - options.modules.services.docker = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - docker - docker-compose - ]; - - env.DOCKER_CONFIG = "$XDG_CONFIG_HOME/docker"; - env.MACHINE_STORAGE_PATH = "$XDG_DATA_HOME/docker/machine"; - - user.extraGroups = [ "docker" ]; - - modules.shell.zsh.rcFiles = [ "${configDir}/docker/aliases.zsh" ]; - - virtualisation = { - docker = { - enable = true; - autoPrune.enable = true; - enableOnBoot = false; - # listenOptions = []; - }; - }; - }; -} diff --git a/modules/services/fail2ban.nix b/modules/services/fail2ban.nix deleted file mode 100644 index bdc7b478..00000000 --- a/modules/services/fail2ban.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.fail2ban; -in { - options.modules.services.fail2ban = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - services.fail2ban = { - enable = true; - ignoreIP = [ "127.0.0.1/16" "192.168.1.0/24" ]; - banaction-allports = "iptables-allports"; - bantime-increment = { - enable = true; - maxtime = "168h"; - factor = "4"; - }; - jails.DEFAULT = '' - blocktype = DROP - bantime = 1h - findtime = 1h - ''; - }; - - # Extra filters - environment.etc = { - "fail2ban/filter.d/vaultwarden.conf".text = '' - [INCLUDES] - before = common.conf - - [Definition] - failregex = ^.*Username or password is incorrect\. Try again\. IP: \. Username:.*$ - ignoreregex = - journalmatch = _SYSTEMD_UNIT=vaultwarden.service - ''; - "fail2ban/filter.d/gitea.conf".text = '' - [Definition] - failregex = .*(Failed authentication attempt|invalid credentials|Attempted access of unknown user).* from - ignoreregex = - journalmatch = _SYSTEMD_UNIT=gitea.service - ''; - }; - }; -} diff --git a/modules/services/gitea.nix b/modules/services/gitea.nix deleted file mode 100644 index ea226bfd..00000000 --- a/modules/services/gitea.nix +++ /dev/null @@ -1,59 +0,0 @@ -# modules/services/gitea.nix -# -# Gitea is essentially a self-hosted github. This modules configures it with the -# expectation that it will be served over an SSL-secured reverse proxy (best -# paired with my modules.services.nginx module). -# -# Resources -# Config: https://docs.gitea.io/en-us/config-cheat-sheet/ -# API: https://docs.gitea.io/en-us/api-usage/ - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.gitea; -in { - options.modules.services.gitea = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - # Allows git@... clone addresses rather than gitea@... - users.users.git = { - useDefaultShell = true; - home = "/var/lib/gitea"; - group = "gitea"; - isSystemUser = true; - }; - - user.extraGroups = [ "gitea" ]; - - services.gitea = { - enable = true; - lfs.enable = true; - - user = "git"; - database.user = "git"; - - # We're assuming SSL-only connectivity - cookieSecure = true; - # Only log what's important, but Info is necessary for fail2ban to work - log.level = "Info"; - settings = { - server.DISABLE_ROUTER_LOG = true; - database.LOG_SQL = false; - service.ENABLE_BASIC_AUTHENTICATION = false; - }; - - dump.interval = "daily"; - }; - - services.fail2ban.jails.gitea = '' - enabled = true - filter = gitea - banaction = %(banaction_allports)s - maxretry = 5 - ''; - }; -} diff --git a/modules/services/jellyfin.nix b/modules/services/jellyfin.nix deleted file mode 100644 index ecb6914f..00000000 --- a/modules/services/jellyfin.nix +++ /dev/null @@ -1,23 +0,0 @@ -# Finally, a decent open alternative to Plex! - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.jellyfin; -in { - options.modules.services.jellyfin = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - services.jellyfin.enable = true; - - networking.firewall = { - allowedTCPPorts = [ 8096 ]; - allowedUDPPorts = [ 8096 ]; - }; - - user.extraGroups = [ "jellyfin" ]; - }; -} diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix deleted file mode 100644 index ffb145e5..00000000 --- a/modules/services/nginx.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.nginx; -in { - options.modules.services.nginx = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - networking.firewall.allowedTCPPorts = [ 80 443 ]; - - user.extraGroups = [ "nginx" ]; - - services.nginx = { - enable = true; - - # Use recommended settings - recommendedGzipSettings = true; - recommendedOptimisation = true; - recommendedProxySettings = true; - recommendedTlsSettings = true; - - # Reduce the permitted size of client requests, to reduce the likelihood - # of buffer overflow attacks. This can be tweaked on a per-vhost basis, as - # needed. - clientMaxBodySize = "128k"; # default 10m - commonHttpConfig = '' - client_body_buffer_size 4k; # default: 8k - large_client_header_buffers 2 4k; # default: 4 8k - ''; - }; - }; -} - -# Helpful nginx snippets -# -# Set expires headers for static files and turn off logging. -# location ~* ^.+\.(js|css|swf|xml|txt|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|r ss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav |bmp|rtf)$ { -# access_log off; log_not_found off; expires 30d; -# } -# -# Deny all attempts to access PHP Files in the uploads directory -# location ~* /(?:uploads|files)/.*\.php$ { -# deny all; -# } diff --git a/modules/services/ssh.nix b/modules/services/ssh.nix deleted file mode 100644 index 331c8f84..00000000 --- a/modules/services/ssh.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ options, config, lib, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.ssh; -in { - options.modules.services.ssh = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - services.openssh = { - enable = true; - challengeResponseAuthentication = false; - passwordAuthentication = false; - }; - - user.openssh.authorizedKeys.keys = - if config.user.name == "hlissner" - then [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB71rSnjuC06Qq3NLXQJwSz7jazoB+umydddrxL6vg1a henrik@lissner.net" ] - else []; - }; -} diff --git a/modules/services/syncthing.nix b/modules/services/syncthing.nix deleted file mode 100644 index f21a6fd5..00000000 --- a/modules/services/syncthing.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ config, options, pkgs, lib, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.syncthing; -in { - options.modules.services.syncthing = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - services.syncthing = rec { - enable = true; - openDefaultPorts = true; - user = config.user.name; - configDir = "${config.user.home}/.config/syncthing"; - dataDir = "${config.user.home}/.local/share/syncthing"; - }; - }; -} diff --git a/modules/services/teamviewer.nix b/modules/services/teamviewer.nix deleted file mode 100644 index c26e7a49..00000000 --- a/modules/services/teamviewer.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.teamviewer; -in { - options.modules.services.teamviewer = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - services.teamviewer.enable = true; - }; -} diff --git a/modules/services/transmission.nix b/modules/services/transmission.nix deleted file mode 100644 index 203c43e5..00000000 --- a/modules/services/transmission.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ config, options, pkgs, lib, my, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.transmission; -in { - options.modules.services.transmission = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - services.transmission = { - enable = true; - home = "${config.user.home}/torrents"; - settings = { - incomplete-dir-enabled = true; - rpc-whitelist = "127.0.0.1,192.168.*.*"; - rpc-host-whitelist = "*"; - rpc-host-whitelist-enabled = true; - ratio-limit = 0; - ratio-limit-enabled = true; - }; - }; - - networking.firewall = { - allowedTCPPorts = [ 51413 ]; - allowedUDPPorts = [ 51413 ]; - }; - - user.extraGroups = [ "transmission" ]; - }; -} diff --git a/modules/services/vaultwarden.nix b/modules/services/vaultwarden.nix deleted file mode 100644 index d325d7c6..00000000 --- a/modules/services/vaultwarden.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.services.vaultwarden; -in { - options.modules.services.vaultwarden = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - services.vaultwarden.enable = true; - - user.extraGroups = [ "vaultwarden" ]; - - services.fail2ban.jails.vaultwarden = '' - enabled = true - filter = vaultwarden - port = 80,443,8002 - maxretry = 5 - ''; - }; -} diff --git a/modules/shell/adl.nix b/modules/shell/adl.nix deleted file mode 100644 index ddd97924..00000000 --- a/modules/shell/adl.nix +++ /dev/null @@ -1,27 +0,0 @@ -# modules/shell/adl.nix -# -# To maintain my filty weeb habits, I need tools. Tools that make it easy to -# watch animu and track 'em on anilist. Laziness > my weebery. - -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.shell.adl; -in { - options.modules.shell.adl = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - # Dependencies - my.trackma - my.anime-downloader - mpv - - # The star of the show - my.adl - ]; - }; -} diff --git a/modules/shell/direnv.nix b/modules/shell/direnv.nix deleted file mode 100644 index 60609c64..00000000 --- a/modules/shell/direnv.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.shell.direnv; -in { - options.modules.shell.direnv = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = [ pkgs.direnv ]; - modules.shell.zsh.rcInit = ''eval "$(direnv hook zsh)"''; - }; -} diff --git a/modules/shell/git.nix b/modules/shell/git.nix deleted file mode 100644 index 6562c437..00000000 --- a/modules/shell/git.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.shell.git; - configDir = config.dotfiles.configDir; -in { - options.modules.shell.git = { - enable = mkBoolOpt false; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - gitAndTools.gh - gitAndTools.git-open - gitAndTools.diff-so-fancy - (mkIf config.modules.shell.gnupg.enable - gitAndTools.git-crypt) - act - ]; - - home.configFile = { - "git/config".source = "${configDir}/git/config"; - "git/ignore".source = "${configDir}/git/ignore"; - "git/attributes".source = "${configDir}/git/attributes"; - }; - - modules.shell.zsh.rcFiles = [ "${configDir}/git/aliases.zsh" ]; - }; -} diff --git a/modules/shell/gnupg.nix b/modules/shell/gnupg.nix deleted file mode 100644 index 1eaf05ab..00000000 --- a/modules/shell/gnupg.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ config, options, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.shell.gnupg; -in { - options.modules.shell.gnupg = with types; { - enable = mkBoolOpt false; - cacheTTL = mkOpt int 3600; # 1hr - }; - - config = mkIf cfg.enable { - environment.variables.GNUPGHOME = "$XDG_CONFIG_HOME/gnupg"; - - programs.gnupg.agent.enable = true; - - user.packages = [ pkgs.tomb ]; - - # HACK Without this config file you get "No pinentry program" on 20.03. - # programs.gnupg.agent.pinentryFlavor doesn't appear to work, and this - # is cleaner than overriding the systemd unit. - home.configFile."gnupg/gpg-agent.conf" = { - text = '' - default-cache-ttl ${toString cfg.cacheTTL} - pinentry-program ${pkgs.pinentry.gtk2}/bin/pinentry - ''; - }; - }; -} diff --git a/modules/shell/pass.nix b/modules/shell/pass.nix deleted file mode 100644 index 0b6a262a..00000000 --- a/modules/shell/pass.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, options, pkgs, lib, ... }: - -with lib; -with lib.my; -let cfg = config.modules.shell.pass; -in { - options.modules.shell.pass = with types; { - enable = mkBoolOpt false; - passwordStoreDir = mkOpt str "$HOME/.secrets/password-store"; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - (pass.withExtensions (exts: [ - exts.pass-otp - exts.pass-genphrase - ] ++ (if config.modules.shell.gnupg.enable - then [ exts.pass-tomb ] - else []))) - ]; - env.PASSWORD_STORE_DIR = cfg.passwordStoreDir; - }; -} diff --git a/modules/shell/tmux.nix b/modules/shell/tmux.nix deleted file mode 100644 index b134bd50..00000000 --- a/modules/shell/tmux.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ config, options, pkgs, lib, ... }: - -with lib; -with lib.my; -let cfg = config.modules.shell.tmux; - configDir = config.dotfiles.configDir; -in { - options.modules.shell.tmux = with types; { - enable = mkBoolOpt false; - rcFiles = mkOpt (listOf (either str path)) []; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ tmux ]; - - modules.theme.onReload.tmux = "${pkgs.tmux}/bin/tmux source-file $TMUX_HOME/extraInit"; - - modules.shell.zsh = { - rcInit = "_cache tmuxifier init -"; - rcFiles = [ "${configDir}/tmux/aliases.zsh" ]; - }; - - home.configFile = { - "tmux" = { source = "${configDir}/tmux"; recursive = true; }; - "tmux/extraInit".text = '' - # This file is auto-generated by nixos, don't edit by hand! - run-shell ${pkgs.tmuxPlugins.copycat}/share/tmux-plugins/copycat/copycat.tmux - run-shell ${pkgs.tmuxPlugins.prefix-highlight}/share/tmux-plugins/prefix-highlight/prefix_highlight.tmux - run-shell ${pkgs.tmuxPlugins.yank}/share/tmux-plugins/yank/yank.tmux - - ${concatMapStrings (path: "source '${path}'\n") cfg.rcFiles} - ''; - }; - - env = { - PATH = [ "$TMUXIFIER/bin" ]; - TMUX_HOME = "$XDG_CONFIG_HOME/tmux"; - TMUXIFIER = "$XDG_DATA_HOME/tmuxifier"; - TMUXIFIER_LAYOUT_PATH = "$XDG_DATA_HOME/tmuxifier"; - }; - }; -} diff --git a/modules/shell/vaultwarden.nix b/modules/shell/vaultwarden.nix deleted file mode 100644 index 7fbb14ca..00000000 --- a/modules/shell/vaultwarden.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ config, options, pkgs, lib, ... }: - -with lib; -with lib.my; -let cfg = config.modules.shell.vaultwarden; -in { - options.modules.shell.vaultwarden = with types; { - enable = mkBoolOpt false; - config = mkOpt attrs {}; - }; - - config = mkIf cfg.enable { - user.packages = with pkgs; [ - bitwarden-cli - ]; - - modules.shell.zsh.rcInit = "_cache bw completion --shell zsh; compdef _bw bw;"; - - system.userActivationScripts = mkIf (cfg.config != {}) { - initVaultwarden = '' - ${concatStringsSep "\n" (mapAttrsToList (n: v: "bw config ${n} ${v}") cfg.config)} - ''; - }; - }; -} diff --git a/modules/shell/zsh.nix b/modules/shell/zsh.nix deleted file mode 100644 index edbf1cd5..00000000 --- a/modules/shell/zsh.nix +++ /dev/null @@ -1,84 +0,0 @@ -{ config, options, pkgs, lib, ... }: - -with lib; -with lib.my; -let cfg = config.modules.shell.zsh; - configDir = config.dotfiles.configDir; -in { - options.modules.shell.zsh = with types; { - enable = mkBoolOpt false; - - aliases = mkOpt (attrsOf (either str path)) {}; - - rcInit = mkOpt' lines "" '' - Zsh lines to be written to $XDG_CONFIG_HOME/zsh/extra.zshrc and sourced by - $XDG_CONFIG_HOME/zsh/.zshrc - ''; - envInit = mkOpt' lines "" '' - Zsh lines to be written to $XDG_CONFIG_HOME/zsh/extra.zshenv and sourced - by $XDG_CONFIG_HOME/zsh/.zshenv - ''; - - rcFiles = mkOpt (listOf (either str path)) []; - envFiles = mkOpt (listOf (either str path)) []; - }; - - config = mkIf cfg.enable { - users.defaultUserShell = pkgs.zsh; - - programs.zsh = { - enable = true; - enableCompletion = true; - # I init completion myself, because enableGlobalCompInit initializes it - # too soon, which means commands initialized later in my config won't get - # completion, and running compinit twice is slow. - enableGlobalCompInit = false; - promptInit = ""; - }; - - user.packages = with pkgs; [ - zsh - nix-zsh-completions - bat - exa - fasd - fd - fzf - tldr - ripgrep - ]; - - env = { - ZDOTDIR = "$XDG_CONFIG_HOME/zsh"; - ZSH_CACHE = "$XDG_CACHE_HOME/zsh"; - ZGEN_DIR = "$XDG_DATA_HOME/zsh"; - ZGEN_SOURCE = "$ZGEN_DIR/zgen.zsh"; - }; - - home.configFile = { - # Write it recursively so other modules can write files to it - "zsh" = { source = "${configDir}/zsh"; recursive = true; }; - - # Why am I creating extra.zsh{rc,env} when I could be using extraInit? - # Because extraInit generates those files in /etc/profile, and mine just - # write the files to ~/.config/zsh; where it's easier to edit and tweak - # them in case of issues or when experimenting. - "zsh/extra.zshrc".text = - let aliasLines = mapAttrsToList (n: v: "alias ${n}=\"${v}\"") cfg.aliases; - in '' - # This file was autogenerated, do not edit it! - ${concatStringsSep "\n" aliasLines} - ${concatMapStrings (path: "source '${path}'\n") cfg.rcFiles} - ${cfg.rcInit} - ''; - - "zsh/extra.zshenv".text = '' - # This file is autogenerated, do not edit it! - ${concatMapStrings (path: "source '${path}'\n") cfg.envFiles} - ${cfg.envInit} - ''; - }; - - system.userActivationScripts.cleanupZgen = "rm -fv $XDG_CACHE_HOME/zsh/*"; - }; -} diff --git a/modules/themes/alucard/README.org b/modules/themes/alucard/README.org deleted file mode 100644 index d6f512dd..00000000 --- a/modules/themes/alucard/README.org +++ /dev/null @@ -1,14 +0,0 @@ -#+TITLE: Alucard -#+AUTHOR: Henrik Lissner -#+DATE: October 1, 2019 - -A regal dracula-inspired theme for piles of miserable secrets. - -* Wallpaper -![Alucard wallpaper](config/wallpaper.jpg) - -* Screenshots -![My desktop, pretending to look busy, with gaps](/../screenshots/alucard/fakebusy.png?raw=true) -![My desktop, unfettered by windows](/../screenshots/alucard/desktop.png?raw=true) -![My app launcher, rofi](/../screenshots/alucard/rofi.png?raw=true) -![The gapless experience](/../screenshots/alucard/tiling.png?raw=true) diff --git a/modules/themes/alucard/config/Xresources b/modules/themes/alucard/config/Xresources deleted file mode 100644 index c0c48f61..00000000 --- a/modules/themes/alucard/config/Xresources +++ /dev/null @@ -1,80 +0,0 @@ -!! Colors -#define blk #1E2029 -#define bblk #282a36 -#define red #ffb86c -#define bred #de935f -#define grn #50fa7b -#define bgrn #0189cc -#define ylw #f0c674 -#define bylw #f9a03f -#define blu #61bfff -#define bblu #8be9fd -#define mag #bd93f9 -#define bmag #ff79c6 -#define cyn #8be9fd -#define bcyn #0189cc -#define wht #f8f8f2 -#define bwht #e2e2dc -#define bg blk -#define fg wht - -*.foreground: fg -*.background: bg -*.cursorColor: mag - -*.color0: blk -*.color8: bblk -*.color1: red -*.color9: bred -*.color2: grn -*.color10: bgrn -*.color3: ylw -*.color11: bylw -*.color4: blu -*.color12: bblu -*.color5: mag -*.color13: bmag -*.color6: cyn -*.color14: bcyn -*.color7: wht -*.color15: bwht - -! greys -*.color234: #1E2029 -*.color235: #282a36 -*.color236: #373844 -*.color237: #44475a -*.color239: #565761 -*.color240: #6272a4 -*.color241: #b6b6b2 - - -!! general -st.scratch.font: JetBrainsMono:pixelsize=16 - - -!! xst -st.font: JetBrainsMono:pixelsize=12 -st.borderpx: 10 - - -!! urxvt -URxvt*depth: 32 -URxvt*.background: blk -URxvt*.borderless: 1 -URxvt*.buffered: true -URxvt*.cursorBlink: true -URxvt*.font: xft:Fira Code:pixelsize=12 -URxvt*.internalBorder: 10 -URxvt*.letterSpace: 0 -URxvt*.lineSpace: 0 -URxvt*.loginShell: false -URxvt*.matcher.button: 1 -URxvt*.matcher.rend.0: Uline Bold fg5 -URxvt*.saveLines: 5000 -URxvt*.scrollBar: false -URxvt*.underlineColor: grey -URxvt.clipboard.autocopy: true -URxvt.iso14755: false -URxvt.iso14755_52: false -URxvt.perl-ext-common: default,matcher diff --git a/modules/themes/alucard/config/bspwmrc b/modules/themes/alucard/config/bspwmrc deleted file mode 100755 index df59d5c2..00000000 --- a/modules/themes/alucard/config/bspwmrc +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env sh - -bspc config borderless_monocle true -bspc config gapless_monocle true - -bspc config border_width 1 -bspc config window_gap 4 - -bspc config normal_border_color "#181a23" -bspc config active_border_color "#181a23" -bspc config focused_border_color "#bd93f9" -bspc config presel_feedback_color "#bd93f9" - -# Extra padding for polybar -bspc config -m primary top_padding 34 -bspc config -m primary bottom_padding 0 diff --git a/modules/themes/alucard/config/dunstrc b/modules/themes/alucard/config/dunstrc deleted file mode 100644 index 8fcfe622..00000000 --- a/modules/themes/alucard/config/dunstrc +++ /dev/null @@ -1,49 +0,0 @@ -[global] -alignment = left -bounce_freq = 0 -browser = firefox -new-tab -corner_radius = 2 -dmenu = rofi -dmenu -p dunst: -follow = none -font = Fira Sans 11 -format = "%s\n%b" -frame_color = "#1a1c25" -frame_width = 1 -# geometry [{width}]x{height}][+/-{x}+/-{y}] -geometry = "440x15-26+26" -history_length = 20 -horizontal_padding = 16 -icon_position = right -idle_threshold = 120 -ignore_newline = no -indicate_hidden = yes -line_height = 0 -markup = full -max_icon_size = 64 -monitor = 0 -padding = 20 -separator_color = auto -separator_height = 4 -show_age_threshold = 60 -show_indicators = yes -shrink = no -sort = yes -startup_notification = false -sticky_history = yes -transparency = 5 -word_wrap = yes - -[urgency_low] -background = "#1E2029" -foreground = "#bbc2cf" -timeout = 8 - -[urgency_normal] -background = "#2a2d39" -foreground = "#bbc2cf" -timeout = 14 - -[urgency_critical] -background = "#cc6666" -foreground = "#1E2029" -timeout = 0 diff --git a/modules/themes/alucard/config/firefox/userChrome.css b/modules/themes/alucard/config/firefox/userChrome.css deleted file mode 100644 index 35680185..00000000 --- a/modules/themes/alucard/config/firefox/userChrome.css +++ /dev/null @@ -1,275 +0,0 @@ -/* @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); */ - -@-moz-document url(chrome://browser/content/browser.xul), - url(chrome://browser/content/browser.xhtml) -{ - /*** TREE STYLE TABS ***/ - /* Hide main tabs toolbar */ - #TabsToolbar { - visibility: collapse !important; - } - /* Sidebar min and max width removal */ - :root { - /* expanded width of the sidebar. - used for userChrome-static, and hover */ - --sidebar-width: 250px; - /* initial width of the sidebar. - advised not to change since tst css relies on this value*/ - --sidebar-collapsed-width: 60px; - } - - #sidebar-box { - z-index: 1000 !important; - position: relative !important; - min-width: var(--sidebar-collapsed-width) !important; - max-width: var(--sidebar-collapsed-width) !important; - } - - #sidebar-header, - #sidebar-splitter { - display: none !important; - } - - /* inner width = expanded width & move inner to only show initial-width long section */ - #sidebar-box #sidebar { - position: absolute !important; - min-width: var(--sidebar-width) !important; - max-width: var(--sidebar-width) !important; - width: var(--sidebar-width) !important; - transform: translateX(calc(var(--sidebar-collapsed-width) - var(--sidebar-width))); - transition: all var(--transition-time) var(--ease-out); - } - - /* move inner to show entire sidebar */ - #sidebar-box #sidebar:hover { - transform: translateX(0) !important; - box-shadow: 2px 0 33px -3px var(--sidebar-shadow-color); - } - - #sidebar-box[sidebarcommand="viewBookmarksSidebar"] #sidebar { - transform: translateX(0) !important; - box-shadow: 2px 0 33px -3px var(--sidebar-shadow-color); - } - /* hide sidebar header for tree style tabs sidebar */ - #sidebar-box #sidebar-header { - display: none; - } - - #sidebar { - border-right: solid var(--dividers) var(--sidebar-shadow-color) !important; - } - - toolbar { - border: none !important; - } - - #tabbrowser-arrowscrollbox { - margin: 7px 14px 7px 14px; - } - - .tabbrowser-tab::after { - border: none !important; - } - - .tab-background .tab-line, - .tab-background .tab-bottom-line { - display: none; - } - - tab[selected="true"] > .tab-stack > .tab-background { - background: var(--tl-tab-background-gradient, var(--arrowpanel-dimmed-further)) !important; - } - - tab:not([selected="true"]) > .tab-stack:hover > .tab-background { - background: var(--arrowpanel-background) !important; - } - - .tab-stack { - border-radius: 7px; - margin-right: 5px; - overflow: hidden; - } - - .tab-stack .tab-icon-image, - .tab-stack .tab-label-container { - transform: translateX(0px); - transition: all var(--tl-animation-duration) var(--ease-out) !important; - } - - .tab-stack .tab-icon-image { - transition-duration: calc(var(--tl-animation-duration) * 2) !important; - } - - tab:not([pinned="true"]) .tab-stack:hover .tab-icon-image { - transform: translateX(-25px) !important; - } - - .tab-stack:hover .tab-label-container { - transform: translateX(-23px) !important; - } - - /* containers */ - tab:not([selected="true"]).identity-color-blue > .tab-stack, - tab:not([selected="true"]).identity-color-orange > .tab-stack, - tab:not([selected="true"]).identity-color-green > .tab-stack, - tab:not([selected="true"]).identity-color-pink > .tab-stack{ - border-radius: 0 0 7px 7px !important; - } - - tab[selected="true"].identity-color-blue > .tab-stack .tab-label-container, - tab[selected="true"].identity-color-orange > .tab-stack .tab-label-container, - tab[selected="true"].identity-color-green > .tab-stack .tab-label-container, - tab[selected="true"].identity-color-pink > .tab-stack .tab-label-container{ - color: #000 !important; - } - - /* blue */ - tab[selected="true"].identity-color-blue > .tab-stack > .tab-background{ - background: linear-gradient(to right, #3182CE , #0BC5EA) !important; - } - - tab:not([selected="true"]).identity-color-blue > .tab-stack > .tab-background{ - border-top: solid 4px #63B3ED !important; - } - - /* orange */ - tab[selected="true"].identity-color-orange > .tab-stack > .tab-background{ - background: linear-gradient(to right, #DD6B20 , #F56565) !important; - } - - tab:not([selected="true"]).identity-color-orange > .tab-stack > .tab-background{ - border-top: solid 4px #F6AD55 !important; - } - - /* green */ - tab[selected="true"].identity-color-green > .tab-stack > .tab-background{ - background: linear-gradient(to right, #38A169 , #38B2AC) !important; - } - - tab:not([selected="true"]).identity-color-green > .tab-stack > .tab-background{ - border-top: solid 4px #68D391 !important; - } - - /* pink */ - tab[selected="true"].identity-color-pink > .tab-stack > .tab-background{ - background: linear-gradient(to right, #D53F8C , #9F7AEA) !important; - } - - tab:not([selected="true"]).identity-color-pink > .tab-stack > .tab-background{ - border-top: solid 4px #F687B3 !important; - } - - - .tab-stack .tab-close-button { - border-radius: 50%; - margin-left: -20px !important; - background: var(--lwt-text-color); - fill: var(--lwt-accent-color) !important; - transform: translateX(30px) !important; - transition: all var(--tl-animation-duration) var(--ease-out) !important; - } - - .tab-stack:hover .tab-close-button { - transform: translateX(0px) !important; - } - -#tabbrowser-tabs[closebuttons="activetab"] > #tabbrowser-arrowscrollbox > -.tabbrowser-tab > .tab-stack > .tab-content > .tab-close-button:not([selected="true"]){ - display: block !important; -} - - /* hide tabs */ - .tabbrowser-tab { - display: none; - } - - #tabs-newtab-button { - display: none; - } - - .titlebar-spacer { - display: none !important; - } - - - /*** TAB BAR ***/ - /* Ensure tab doesn't show through auto-completion popup */ - .tabbrowser-tab { z-index: 0 !important; } - /* Ensure tab "spacers" don't show through the completion window */ - #tabbrowser-arrowscrollbox > spacer { z-index: -1 !important; } - #mainPopupSet { z-index: 9999 !important; } - - /* Hide tabbar if only one tab */ - @import url(./css/tabs-hide-if-only-one.css); - - - /* Remove the colored overline on the focused tab */ - .tabbrowser-tab .tab-line { background: none !important; } - - /* Replace favicon on tabs with close button on mouse hover */ - .tabbrowser-tab:not(:hover) .tab-close-button, - .tabbrowser-tab:not([pinned]):hover .tab-icon-image { display: none !important; } - .tabbrowser-tab:not([pinned]):hover .tab-close-button { display:block !important; } - - .tabbrowser-tab:hover .tab-throbber, - .tabbrowser-tab:hover .tab-icon-image, - .tabbrowser-tab:hover .tab-sharing-icon-overlay, - .tabbrowser-tab:hover .tab-icon-overlay, - .tabbrowser-tab:hover .tab-label-container, - .tabbrowser-tab:hover .tab-icon-sound { - -moz-box-ordinal-group: 2 !important; - } - - .tabbrowser-tab .tab-close-button { - margin-left: -2px !important; - margin-right: 4px !important; - } - - .tab-close-button:hover { - fill-opacity: 0 !important; - } - - .tabbrowser-tab::after, - .tabbrowser-tab::before { - border-left: none !important; - border-right: none !important; - } - - .scrollbutton-up[orient="horizontal"]~spacer { border-width: 0px; opacity: 0 } - - - /*** NAV BAR ***/ - /* Hide urlbar */ - #nav-bar { - position: relative !important; - z-index: 2 !important; - height: 2px !important; - min-height: 2px !important; - margin-bottom: -2px !important; - opacity: 0 !important; - border: none !important; - } - - /* But unfocus it when we invoke it with ctrl+L */ - #nav-bar:focus-within { - height: auto !important; - margin-bottom: 0px !important; - opacity: 1 !important; - overflow: show !important; - } - - #urlbar-container { - min-height: 0 !important; - } - - #urlbar { - top: 0 !important; - } - - #urlbar-input-container { - height: 28px !important; - } - - /*** Load local overrides ***/ - @import url(./userChrome.local.css); -} diff --git a/modules/themes/alucard/config/firefox/userstyles/stylus-2020-02-11.json b/modules/themes/alucard/config/firefox/userstyles/stylus-2020-02-11.json deleted file mode 100644 index b387e721..00000000 --- a/modules/themes/alucard/config/firefox/userstyles/stylus-2020-02-11.json +++ /dev/null @@ -1,272 +0,0 @@ -[ - { - "enabled": true, - "updateUrl": null, - "md5Url": null, - "url": null, - "originalMd5": null, - "installDate": 1562423881810, - "name": "Monospace textareas", - "sections": [ - { - "code": "textarea {\n font-family: monospace;\n}" - } - ], - "updateDate": 1562423881810, - "id": 3 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/119903.json", - "md5Url": "https://update.userstyles.org/119903.md5", - "url": "http://userstyles.org/styles/119903", - "originalMd5": "0b2b6adac6c0d80d1e0512d007323127", - "installDate": 1565469520822, - "sections": [ - { - "urls": [], - "urlPrefixes": [], - "domains": [ - "www.keyhero.com" - ], - "regexps": [], - "code": "body {\r\n background-color: #2C2C2C !important;\r\n color: #ccc;\r\n}\r\n.description-block {\r\n background-color: #2C2C2C !important;\r\n color: white !important;\r\n}\r\ntr.head td {\r\n background-color: #2C2C2C !important;\r\n color: white !important;\r\n}\r\ndiv.new-post a {\r\n background-color: #2C2C2C !important;\r\n color: white !important;\r\n}\r\n.quote-current {\r\n background: black;\r\n}\r\n.quote-left {\r\n color: black;\r\n}\r\n.navbar-default .navbar-collapse,\r\n.navbar-default .navbar-form {\r\n background: #202020 !important;\r\n}\r\n.navbar-default {\r\n background-color: #202020 !important;\r\n box-shadow: none !important;\r\n}\r\nh4,\r\n.h4 {\r\n color: #ccc !important;\r\n}\r\nspan {\r\n color: #A2A2A2 !important;\r\n}\r\n.dl-horizontal dd {\r\n background-color: #2c2c2c !important;\r\n}\r\n.dl-horizontal dt {\r\n color: #808080 !important;\r\n}\r\n.table-striped>tbody>tr:nth-child(odd)>td,\r\n.table-striped>tbody>tr:nth-child(odd)>th {\r\n background: #2c2c2c !important;\r\n}\r\n.row {\r\n background: #2c2c2c !important;\r\n}\r\nfooter {\r\n background: #2c2c2c !important;\r\n}\r\nh3,\r\n.h3 {\r\n color: #ccc !important;\r\n}\r\n.alert-info {\r\n background: #3c3c3c !important;\r\n}\r\n.form-control {\r\n background: #202020 !important;\r\n color: #ccc !important;\r\n border: none !important;\r\n}\r\n.table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .table>tbody>tr>td, .table>tfoot>tr>td {\r\n background: #3c3c3c !important;\r\n}\r\ninput, button, select {\r\n background: #2c2c2c !important;\r\n}\r\ntextarea {\r\n\tbackground: #3c3c3c !important;\r\n}\r\n.panel-body {\r\n background: #3c3c3c !important;\r\n}\r\n.panel-default>.panel-heading {\r\n background: #3c3c3c !important;\r\n}\r\n.quote-bg-error {\r\n background: #4c4c4c !important;\r\n}\r\n.correction {\r\n background: #2c2c2c !important;\r\n}\r\n.label-awesome {\r\n background-color: #84840B !important;\r\n}\r\n#tooltip {\r\n background-color: #202020 !important;\r\n}\r\n.legendLabel {\r\n background: #202020 !important;\r\n color: #ccc !important;\r\n}\r\n.btn-success {\r\n background: #21692B !important;\r\n border-color: #21692B !important;\r\n}\r\n.btn-info {\r\n\tbackground: #772953 !important;\r\n}\r\n.well {\r\n \tbackground: #202020; \r\n}\r\n.navbar-default .navbar-nav>li>a {\r\n\tcolor: #ccc !important;\r\n}\r\n.media, .media-body {\r\n\tbackground: #262626 !important;\r\n\tborder-radius: 5px !important;\r\n}\r\n.table-striped>tbody>tr:nth-child(odd)>td, .table-striped>tbody>tr:nth-child(odd)>th {\r\n\tbackground: #3c3c3c !important;\r\n}\r\n.topic-message {\r\n\tborder: none !important;\r\n\tborder-radius: 5px !important;\r\n\tbackground: #202020 !important;\r\n}\r\n.pager li>a, .pager li>span {\r\n\tbackground: #202020 !important;\r\n\tborder: 1px solid #313131 !important;\r\n}\r\n.btn-link {\r\n\tbackground: #242424 !important;\r\n\tborder-radius: 5px;\r\n}\r\n.btn-primary {\r\n\tbackground: #dd4814 !important;\r\n}\r\n.comment-reply {\r\n\tbackground: #2c2c2c !important;\r\n\tborder-radius: 3px !important;\r\n}\r\n.btn-default {\r\n\tborder-color: #202020 !important;\r\n}\r\n.parent-message {\r\n\tbackground: #2c2c2c !important;\r\n}\r\n.alert-warning {\r\n\tbackground: #3c3c3c !important;\r\n\tborder-color: #a9a9a9 !important;\r\n}\r\n.label-great {\r\n background: #8E4D00;\r\n}\r\n\r\n/* vimmium styles */\r\ndiv.internalVimiumHintMarker {\r\n \tborder: black !important;\r\n\tbackground: rgb(78, 146, 255) !important;\r\n}\r\ndiv.internalVimiumHintMarker span {\r\n color: black !important;\r\n text-shadow: none !important;\r\n}\r\ndiv.internalVimiumHintMarker {\r\n\tcolor: red !important;\r\n}\r\ndiv.internalVimiumHintMarker > .matchingCharacter {\r\n\tcolor: white !important;\r\n}\r\n/* 14.11.2015 12:35 */" - } - ], - "name": "KeyHero: Dark Reign", - "originalDigest": "74af3625a2069f9717126deec918ef9d35e35d0a", - "id": 5 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/169544.json", - "md5Url": "https://update.userstyles.org/169544.md5", - "url": "http://userstyles.org/styles/169544", - "originalMd5": "98c3766882c44152c5b3afc51fc7327e", - "installDate": 1566107759034, - "sections": [ - { - "code": "body {\n background-color: #1E2029!important\n}\ndiv.grid_page,\ndiv[class*=\"side_bar\"],\ndiv[class*=\"sidebar\"],\ndiv[class*=\"Sidebar\"] {\n background-color: #1E2029!important\n}\ndiv.Toggle.ContentPageFeed.SimpleToggle {\n background-color: #1E2029!important\n}\n.SiteHeader {\n background-color: #282a36!important;\n border-bottom: 1px solid #373844!important\n}\nspan.expanded {\n color: gainsboro!important\n}\nspan.expanded:hover {\n color: #6272a4!important\n}\n.ui_qtext_rendered_qtext,\n.rendered_qtext {\n color: #b6b6c2!important\n}\ndiv.AmaSelfServeQuestionsPrompt {\n background-color: #1E2029!important\n}\n.selector_input.text {\n color: gainsboro!important\n}\ndiv[class*=\"story\"],\ndiv[class$=\"answer\"] {\n background-color: #282a36!important\n}\ndiv[id$=\"item\"] {\n background-color: #282a36!important\n}\n.container,\ndiv[class*=\"bundle\"] {\n background-color: #282a36!important\n}\n.comments_preview_toggle,\n.answer_auto_expanded_comments,\n.show_child_link {\n background-color: #282a36!important\n}\n.BetterUserHoverMenuContents,\n.BetterTopicHoverMenuContents.ObjectCard {\n background-color: #1E2029!important\n}\na.user,\n.NameCredential,\n.TopicName,\n.header_text_main,\n.user,\n.prompt_title,\ndiv[class^=\"answer\"] {\n color: lightgrey!important\n}\n.layout_1col_main_card,\n.layout_1col_secondary_card {\n background-color: #282a36!important\n}\n.grid_page h3 {\n color: #b6b6b2!important\n}\n.AboutListItem .main_text,\n.UserCredential {\n color: #b6b6b2!important\n}\n.icon_action_bar.sticky,\n.hover_menu_title {\n background-color: #282a36!important\n}\n.hover_menu_contents,\n.Notif {\n background-color: #1E2029!important;\n color: white!important\n}\n[class*=\"LookupBarResults\"] {\n background-color: #1E2029!important;\n color: #f8f8f2!important\n}", - "regexps": [ - "https?://(www|blog).quora.com.*" - ] - } - ], - "name": "Quora - Dark focused mode", - "originalDigest": "fabde60a33e2fc6a17c8c3f585c652854c631728", - "id": 6, - "updateDate": 1581131678066 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/124693.json", - "md5Url": "https://update.userstyles.org/124693.md5", - "url": "http://userstyles.org/styles/124693", - "originalMd5": "963068df63c3ae5642decc633d44f6d0", - "installDate": 1572046592546, - "sections": [ - { - "urls": [], - "urlPrefixes": [], - "domains": [ - "stackexchange.com", - "superuser.com", - "askubuntu.com" - ], - "regexps": [], - "code": "/* @-moz-document regexp(\"^https?://((chat|meta)\\.)?((tex|math|unix)\\.)?stackexchange\\.com.*\") { */\r\n /***************************************************************\r\n \r\n \r\n Worlbuilding Dark v0.9.1 (05/10/2014)\r\n\r\n - 0.9.1\r\n - fixed answered questions not showing up with a different color\r\n \r\n based on:\r\n \r\n StackOverflow Dark v2.5.7 (10/2/2014)\r\n https://github.com/StylishThemes/StackOverflow-Dark\r\n http://userstyles.org/styles/35345\r\n\r\n this is still quite crude\r\n \r\n the logo image is made by me ivycarp@gmail.com from a public domain\r\n image created by NASA that you can find on Wikipedia\r\n ****************************************************************/\r\n \r\n /***** Modifications by Abhishek Chakraborty *****/\r\n \r\n /*** codereview.stackexchange.com ***/\r\n #question-header {\r\n background-color: #232323;\r\n }\r\n \r\n #mainbar {\r\n background-color: transparent;\r\n }\r\n \r\n #sidebar .module:not(.community-bulletin) {\r\n background-color: transparent;\r\n }\r\n \r\n #sidebar .ad-container {\r\n background-color: #232323;\r\n }\r\n \r\n div.ad > a > img {\r\n filter: invert(100%);\r\n }\r\n \r\n #footer #footer-menu {\r\n background-color: transparent;\r\n }\r\n \r\n /*** askubuntu.com ***/\r\n \r\n #footer .footerwrap {\r\n background-color: transparent;\r\n }\r\n \r\n /***************************************************/\r\n \r\n\r\n * {\r\n border-color: #444 !important;\r\n text-shadow: none !important;\r\n box-shadow: none !important;\r\n }\r\n\r\n #content{\r\n background-color: rgba(255,255,255,0);\r\n }\r\n \r\n .mention{\r\n background-color: #666;\r\n color: #111;\r\n }\r\n .reviewed-action{\r\n background-color: #444 !important;\r\n color: #00aa00 !important;\r\n \r\n }\r\n span.comments{\r\n color: #aaa !important;\r\n }\r\n div.cp div{\r\n border: 0px !important;\r\n }\r\n .bottom-notice{\r\n background-color: #222;\r\n }\r\n #promo-box{\r\n background-color: #222;\r\n }\r\n table.history-table tbody tr span[style*=\"color:maroon;\"]{\r\n color: red !important;\r\n }\r\n div.question-summary.narrow:not(.tagget-interesting) div.cp div{\r\n background: none !important;\r\n }\r\n div.status.answered-accepted > *{\r\n color: #4C9067 !important;\r\n }\r\n div.status.answered-accepted{\r\n border: 1px solid #4C9067 !important;\r\n width: 46px !important;\r\n height: 36px !important;\r\n }\r\n\r\n body, .container, #footer {\r\n background-color: #191919 !important;\r\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAgMAAAANjH3HAAAACVBMVEUaGhohISElJSUh9lebAAAB20lEQVRIx4XWuZXDMAwE0C0SAQtggIIYoAAEU+aKOHhYojTrYP2+QfOW/5QIJOih/q8HwF/pb3EX+UPIveYcQGgEHiu9hI+ihEc5Jz5KBIlRRRaJ1JtoSAl5Hw96hLB1/up1tnIXOck5jZQy+3iU2hAOKSH1JvwxHsp+5TLF5MOl1/MQXsVs1miXc+KDbYydyMeUgpPQreZ7fWidbNhkXNJSeAhc6qHmHD8AYovunYyEACWEbyIhNeB9fRrH3hFi0bGPLuEW7xCNaohw1vAlS805nfsrTspclB/hVdoqusg53eH7FWot+wjYpOViX8KbFFKTwlnzvj65P9H/vD0/hibYBGhPwlPO8TmxRsaxsNnrUmUXpNhirlJMPr6Hqq9k5Xn/8iYQHYIuQsWFC6Z87IOxLxHphSY4SpuiU87xJnJr5axfeRd+lnMExXpEWPpuZ1v7qZdNBOjiHzDREHX5fs5Zz9p6X0vVKbKKchlSl5rv+3p//FJ/PYvoKryI8vs+2G9lzRmnEKkh+BU8yDk515jDj/HAswu7CCz6U/Mxb/PnC9N41ndpU4hUU7JGk/C9PmP/M2xZYdvBW2PObyf1IUiIzoHmHW9yTncliYs9A9tVNppdShfgQaTLMf+j3X723tLeHgAAAABJRU5ErkJggg==) !important;\r\n background-clip: border-box !important;\r\n background-origin: padding-box !important;\r\n background-repeat: repeat !important;\r\nbackground-size: auto !important;\r\nbackground-position: left top !important;\r\n background-attachment: scroll !important;\r\n }\r\n\r\n /* === custom color === */\r\n a, .profile-popup a, .seWrapper a, .post-tag, .comments-link, .tag-synonym-link {\r\n color: #4183C4 !important\r\n }\r\n/*\r\n .nav .primarynav li a:hover {\r\n color: #fff !important;\r\n background: #4183C4 !important;\r\n }\r\n*/\r\n \r\n .post-tag:hover, .comments-link:hover, .summary .post-tag:hover , .commentslink, .bounty-indicator,\r\n .bounty-indicator-tab, .bounty-award {\r\n background-color: #4183C4 !important;\r\n color: #eee !important;\r\n }\r\n\r\n /* === text selection === */\r\n ::selection {\r\n background: #4183C4 !important;\r\n color: #fff !important;\r\n }\r\n ::-moz-selection {\r\n background: #4183C4 !important;\r\n color: #fff !important;\r\n }\r\n\r\n /* === input focus hightlight === */\r\n input:focus {\r\n border-color: #4183C4 !important;\r\n box-shadow: 0px 1px 2px rgba(255, 255, 255, 0.075) inset, 0px 0px 5px rgba(255, 255, 255, .075) !important;\r\n }\r\n .tag-editor input:focus {\r\n border: 0 !important;\r\n box-shadow: none !important;\r\n }\r\n\r\n /* === hidden === */\r\n div.hireme, div#hireme {\r\n display: none !important;\r\n }\r\n\r\n /* === background color === */\r\n /* from darkest to lightest grey */\r\n .search-container input[type=text] {\r\n background-color: #000 !important;\r\n }\r\n\r\n #custom-header, .review-bar, .diff-choices a.selected, #header #topbar, td.owner, a.owner, .question-status,\r\n .profile-popup, .profile-popup div, .profile-popup th, .profile-popup td, #global, .actual-edit-overlay,\r\n input:not([type='submit']), textarea, #search input, .tag-editor {\r\n background-color: #111 !important;\r\n color: #ddd !important;\r\n }\r\n\r\n .summary .post-tag, .onebox, .profile-ad {\r\n background: #151515 !important;\r\n }\r\n\r\n html, blockquote, #post-preview, .nav .primarynav li a, #container, #hsearch .textbox, .form-item, .grippie,\r\n .welovestackoverflow, #wmd-button-bar, .wmd-button-bar, .qa-block, .content-block, .user-info-rep, .sidebar,\r\n .popup {\r\n background: #191919 none !important\r\n }\r\n\r\n .authcomment, .seIntro, .seFooter {\r\n background-color: #191919 !important;\r\n border: 2px solid #262626 !important;\r\n }\r\n\r\n #tabs a {\r\n border: 1px solid transparent !important;\r\n }\r\n\r\n #tabs a.youarehere, .tag-suggestions {\r\n background: #191919 !important;\r\n border: 1px solid #444 !important;\r\n }\r\n \r\n .nav .youarehere{\r\n font-weight: bold !important;\r\n background: none !important;\r\n color: blue !important;\r\n }\r\n\r\n #user-about-me, .user-about-me, .mine .messages {\r\n background: #191919 !important;\r\n border: 0px !important;\r\n color: #C1BEBA !important;\r\n }\r\n\r\n .topbar-dialog .header, .topbar-dialog .modal-content li:hover, .share-tip,\r\n #tag-menu, .sidebar h3, #overlay-header, .action-list .action-selected, .switcher-nudge-lightbox,\r\n .user-rep-chart-summary-tooltip:hover, #footer {\r\n background-color: #222 !important;\r\n color: #ddd !important;\r\n }\r\n\r\n .profile-popup, .profile-popup tr, .profile-popup th, .profile-gravatar, .newuser, .roomcard,\r\n .seWrapper, h2.index.header, .privilege-table-row:hover {\r\n background-color: #222 !important;\r\n border-color: #555 !important;\r\n color: #ddd !important;\r\n }\r\n\r\n #header #topbar, .revision-comment, .date-span, .post-tag, .form-submit input, .preferred-login,\r\n .mdhelp, .wmd-help-button.active-help, .date_brick, .more-info {\r\n background: #222 !important;\r\n color: #ddd !important;\r\n -webkit-border-radius: 3px !important;\r\n border-radius: 3px !important;\r\n }\r\n\r\n .ad502-room, .messages, .messages,.topbar-dialog .unread-item {\r\n background-color: #232323 !important;\r\n border: 1px solid #191919 !important;\r\n }\r\n\r\n .rep-recent-row, .bounty, .diff-choices a:hover, div.meter, .narrow .votes, .stats, .ob-post-votes {\r\n background-color: #232323 !important;\r\n color: #bbb !important;\r\n }\r\n\r\n .answer, #system-message, .commentlist, .revision td, #hero-content, .mdhelp-tabs .selected, .tabs .selected {\r\n background: #232323 !important;\r\n color: #999 !important;\r\n }\r\n\r\n .tagged-interesting, .tagged-interesting .views, .highlight-row, .highlighted {\r\n background-color: #242424 !important;\r\n background-image: none !important;\r\n }\r\n\r\n /*.nav li,*/ .seNav, .topbar a.topbar-icon-on, .topbar a.topbar-icon-on:hover, .topbar-dialog, .owner,\r\n .module li.current, .seCurrent, .community-bulletin, .owner-revision td, .markdown-diff .skip,\r\n #footer .container, .current-site-container, .body-diffs .skip, .newsletter-anon, .tag-suggestions>div:hover {\r\n background-color: #333 !important;\r\n }\r\n\r\n .owner-answer, .question-status, #input-area, .notification, #feed-ticker, #top-menu, .vote-revision td {\r\n background: #404040 !important;\r\n }\r\n\r\n tr.comment:hover, .reply-parent, .timestamp, .usercard, .page-numbers.current,\r\n .comment-help, .answer-help-background, .mdhelp-tabs, .tabs li, .hi, .seNavLinks a:hover,\r\n .seNavLinks a:focus, .itemBoxNew {\r\n background-color: #444 !important;\r\n color: #ddd !important;\r\n }\r\n\r\n #post-text-container div span {\r\n background: #c1beba !important\r\n }\r\n\r\n /* === Brown(ish) === */\r\n .new-post-activity, #new-answer-activity {\r\n background-color: #840 !important;\r\n }\r\n\r\n /* chat room buttons */\r\n a.button {\r\n background: #840 !important;\r\n color: #eee !important;\r\n }\r\n\r\n .supernovabg, .hotbg, /*.nav .youarehere,*/ /*.nav li:hover,*/ a.button:hover {\r\n background-color: #d80 !important;\r\n }\r\n\r\n /* === Green === */\r\n .accepted-answer, .suggested-edit .inserted, .markdown-diff .inserted {\r\n background: #232 !important;\r\n }\r\n\r\n .answered, .answer-votes {\r\n background: #232323 !important;\r\n /*color: #4b553c !important*/\r\n color: #00aa00 !important\r\n }\r\n\r\n .answered-accepted, .answered-accepted strong, .rep-up.bounty-indicator-tab, .user-rep-chart-summary-bar {\r\n background: #4b553c !important;\r\n color: #fff !important;\r\n border: none !important;\r\n }\r\n\r\n .answered strong {\r\n color: #4b553c !important\r\n }\r\n\r\n /* === Red === */\r\n .deleted-answer, .suggested-edit .deleted, .markdown-diff .deleted {\r\n background-color: #200 !important;\r\n }\r\n\r\n a.moderator-tag {\r\n background-color: #400 !important;\r\n }\r\n\r\n a.moderator-tag:hover {\r\n background-color: #600 !important;\r\n }\r\n\r\n /* === Transparent background === */\r\n div.message .meta, .spaces, .comment, span.feed-icon, a.role-switch, .nav.careers li, .nav.careers li:hover,\r\n .switcher-nudge-content p {\r\n background-color: transparent !important;\r\n }\r\n\r\n #tabs a:hover {\r\n background-color: transparent !important;\r\n border: 1px solid #666666 !important;\r\n border-bottom: 1px solid #444 !important;\r\n }\r\n\r\n .highcharts-container rect[fill=\"#FFFFFF\"], rect[fill=\"rgb(255, 255, 255)\"] {\r\n fill: transparent !important;\r\n }\r\n\r\n /* === Dark border === */\r\n .body-diffs table * {\r\n border-color: #111 !important;\r\n }\r\n\r\n a.required-tag, .welovestackoverflow, .question-summary {\r\n border-color: #333 !important;\r\n }\r\n\r\n #tabs a.youarehere {\r\n border-bottom: 1px solid #191919 !important;\r\n }\r\n\r\n /* === No/hide border === */\r\n div.list > div {\r\n border-right: 0 !important;\r\n }\r\n\r\n .module {\r\n border-color: transparent !important;\r\n }\r\n\r\n /* blue label count */\r\n .bounty-indicator-tab {\r\n background: #07d !important;\r\n color: #ccc !important;\r\n }\r\n\r\n /* === Text Color === */\r\n div, input, .accepted-answer .post-text, .accepted-answer .user-action-time, #question-header a,\r\n .post-text, .user-info, .topbar-dialog .header h3, .topbar-dialog .header h3 a, .topbar-dialog span,\r\n .search-result .answered .vote-count-post strong, .votes-cast-stats th {\r\n color: #ddd !important;\r\n }\r\n\r\n /* placeholder */\r\n ::-webkit-input-placeholder {\r\n color: #ddd !important;\r\n }\r\n ::-moz-placeholder {\r\n color: #ddd !important;\r\n }\r\n\r\n .user-details td, .content-page, h2, h2 a, .profile-popup a:hover, .module h4, .page-description,\r\n #openid_identifier, .form-item label {\r\n color: #c1beba !important\r\n }\r\n\r\n .comment, #top-menu a, .subheader a, .reputation a, .reputation-score, a:visited, .relativetime.old,\r\n .votes-cast-stats td {\r\n color: #aaa !important;\r\n }\r\n\r\n .answered-accepted strong, .youarehere, .nav .primarynav li a, .nav a, a:hover, .rep-up.special-rep {\r\n color: #fff !important\r\n }\r\n\r\n input, .actual-edit-overlay {\r\n -webkit-text-fill-color: #fff !important;\r\n }\r\n\r\n .rep-up {\r\n /*color: #4b553c !important;*/\r\n color: #00dd00 !important;\r\n }\r\n .rep-down {\r\n color: #d65 !important;\r\n }\r\n\r\n /* dark blue */\r\n .result-highlight {\r\n color: #aa0 !important;\r\n }\r\n\r\n /* brown/dark orange */\r\n .warm {\r\n color: #840 !important;\r\n }\r\n\r\n /* orange */\r\n .hot {\r\n color: #a20 !important;\r\n }\r\n\r\n /* light brown */\r\n .unanswered {\r\n color: #9a4444 !important;\r\n }\r\n\r\n /* === Style adjustments === */\r\n a.question-hyperlink, a:hover, a:visited {\r\n text-decoration: underline !important;\r\n }\r\n\r\n .nav a, .post-tag, .comments-link, .tag-synonym-link, a.post-tag:hover, .topbar a {\r\n text-decoration: none !important;\r\n }\r\n\r\n .post-tag, .comments-link, .tag-synonym-link {\r\n margin: 2px !important;\r\n padding: 3px !important;\r\n font-size: 80% !important;\r\n line-height: 2.2 !important;\r\n white-space: nowrap !important\r\n }\r\n\r\n .stats {\r\n float: right !important;\r\n margin-top: 5px !important;\r\n }\r\n\r\n #hsearch, .statscontainer {\r\n margin-right: 5px !important;\r\n }\r\n\r\n .stats {\r\n margin-bottom: 4px !important;\r\n }\r\n\r\n .nav .primarynav li a {\r\n display: block !important;\r\n float: left !important\r\n }\r\n\r\n /* === badges === */\r\n a.badge[title^=\"bronze\"], a.badge-tag[title^=\"bronze\"], .badge3 + .badgecount {\r\n color: #cc9966 !important;\r\n }\r\n a.badge[title^=\"silver\"], a.badge-tag[title^=\"silver\"], .badge2 + .badgecount {\r\n color: #c5c5c5 !important;\r\n }\r\n a.badge[title^=\"gold\"], a.badge-tag[title^=\"gold\"], .badge1 + .badgecount {\r\n color: #ffcc46 !important;\r\n }\r\n .badge-tag {\r\n background-color: #191919 !important;\r\n border-color: #111 !important;\r\n }\r\n\r\n /* === code & syntax highlighting === */\r\n pre, code, .pln, .youarehere {\r\n background: #333 !important;\r\n color: #ccc !important;\r\n }\r\n\r\n .str { color: #0a0 !important; }\r\n .lit { color: #d65 !important; }\r\n .pun { color: #999 !important; } /* parenthesis */\r\n .kwd { color: #08f !important; } /* keyword */\r\n .tag { color: #999 !important; } /* html tag */\r\n .atn { color: #088 !important; } /* attribute */\r\n .atv { color: #0a0 !important; } /* attribute value*/\r\n .dec { color: #90a !important; } /* doc type */\r\n\r\n /* === Images === */\r\n .wmd-button>span {\r\n background-image: url(http://StylishThemes.github.io/StackOverflow-Dark/images/wmd-buttons.png) !important;\r\n }\r\n\r\n .statsarrow {\r\n width: 7px !important;\r\n height: 13px !important;\r\n background: url('data:image/gif;base64,R0lGODlhBwANAIAAACMjI////yH5BAEAAAEALAAAAAAHAA0AAAITRI5gGLrnXlzT1NsidEkx/zFHAQA7') 0 0 !important;\r\n }\r\n\r\n #hlogo img, .everyonelovesstackoverflow, #newsletter-ad { opacity: 0.3 !important; }\r\n\r\n /* chat domain logo */\r\n #header-logo a {\r\n display: block;\r\n width: 150px !important;\r\n height: 36px !important;\r\n background-size: cover !important;\r\n background-position: 0 -2px !important;\r\n }\r\n\r\n #header-logo img {\r\n display: none;\r\n }" - }, - { - "urls": [], - "urlPrefixes": [], - "domains": [], - "regexps": [ - "^https?://(chat.)?worldbuilding.stackexchange.com.*" - ], - "code": "#hlogo a {\r\n /* background-image: url(http://StylishThemes.github.io/StackOverflow-Dark/images/logo.png) !important; */\r\n /* background-image: url('data:image/png;base64,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') !important; */\r\n /*\r\n width: 250px;\r\n height: 61px;\r\n font-size: 0px;*/\r\n }" - }, - { - "urls": [], - "urlPrefixes": [], - "domains": [], - "regexps": [ - "^https?://meta.worldbuilding.stackexchange.com.*" - ], - "code": "#hlogo a {\r\n /* background-image: url(http://StylishThemes.github.io/StackOverflow-Dark/images/meta-logo.png) !important; */\r\n /* background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAAA9CAMAAACdmqWRAAAAk1BMVEUAAAD///////////////////////////////////////////////////+MiYaLiISJhoKKh4OHhICIhYGLh4SMiISKh4OHhYGIg34IAAAUAAAHAAAOAACLiokKAAARAACMh4JsAACDg4OHgnyBfnqLiomMioeOiIQpAABfAABmAAAbAABXAABOAAA/AAA0AABIAADInvqVAAAAIXRSTlMA6RGs1cFmVSJ3M5mIRCYRSeafz4q6elwzQfEXp29ix2ZyYf0pAAAIQElEQVRo3uSXW27iQBBF7wr8woABCyhhQT9s4/2vbqguFzFkPiZGDSPlfCSNZaSc1O3qavwjybFI8Fso8/xyyfBbWF5urPAGavwHlKy7RHw6avF5MtbNER9HtMFnyFIo1YVJEZsNEe3wCZLlqYSSBt0KsdnedPEJjqcbX3456x4RG09k8QGqE5M/tuYSsTH0oVZVBN8CI6v3tOaeqMMnSPPgm72tNavugI+QSZxTBJILkyAG+x2UjqjHFztjtngT5TTOKfeqGGPktSWi1khf5vUVir/JvzHci2mcl7Nbs2mpx64b//DNYNlOaUno+UXnjB/cDQuEbwgbvIXqFJA4F6xbzJB1XLGaGAsYtRMsP9xZIvKAde46GMfwCSy8rb4a5yWY47zWbIkZSGivquDB8Ecj/4MW8MaTdVdzA3D8tY0nBtHI0u9xDhHO5o2Rrfo5Fn+u2CgepA7gReuuYMwYgTaqbtI06+nHUyB5oTXXLpR1i7142tqMuR41N2NwjVTbiG4/vtNH1S2apllU01GSWfBybmvuubSSa8ks5PfEpZbt/KyrhXeIRNYEigTKMviWL9zwe+1MrUbWapi7sbobibfu5aluTUO8KXrRjNy10lOg0hv+PF2jugNUVxYM/zTPuuis7cONsI+nm919F2t9pHE+zhgjtelsVdfrope7vHCFf9RVvPcS/FiscxUuquldoZx1w9d+BLXch8KpLjGmDm8Z803XW9L9Ho101ShFOrkrVAjVTfBTDnrqtFNvo9UdoDzrDlz3PvqYkRTqm68lzoF0tcqSFD9mR+TV0kG3rNFF+5d9Pnm9jqv7vIUzjXOZYiaO7KNuiLDWz0LYPOrqTj9IACKzbhg9lPLTosJs7JPu/j5EetLtDEM2+Kuutij/Fl2kRaOsUJV4gY7sPcOSbu3VeBA/iG4PRldDLN2kWCWYUH0lOsULeD04nejKUFHfE9tpwTnMnRU5PawMxdJdn8/nvFgn3w+lAq/Qt6K7G5VwGGcpTXPvvRy+96vRwcLKABKwiEBxFhaiPDmUUrzClaurlp4f6CKslRY6PNs/3JjZbqswEIbBgxcMBqchjdQjcnGkSCkKUd//6TpjM1Vw94Qu6n/D8A8Z+4sX4uDI0rv5aw+8K2Jl5FvfPr2UttdUPeCZ/TCMBz7X3+1CwLxs83n/NN2y/0AGjfzSahiVtY5L2V81lXdISwqzk0/6M95/p+Nw/4A3/P/UPR6NTxgch2G8oytvbIuq9bfrBJiX8jI6nMbxOI7DOGn34d8p/F0srWZ78wwZt+W/LERezUY4++tqm7N5fbNERWtFtqiEVkqLzFhrTfYp/Ue9sZS3/MQ1ynO9KG2ZowohAC/qEty2adpnyLSU21+IG2gZt7wEt9/v96v1puv63p+TU/Q6roBCfz+uKRbBZUXyTdd737yDW+Q/gOsIVlmbXY7b7V9W9wtxFQ0tBZfjbl7B7b8MVxgjpgjFLoZpnm2yhHgDV2Cew7M6M49Hd/VRXGGsNWIKi1xxYfbnDya4jCN0JYtC1hZjUwGAjtkaQ0WR43wQ2c7WaIE2riZc7dwc1yiQhQRFTWpAiViRazvyDMPQ3ux933Wb9Tm5T3E10EYhKy0yUUlsF6CixmqJPnbQMJcKRmVnuCVAJMwnldgp6nQV0pYshx+e5SNWVUSHU8lW5eRkS8d1uGIEr0OUTtWEvElwS2ICKl1nBgKhBGwMIwnhPrSCOQwDsI64vOoUd58Ue6vpKp5WJUaIxKqT50G/iEsdYB+H/bH1Mkt6GwSCsFlmYbtE7n/IBJq2iP9SOaoKL4YBjfpjRgOGQJ5Za8sFawHz/etmUSweY6xd/ExmDTL+dNxykB2PrB59pNDiG9dODTkhHhUHixGrb/7UuyBIxJWUQ3KXvAaSDtwocImpuEIp2yO22OHrGW4Ljcm6S5ViaL5/kUQ6f5DTEdFFBFrEUyFIjXFhNQQzUVJFIHpEioRE0SVG7z5dIrSR3y7Ppu7R+6LC2OER2WzYB8L8umkn7vSv95WZG7A2u/+ozFXWe88vq0PD2NmskOZIaa6cWJi4P4jKhsFWFkTbsBTgDYnzCPeVQv+CK6EsmfUT1yUIUgAbzaBkpzioX/NMoil+cOIWlzDstbchAVfhyZ7gstb4F1wIjh+4U5ptJ4wV4lgRnIaRbxxZLSyR33HZgau0t3R57DLfVuH7CS5fkCU1jQcuDlIKLFNQ/sDVnbc/cUNl0i47Uvxs+hhX9r3a58pR2GuvJ7g8TgOanbhOa7jBlZA1h36Du4qTJXj9H7iwaJpbXOdcQko/q8y8LdmErsDd75URj2T+xF0gBWjHt4sU4w6cg1bfLT7BxW3i8NhXZRD6fo77IhZwITvX0z5C8A9c1OsUrwIFcPScVyZYoZjtOy4LFHuHx4GA0+Vj3PMEJq7taBHXYT9wO5ZdJ74yKAnuKI7zA+7GP+DSVH/4RhZV+C7PcSOocCTxlD1xHW7bZQCuEaqy3pVa26XCKI5Ks3n0IcHucLlJMjyCSMxNyI2YYpt5fSPM97ZpW6p/3Z4S0rOSJzboqjk0n2MTIy4yLG02NnEeaRTHcGRZNrvBRQ9MAGdrh5PxJpfXM1xQ5KZms+S1COHSy6Kc9iJHduWuBeuOf0TolfM+j9YZAGJwwT0uJoDr6PHKyJiyImLRE1zwJqrokfpDvt6WizA7BZa57sKNsouvbGmVDJXi+PS14B735Y0k3jOFHRvYL/LxEBd6q/bWujkNbmrTPsofs/rLlDXaemsFA1UnlWo9ZiFtr1FGGv5667oXmO7H6EPtrcfwHJRNBWyuytH404Wn33iFQHtUqeywAAAAAElFTkSuQmCC') !important; */\r\n }" - } - ], - "name": "StackExchange Dark", - "originalDigest": "ce78ad218ea4e735ac86babbd088cf6709dfa384", - "id": 9 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/118568.json", - "md5Url": "https://update.userstyles.org/118568.md5", - "url": "http://userstyles.org/styles/118568", - "originalMd5": "badf151eede9eb53f25c70bab174e664", - "installDate": 1574150561677, - "sections": [ - { - "urls": [], - "urlPrefixes": [], - "domains": [], - "regexps": [ - "https?://([^:]+)(:[0-9]+)?/transmission/web/.*" - ], - "code": "@namespace url(http://www.w3.org/1999/xhtml);\n* {\r\n background-color: transparent !important;\r\n color: inherit !important;\r\n border-color: var(--border-color) !important;\r\n }\r\n \r\n body, div.dialog_container div.dialog_window, .inspector-tab, div#jqContextMenu ul, .ui-widget-content {\r\n background-color: var(--background-color) !important;\r\n color: var(--foreground-color) !important;\r\n }\r\n \r\n div#toolbar, #statusbar, div.torrent_footer, .ui-widget-header {\r\n background-color: var(--background-color) !important;\r\n background-image: var(--gradient-header) !important;\r\n }\r\n\r\n div.dialog_container div.dialog_window a {\r\n background-color: var(--background-color) !important;\r\n background-image: var(--gradient-button) !important;\r\n }\r\n div.dialog_container div.dialog_window a:hover, div.dialog_container div.dialog_window a:active {\r\n background-color: var(--background-color) !important;\r\n background-image: var(--gradient-button-selected);\r\n border-color: var(--border-color-selected) !important;\r\n }\r\n\r\n .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {\r\n background-color: var(--background-color) !important;\r\n background-image: var(--gradient-tab);\r\n }\r\n .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {\r\n background-color: var(--background-color) !important;\r\n background-image: var(--gradient-tab-selected) !important;\r\n border-color: var(--border-color-selected) !important;\r\n }\r\n \r\n ul {\r\n list-style: none;\r\n }\r\n \r\n ul.torrent_list li.torrent.even {\r\n background-color: rgba(255, 255, 255, 0.1) !important;\r\n }\r\n ul.torrent_list li.torrent.selected, ul.torrent_list li.torrent.selected.even, div#jqContextMenu ul li:hover {\r\n color: var(--foreground-color-selected) !important;\r\n border-color: var(--border-color-selected) !important;\r\n }\r\n \r\n\r\n \r\n div.inspector-tab.selected { border-color: var(--border-color-selected) !important; }\r\n #inspector-tab-files { background-image: var(--tab-files), var(--gradient-button) !important; }\r\n #inspector-tab-files.selected { background-image: var(--tab-files), var(--gradient-button-selected) !important; }\r\n #inspector-tab-info { background-image: var(--tab-info), var(--gradient-button) !important; }\r\n #inspector-tab-info.selected { background-image: var(--tab-info), var(--gradient-button-selected) !important; }\r\n #inspector-tab-peers { background-image: var(--tab-peers), var(--gradient-button) !important; }\r\n #inspector-tab-peers.selected { background-image: var(--tab-peers), var(--gradient-button-selected) !important; }\r\n #inspector-tab-trackers { background-image: var(--tab-trackers), var(--gradient-button) !important; }\r\n #inspector-tab-trackers.selected { background-image: var(--tab-trackers), var(--gradient-button-selected) !important; }\r\n\r\n div.torrent_footer div.selected { border-color: var(--border-color-selected) !important; }\r\n div.torrent_footer div.main_container { display: none; }\r\n #prefs-button { background-image: var(--button-prefs), var(--gradient-button) !important; }\r\n #turtle-button { background-image: var(--button-turtle), var(--gradient-button) !important; }\r\n #turtle-button.selected { background-image: var(--button-turtle), var(--gradient-button-selected) !important; }\r\n #compact-button { background-image: var(--button-compact), var(--gradient-button) !important; }\r\n #compact-button.selected { background-image: var(--button-compact), var(--gradient-button-selected) !important; }\r\n\r\n div.file-priority-radiobox > div.selected { border-color: var(--border-color-selected) !important; }\r\n div.file-priority-radiobox > div.low { background-image: var(--priority-low), var(--gradient-button) !important; }\r\n div.file-priority-radiobox > div.low.selected { background-image: var(--priority-low), var(--gradient-button-selected) !important; }\r\n div.file-priority-radiobox > div.normal { background-image: var(--priority-normal), var(--gradient-button) !important; }\r\n div.file-priority-radiobox > div.normal.selected { background-image: var(--priority-normal), var(--gradient-button-selected) !important; }\r\n div.file-priority-radiobox > div.high { background-image: var(--priority-high), var(--gradient-button) !important; }\r\n div.file-priority-radiobox > div.high.selected { background-image: var(--priority-high), var(--gradient-button-selected) !important; }\r\n \r\n :root {\r\n --background-color: #333;\r\n --border-color: #222;\r\n --border-color-selected: #666;\r\n --foreground-color: rgba(255, 255, 255, 0.8);\r\n --foreground-color-selected: rgba(0, 255, 0, 0.8);\r\n --gradient-to-top: linear-gradient(to top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.1));\r\n --gradient-to-bottom: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.1));\r\n --gradient-selected: linear-gradient(to right, rgba(0, 255, 0, 0.2), rgba(0, 255, 0, 0), rgba(0, 255, 0, 0.2));\r\n\r\n --gradient-header: var(--gradient-to-top);\r\n --gradient-button: var(--gradient-to-top);\r\n --gradient-button-selected: var(--gradient-to-top), var(--gradient-selected);\r\n --gradient-button-selected: var(--gradient-to-bottom);\r\n --gradient-tab: var(--gradient-to-bottom);\r\n --gradient-tab-selected: var(--gradient-to-top);\r\n\r\n /* Images */\r\n --priority-high: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAwUlEQVQokcXQMYoCMBAF0I9mqmRIkUkRkibpkiY38Bja7RU8hMcQPIedeCdLYWxUlhXBRvbDr+bBMAP8S+achznn4RO77L3vxhg6xtDe+w7A8h1e1Fr3rTX93VrrHsDiRaeUTqUUzTlrzvnnXi2laErp9ITMHEIIRxFREbnEGNePWYxxLSIXEdEQwpGZA6y1Z2ZW59zVe7/5u9l7v3HOXZlZrbVnENGWiNQYs3p3nDFmRURKRFsAMADaBx9sd/vl3ACk0StFsQlurQAAAABJRU5ErkJggg==\");\r\n --priority-normal: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAASklEQVQokWNgGIlAVFRURVZW9qmMjMwDfFhWVvadiIiIFIOEhISWpKTkfyKxPIOIiAiviIhIk4iISD0+LCoq2i4oKMg/0CFCDQAAK2Qigs7t83QAAAAASUVORK5CYII=\");\r\n --priority-low: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAwUlEQVQokb3QQQoCMQwF0FBn064KQlMoE4rQQKG5gseY2XkFDzHHGPAc7sQ7uRTiRl0Myqz0QzbhEZIA/COdiOzW0NN00Fo7iojWWvffcK11LyLaWjsCM1+ZWUsp95zzuMQ557GUcmdmZeYrpJS2RHQmIu37/kZEwwsT0fDsKRGdU0rb9yREvCCixhg1hHAIIRxijIqIioiXT6sa7/3svddFzQBgvt23cc5N1lq11qpzbgKAzdoHwRhzMsacVuFP8gCN6y5Xkv6lMgAAAABJRU5ErkJggg==\");\r\n\r\n --button-turtle: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAYAAADwdn+XAAAAmklEQVQokY3PPQoCUQwE4E9sFEsbK8FOEES0trT0FLZ2Woi9XkTY4l3DO1haCHoJwWfzFtafXR0IhGQyk+ETLayQ4YDlF04pRrgjvtUZzQKvgc77cTuRH18EIq4YYFaYbYsCl4rjMuE9dHH64Z7XDTvM0cud+9jg+Id7M8ZYewkeQqinNkukBcYYpszTlD8ms1IETCr26/T6C54Bx0EzYFeoXQAAAABJRU5ErkJggg==\");\r\n --button-prefs: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAA7klEQVQokZWP0YmEMBCG5yEkEMEwQsDgihIhAcEYK70SUsKVsCWkhCvhSph7MYcPruv+8MEQ5mPyA9xIjDFt20Yxxp87+/9ZliWFECiEQOu6preCtVaVeZ5n2vn96CoAgHMue+/Je0/OubS/Je/9dQVrrbLWpmma6IxLeRiGPI4jveB1/8fjQUf6vk9d1+Uyn0qIqIwx2RhDBzIiqlPhKGqts9aaCm3bXncrIiLmpmmogIj5rQgAqq7rXNc1HcgAcP1VAFBSylxVFRWklLdE4JwnIQQJIZ5CCOKc3xMBABhjX4wx2rkvHpIA4PtT8Q/UuVtO1WtEUAAAAABJRU5ErkJggg==\");\r\n --button-compact: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAYAAADwdn+XAAAAbUlEQVQokcWQMQrAMAwD5UAwmUoGZzDK/5/nJ7hLU9op3Sq4RXAaBJI559xCMt19AsBySCbcPb/Sez8AvByYWYwxcoeZBa4s59n9GFWN1lruUNUAcDwdVQ3UWvMra+DViUiUUnKHiNyHLUdE4gRg62K+ejzZwAAAAABJRU5ErkJggg==\");\r\n\r\n --tab-files: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABBklEQVQ4jdWTsWqFMBiFfxwqjh26Xejz6hv8PoZ3EDcXQUTQIQYhLi5ZXFxcXE6HxlAsarx06YFvzEc4JyH67/GYGXEc/+L5fCoi8u4KfWbGuq6WrusAAGVZIkmS29KAmbEsi6VtW2xhZhDR223hPM+Wuq4tRhjcEkZRBCEEhBAYhgHTNFlchIcjZFmGpmnQ9z201tBaOwlPR0jTFFVVYRxHjOPoJLwcoSgKKKWglHIXno2Q5zmklJBSugt/Fr8fIQxDMLPFSbiVvscIPonoYfggIv9SuJW+xwjfza0CIzv9KQEz29L3vPSQmdmWvudl4Rl3hT59F/044HKEfTxzIDjgcoQ/zxc9wNC8RsMJhQAAAABJRU5ErkJggg==\");\r\n --tab-info: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAClElEQVQ4jdWUS0hUYRiGP4UxBV0JgpJLL8d/lHFOUYFCNEaLMogSBN1ZE4JQeYsghjHJhamImhQKKTahgVcKpCIvVLSwclGjjgkFSV4WXtIiCp4W58jozJi07IcHzvf+//fyfuccfpH/dqV2Tyar4eU2NbLpVS9AvQA1sulVw8ttqd2Tyf/iFaYGl9ptI3B2Ai55oeqjwSWvoR0YAzW41C4iYXuZhauhjanj41D5Hq57Q1PxHnLGQA1tTIlI+O7JuhbaHU+g7B2Ub+PmB/j+G8aX/FrZW3A8BdW1EDppUvWYltEDF19ByeuduN4Zhs+/7tSdLyGjB5Kqx7SgUbXWxV5HP5wfDebWJFx9HaxfGAVHH2iti72Bo1tUy/r0mUEoHPbjfAaf1gFg8xecewQn+iH7IRzuBv0B2DpBtaxPi4hlu2GkaoKzfXCu30/PFLS8MQy//QS9Ixj7PVBNICKR2w2jVC2cvA+nPH5yOqHhlWE4NAP63WDsd0DVgohE7TBMc63NZLeCow2OtcGh26A3w8QXw7DssVEHYquHNNfaTKBhpFY6P5B5A440gl7nZ2s5e6B+ZOeeXgcZbtBK5wcCR7Yk5jYetJaDvRr0GoOjDbD+wzCc+GzUW3t6DWRWgbUcEk83Hwj8KOEiEqM557rSS8HuAt1tkNsIzg5/vYXdBelXQHPOdYlITOBvIyISISKxWtGqz1oM9krQr4UmswKsxaAVrfpEJNbsDVph5ouNSynweaxFkO4EWwnYLxvYSgzNWgQpBT6PiMSZPbteEuHmgdgE3Z2VkufzpOWvzKpCUIWQlr8ym5Ln8yTo7iwzWVSoUUMljRCRaLMpXkT2m8SbWrR5Zs/rKzCtRUT2mUmizGfL31L9ARu1bU1qe+H9AAAAAElFTkSuQmCC\");\r\n --tab-peers: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABZUlEQVQ4je2UMWrDMBhGf0JJ3EUpNTJElrEhKgYPxuAWgfFgAjbEYIgne/It0qX3yNBT5ATJJQqla+g9vg5NoSEdEs198CZJD/0gRPTPb6qqcpqm2TdNg6P7qqoc096orutd27YYhgHDMKBtW9R1vSOikUlwXJYluq5D3/fo+x5d16EsSxDR2CR4WxQFVqvViUVRgIhujYJ5nmO5XJ6Y57l5UGuNxWJxotbaPJgkyYfWGlmWIcsyaK2RJMmHaXAShuE6jmOkaYo0TRHHMcIwXBPRxCR4Q0R3SqltFEWIoghKqS0R3R3XrkNK+eD7/ksQBO/z+RxKKQRB8On7/qvneU8XRTjnSgjxLIR4c10XUkp4nneilBKu60IIcRBCbGaz2eOfMdu2nzjn4JzDcZyL/Nlv2/b5jRljG8YYptPpVTLGwBjbnAUtyzpYlgVDD39NfU9ELhHJK3WPZ88Y0/eDNdHos7iIL1k4pt0kxY1cAAAAAElFTkSuQmCC\");\r\n --tab-trackers: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAACC0lEQVQ4jdWSsWsiQRTGvyoEIsmUuS7/QRbOImwRbDRbpNhiFyZYLOyyLKwh4hVrJdhsY5ohsOfYbGVlY2ezZf4ELYVUIW2IheV3jQaJcpru7oMHj5lvfu/NmwH+e9m2Xcmy7CXLshfbtisHHxyAP3bleZ6/z+dzzudz5nn+vs//qd/gz135aDRaFEXBoig4Go0W+/yf0uD1E3i6yssZeA4A4/H4fjKZvE0mk7fxeHwPABl4rsEyADyBpxq83gL2wcq6Uh+80OBdFzwiKUherUJ0wSMN3vXBi3V3fbCya4ZnGmx2weMV9EaDl6ZpGr1ej71ej6ZpGhq87IM3ANAFjzXYHIBnW8AV1B2A3uZakiRDpRSVUkySZPjF7w1AdydsY5ZKg81H8EQIITqdziIMw2UYhstOp7MQQohH8ESDTQ2qv8IAIANLGvyVgSUppR/HMdvt9nO73X6O45hSSn/Tsxf45bozx3GYpinTNKXjOEySZPYtyFqGYRhxHNPzvFeSFZIVz/Ne4zimYRjGt4G+7w+llGw0Gmy1Wmy1Wmw0GpRS0vf94X7ChoQQIoqiD8uyltPp9Hbd4XQ6vbUsaxlF0YcQQhwMrNVqvpSSrusyiiIGQcAgCBhFEV3XpZSStVrNPxhYr9dn1WqVSqmHdXfrUEo9VKtV1uv1wx+HZHkF2PoWJEurvfLBwH9KfwCL+zyAGn9UVAAAAABJRU5ErkJggg==\");\r\n }" - } - ], - "name": "Transmission dark theme", - "originalDigest": "870ff0bb623012a14a3ff083756fb0b94f6668a0", - "id": 11 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/157126.json?ik-colorPallets=ik-navyblue&ik-frosted=ik-froston&ik-watchedoverlay=ik-watchedon&ik-searchbox=ik-searchboxcenter", - "md5Url": "https://update.userstyles.org/157126.md5", - "url": "http://userstyles.org/styles/157126", - "originalMd5": "662b85c8aea5f0cc483285ec80705517", - "installDate": 1575341578500, - "sections": [ - { - "code": "/*\n * Name: CleanTube v2\n * Author: Sardorbek Usmonov\n * Version: 2.0.0\n*/\n/* ============ COLOR PALETTE ============ */\n:root {\n --blue-day: #306AF2;\n --blue-night: #4789E5;\n --red-day: #F8333C;\n --red-night: #ee353e;\n /* Day */\n --day-darker: #7d7d7d;\n --day-dark: #B7B7B7;\n --day-light: #DDDDDD;\n --day-lighter: #EAEAEA;\n --day-lightest: #FFFFFF;\n /* Night */\n --night-darkest: #1E2029;\n --night-darker: #282a36;\n --night-dark: #373844;\n --night-light: ##6272a4;\n --night-lighter: #e2e2dc\n}\n/* Cream White Theme */\nhtml:not([style-scope]):not(.style-scope) {\n --yt-spec-brand-background-primary: var(--day-lightest) !important;\n}\nytd-masthead, app-toolbar.ytd-c4-tabbed-header-renderer {\n box-shadow: var(--masterhead-shadow) !important;\n}\n\n/* Day */\nhtml:not([style-scope]):not(.style-scope) {\n /* CUSTOM */\n --watched-bg-color: rgba(255, 255, 255, .45);\n --masterhead-shadow: 0 5px 12px 5px rgba(228, 9, 9, .07), 0 0 0px rgba(0, 0, 0, 0.25);\n /* REMAPPED */\n --yt-spec-brand-background-primary: var(--day-lighter);\n --yt-main-app-background: var(--day-lightest);\n --yt-app-background: var(--day-lightest);\n --yt-main-app-background-tmp: var(--day-lightest);\n --yt-spec-general-background-b: var(--day-lightest);\n --yt-spec-general-background-a: var(--day-lightest);\n --yt-sidebar-background: var(--day-lightest);\n --yt-guide-background: var(--day-lightest);\n --yt-dialog-background: var(--day-lightest);\n --yt-live-chat-background-color: var(--day-lightest);\n --paper-listbox-background-color: var(--day-lightest);\n --yt-spec-brand-background-solid: var(--day-lightest);\n --darker-bg-color: var(--day-lightest);\n --yt-live-chat-vem-background-color: var(--day-lighter);\n --yt-std-surface-300: var(--day-lighter);\n --yt-simple-menu-header-background: var(--day-lighter);\n --yt-featured-channel-title-text-color: var(--day-darker);\n --ytd-metadata-line-color: var(--day-darker);\n --yt-spec-text-disabled: var(--day-darker);\n --yt-spec-text-primary: var(--night-darkest);\n --video-title-text-color: var(--night-darker);\n --yt-expand-color: var(--day-darker);\n --yt-spec-text-secondary: var(--day-darker);\n --link-text-color: var(--day-darker);\n --ytd-badge-icon-color: var(--day-darker);\n --ytd-owner-badge-color: var(--day-darker);\n --yt-spec-call-to-action: var(--day-darker);\n --badge-bg: var(--red-day);\n --badge-color: var(--day-lightest);\n --comment-op-bg-color: var(--day-darker);\n --iron-icon-fill-color: var(--day-darker);\n --comment-op-check-color: var(--day-lightest);\n --yt-button-color: var(--day-darker);\n --yt-spec-brand-button-background: var(--red-day);\n --searchbox-focus-color: var(--red-day);\n --searchresults-bg-color: var(--day-lightest);\n --searchresults-text-color: var(--day-darker);\n --searchresults-text-bg-hovered: var(--day-light);\n --searchbox-placeholder-color: var(--day-darker);\n --searchresults-searched-text-color: var(--blue-day);\n --paper-toggle-button-checked-button-color: var(--blue-day);\n --scrollbar-background: var(--day-lightest);\n --scrollbar-color: var(--day-light);\n --scrollbar-hover: var(--day-dark);\n --scrollbar-active: var(--day-darker);\n --sidepanel-menu-active: rgb(255, 0, 0, .25);\n --sidepanel-menu-active-color: red;\n --yt-spec-10-percent-layer: var(--day-light);\n --yt-spec-icon-disabled: var(--day-light);\n --yt-spec-icon-inactive: var(--day-darker);\n --skeleton-bg-color: var(--day-lighter);\n --paper-toggle-button-unchecked-bar: var(--day-dark);\n --paper-toggle-button-unchecked-bar-color: var(--paper-toggle-button-unchecked-bar);\n --url-color: var(--blue-day);\n}\n\n/* Night */\nhtml[dark]:not([style-scope]):not(.style-scope), [dark]:not([style-scope]):not(.style-scope) {\n /* CUSTOM */\n --watched-bg-color: rgba(0, 0, 0, .65);\n --masterhead-shadow: 0 5px 12px 5px rgba(36, 36, 36, .07), 0 0 0px rgba(0, 0, 0, 0.25);\n /* REMAPPED */\n --yt-spec-brand-background-primary: var(--night-darker) !important;\n --yt-main-app-background: var(--night-darkest);\n --yt-app-background: var(--night-darkest);\n --yt-main-app-background-tmp: var(--night-darkest);\n --yt-spec-general-background-b: var(--night-darkest);\n --yt-spec-general-background-a: var(--night-darkest);\n --yt-sidebar-background: var(--night-darkest);\n --yt-guide-background: var(--night-darkest);\n --yt-dialog-background: var(--night-darkest);\n --yt-live-chat-background-color: var(--night-darkest);\n --paper-listbox-background-color: var(--night-darkest);\n --yt-spec-brand-background-solid: var(--night-darkest);\n --darker-bg-color: var(--night-darkest);\n --yt-live-chat-vem-background-color: var(--night-darker);\n --yt-std-surface-300: var(--night-darker);\n --yt-simple-menu-header-background: var(--night-darker);\n --yt-featured-channel-title-text-color: var(--night-lighter);\n --ytd-metadata-line-color: var(--night-lighter);\n --yt-spec-text-disabled: var(--night-lighter);\n --yt-spec-text-primary: var(--night-lighter);\n --video-title-text-color: var(--day-lightest);\n --yt-expand-color: var(--night-lighter);\n --link-text-color: var(--night-lighter);\n --yt-spec-text-secondary: var(--night-lighter);\n --ytd-badge-icon-color: var(--night-lighter);\n --ytd-owner-badge-color: var(--night-lighter);\n --yt-spec-call-to-action: var(--night-lighter);\n --badge-bg: var(--red-night);\n --badge-color: var(--day-lighter);\n --comment-op-bg-color: var(--night-dark);\n --iron-icon-fill-color: var(--night-lighter);\n --comment-op-check-color: var(--day-lightest);\n --yt-button-color: var(--night-lighter);\n --yt-spec-brand-button-background: var(--red-night);\n --searchbox-focus-color: var(--red-night);\n --searchresults-bg-color: var(--night-darker);\n --searchresults-text-color: var(--night-lighter);\n --searchresults-text-bg-hovered: var(--night-dark);\n --searchbox-placeholder-color: var(--night-lighter);\n --searchresults-searched-text-color: var(--blue-night);\n --paper-toggle-button-checked-button-color: var(--blue-night);\n --scrollbar-background: var(--night-darkest);\n --scrollbar-color: var(--night-dark);\n --scrollbar-hover: var(--night-light);\n --scrollbar-active: var(--night-lighter);\n --sidepanel-menu-active: var(--night-dark);\n --sidepanel-menu-active-color: var(--red-night);\n --yt-spec-10-percent-layer: var(--night-dark);\n --yt-spec-icon-disabled: var(--night-dark);\n --yt-spec-icon-inactive: var(--night-lighter);\n --skeleton-bg-color: var(--night-darker);\n --paper-toggle-button-unchecked-bar: var(--night-dark);\n --paper-toggle-button-unchecked-bar-color: var(--paper-toggle-button-unchecked-bar);\n --url-color: var(--blue-night);\n}\n\n/* ============ FONTS ============ */\n@font-face {\n font-family: Google Sans;\n font-style: normal;\n font-weight: 400;\n src: url(https://fonts.gstatic.com/s/googlesans/v14/4UaGrENHsxJlGDuGo1OIlL3Owp4.woff2);\n}\n\n@font-face {\n font-family: Google Sans;\n font-style: normal;\n font-weight: 500;\n src: url(https://fonts.gstatic.com/s/googlesans/v14/4UabrENHsxJlGDuGo1OIlLU94YtzCwY.woff2);\n}\n\n/* ============ BASE CODE ============ */\nbody, html, #search-input.ytd-searchbox-spt input {\n font-family: 'Google Sans', Roboto, sans-serif;\n font-weight: 400;\n}\n\nb {\n font-family: 'Google Sans', Roboto, sans-serif !important;\n font-weight: 500 !important;\n}\n\nyt-formatted-string[has-link-only_]:not([force-default-style]) a.yt-simple-endpoint.yt-formatted-string, #description-text.ytd-video-renderer, .content.ytd-channel-video-player-renderer, .deemphasize.yt-formatted-string, #caption.ytd-toggle-item-renderer, #label.ytd-pinned-comment-badge-renderer {\n color: var(--link-text-color) !important;\n}\n\nyt-icon.ytd-pinned-comment-badge-renderer {\n fill: var(--link-text-color) !important;\n}\n\n#tabs-inner-container.ytd-c4-tabbed-header-renderer, #channel-header.ytd-c4-tabbed-header-renderer, #container #section, ytd-multi-page-menu-renderer {\n background: var(--darker-bg-color) !important;\n}\n\n#sections.ytd-multi-page-menu-renderer > ytd-background-promo-renderer.ytd-multi-page-menu-renderer {\n background: var(--darker-bg-color);\n margin-bottom: none;\n}\n\npaper-button.ytd-subscribe-button-renderer .deemphasize.yt-formatted-string {\n color: white !important;\n}\n\npaper-button.ytd-subscribe-button-renderer[subscribed] .deemphasize.yt-formatted-string {\n color: var(--yt-spec-text-secondary) !important;\n}\n\n#video-title.yt-simple-endpoint.ytd-grid-video-renderer, h3.ytd-compact-video-renderer, ytd-compact-radio-renderer.use-ellipsis #video-title.ytd-compact-radio-renderer, #video-title.ytd-playlist-panel-video-renderer, .title.ytd-video-primary-info-renderer {\n color: var(--video-title-text-color) !important;\n}\n\nytd-live-chat-frame#chat, #search-icon-legacy.ytd-searchbox:hover {\n border: none;\n box-shadow: none;\n}\n\nytd-author-comment-badge-renderer {\n background: var(--comment-op-bg-color);\n}\n\nytd-author-comment-badge-renderer yt-icon {\n fill: var(--comment-op-check-color);\n}\n\nytd-guide-entry-renderer[active] {\n background-color: var(--sidepanel-menu-active);\n border-radius: 0 25px 25px 0;\n}\n\nytd-guide-entry-renderer[active] .guide-icon.ytd-guide-entry-renderer, ytd-guide-entry-renderer[active] .title.ytd-guide-entry-renderer {\n fill: var(--sidepanel-menu-active-color);\n color: var(--sidepanel-menu-active-color);\n}\n\napp-toolbar.ytd-c4-tabbed-header-renderer {\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15), 0 0 0px rgba(0, 0, 0, 0.25);\n}\n\nytd-sentiment-bar-renderer[activated_] #like-bar.ytd-sentiment-bar-renderer {\n background: var(--blue-day);\n}\n\nytd-toggle-button-renderer.style-default-active[is-icon-button], ytd-toggle-button-renderer.style-default-active[is-icon-button] yt-icon {\n color: var(--blue-day);\n fill: var(--blue-day);\n}\n\n#home-page-skeleton .skeleton-bg-color, .masthead-skeleton-icon, .watch-skeleton .skeleton-bg-color, html[dark] #home-page-skeleton .skeleton-bg-color, html[dark] .masthead-skeleton-icon, html[dark] .watch-skeleton .skeleton-bg-color {\n background-color: var(--skeleton-bg-color);\n}\n\npaper-toggle-button[checked]:not([disabled]) .toggle-bar.paper-toggle-button {\n background-color: var(--paper-toggle-button-unchecked-bar) !important;\n}\n\n#expander yt-formatted-string[has-link-only_]:not([force-default-style]) a.yt-simple-endpoint.yt-formatted-string, #description a.yt-simple-endpoint.yt-formatted-string, #expander a.yt-simple-endpoint.yt-formatted-string {\n color: var(--url-color) !important;\n}\n\n/* ============ SEARCHBOX ============ */\n#search-icon-legacy.ytd-searchbox, #container.ytd-searchbox {\n border: none;\n background: transparent !important;\n}\n\n#container.ytd-searchbox input.ytd-searchbox::placeholder, input#search::placeholder {\n color: var(--searchbox-placeholder-color);\n}\n\nytd-searchbox[has-focus] #container.ytd-searchbox {\n border: none;\n border-bottom: var(--searchbox-focus-color) solid 1px;\n box-shadow: none;\n transition: border-bottom 350ms ease-in-out;\n -webkit-transition: border-bottom 350ms ease-in-out;\n -o-transition: border-bottom 350ms ease-in-out;\n}\n\n#container.ytd-searchbox {\n box-shadow: none !important;\n}\n\n/* ============ SEARCHRESULTS ============ */\n.sbdd_b, .sbsb_a, .sbfl_b {\n background: var(--searchresults-bg-color);\n border: none;\n}\n\n.gsfs, .sbfl_a {\n color: var(--searchresults-text-color);\n}\n\n.sbsb_d {\n background: var(--searchresults-text-bg-color-hovered);\n}\n\n.sbpqs_a {\n color: var(--searchresults-searched-text-color);\n}\n\n.sbdd_a {\n top: 50px !important;\n z-index: 9999 !important;\n}\n\n.sbdd_b {\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15), 0 0 0px rgba(0, 0, 0, 0.25);\n}\n\n/* ============ WATCHED BADGE ============ */\nytd-thumbnail-overlay-toggle-button-renderer, ytd-thumbnail-overlay-time-status-renderer[overlay-style=DEFAULT] {\n z-index: 2;\n}\n\nytd-thumbnail-overlay-resume-playback-renderer, #progress.ytd-thumbnail-overlay-resume-playback-renderer {\n background-color: var(--watched-bg-color);\n height: 100%;\n width: 100%;\n}\n\n#progress.ytd-thumbnail-overlay-resume-playback-renderer:after {\n content: 'WATCHED';\n left: 0;\n top: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n font-size: 1.35rem;\n letter-spacing: 0.035rem;\n height: 21px;\n width: 77px;\n margin: 4px;\n border-radius: 3px;\n opacity: .8;\n color: #fff;\n background: #121212\n}\n\nytd-thumbnail:hover ytd-thumbnail-overlay-resume-playback-renderer, #progress.ytd-thumbnail-overlay-resume-playback-renderer {\n height: 0\n}\n\nyt-formatted-string.ytd-thumbnail-overlay-playback-status-renderer {\n display: none;\n}\n \n/* ============ BADGES ============ */\n.badge-style-type-simple.ytd-badge-supported-renderer, .badge-style-type-live-now.ytd-badge-supported-renderer, .badge-style-type-red.ytd-badge-supported-renderer {\n background: var(--badge-bg);\n color: var(--badge-color);\n border: none;\n}\n\n/* ============ FROSTED ============ */\nytd-thumbnail-overlay-side-panel-renderer {\n --blur: 10px;\n backdrop-filter: blur(var(--blur));\n -webkit-backdrop-filter: blur(var(--blur));\n}\n\n/* ============ SCROLLBAR ============ */\nhtml[hide-scrollbar=\"true\"] ::-webkit-scrollbar, ::-webkit-scrollbar-corner {\n display: none;\n}\n\n::-webkit-scrollbar, ::-webkit-scrollbar-corner {\n background: var(--scrollbar-background);\n width: 10px;\n height: 10px;\n}\n\n::-webkit-scrollbar-button {\n display: none;\n}\n\n::-webkit-scrollbar-thumb {\n background: var(--scrollbar-color);\n}\n\n::-webkit-scrollbar-thumb:not(:active):hover {\n background: var(--scrollbar-hover);\n}\n\n::-webkit-scrollbar-thumb:active, ::-webkit-scrollbar-thumb:hover:active {\n background: var(--scrollbar-active);\n}", - "urlPrefixes": [ - "https://www.youtube.com/" - ] - } - ], - "name": "CleanTube 2 (NEW UPDATE!!!)", - "originalDigest": "f77d1739500a82bd642f03ecabb54308bd2b03f1", - "id": 21, - "updateDate": 1581129986355 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/22251.json", - "md5Url": "https://update.userstyles.org/22251.md5", - "url": "http://userstyles.org/styles/22251", - "originalMd5": "52673f0b8a441088a0229dbbf36f9ee4", - "installDate": 1575343452208, - "sections": [ - { - "code": "@namespace url(http://www.w3.org/1999/xhtml);\n#topRight,\n#topLeft,\n#bottom,\n#middleContainer>h3 {\n display: none !important;\n}\n\n#ctitle {\n color: #dddddd !important;\n}\n\nbody {\n background: #1E2029;\n}\n\n#middleContainer {\n background: #1E2029 !important;\n border: 0 !important;\n color: #1E2029 !important;\n}\n\nul.comicNav li a {\n background: #1E2029 !important;\n border-color: hsl(220, 28%, 40%) !important;\n box-shadow: none !important;\n}\n\nul.comicNav li a:hover {\n background: hsl(211, 38%, 66%) !important;\n color: #ffffff !important;\n}\n\n.imageCaption {\n color: #dddddd !important;\n text-align: center !important;\n background: #282a36 !important;\n margin: 5px 0 0 !important;\n padding: 5px !important;\n font-size: 13px !important;\n}", - "domains": [ - "xkcd.com" - ] - } - ], - "name": "dracula: xkcd", - "originalDigest": "4bc70aa95f0eb41725e1c4e2dbc5b718dcdd0a6f", - "id": 22, - "updateDate": 1581130216156 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/153882.json", - "md5Url": "https://update.userstyles.org/153882.md5", - "url": "http://userstyles.org/styles/153882", - "originalMd5": "cab8c955bd5e6f83d66045dbee50142c", - "installDate": 1575355300691, - "sections": [ - { - "urls": [], - "urlPrefixes": [], - "domains": [ - "nixos.org" - ], - "regexps": [], - "code": "@font-face {\r\n font-family: 'Quattrocento';\r\n font-style: normal;\r\n font-weight: 400;\r\n src: local('Quattrocento'), url(http://themes.googleusercontent.com/static/fonts/quattrocento/v5/WZDISdyil4HsmirlOdBRFKRDOzjiPcYnFooOUGCOsRk.woff) format('woff');\r\n}\r\nbody {\r\n font-family: 'Quattrocento';\r\n font-size: 18px;\r\n line-height: 1.45em;\r\n background-color: #002b36 !important;\r\n color: #93a1a1 !important;\r\n}\r\nh1 {\r\n color: #93a1a1 !important;\r\n}\r\na:link {\r\n color: #268bd2 !important;\r\n}\r\na:visited {\r\n color: #2aa198 !important;\r\n}\r\na:hover {\r\n color: #d33682 !important;\r\n}\r\ndiv.book {\r\n background-color: #073642 !important;\r\n}\r\ndiv.docbook code {\r\n font-size: 0.8em;\r\n}\r\npre {\r\n box-shadow: none !important;\r\n border: none !important;\r\n}\r\ncode,\r\npre {\r\n background-color: #073642 !important;\r\n color: #93a1a1 !important;\r\n}\r\n.alert-info code,\r\n.alert-info pre,\r\n.alert-info {\r\n background-color: #fdf6e3 !important;\r\n color: #586e75 !important;\r\n border: none !important;\r\n line-height: 1.4em !important;\r\n}\r\n.alert-info code,\r\n.alert-info pre {\r\n background-color: #eee8d5 !important;\r\n}\r\ntable#search-results tr.odd > td {\r\n background-color: #073642;\r\n}\r\n.table th,\r\n.table td {\r\n border: none;\r\n}\r\ntable#search-results tr.details > td:hover {\r\n background-color: #002b36;\r\n}\r\n.table-hover tbody tr:hover>td,\r\n.table-hover tbody tr:hover>th {\r\n background-color: #002b36;\r\n}\r\n.navbar-inner {\r\n background-image: none;\r\n background-color: #073642;\r\n border: none;\r\n}\r\n.navbar .brand,\r\n.navbar .nav>li>a {\r\n text-shadow: none;\r\n}\r\n.navbar-search .search-query {\r\n background-color: #002b36;\r\n border: none;\r\n}\r\nul.nixos-blogs > li:nth-child(odd),\r\nul.nixos-commits > li:nth-child(odd) {\r\n background-color: #073642;\r\n}\r\nul.nixos-blogs > li,\r\nul.nixos-commits > li {\r\n border-top: 1px solid #073642;\r\n}\r\nhr {\r\n border-top: 1px solid #073642;\r\n border-bottom: 1px solid #073642;\r\n}\r\ntr.news-header {\r\n border-bottom: 1px solid #073642;\r\n}\r\n.news-short {\r\n color: #b58900;\r\n}\r\n/* $base03: #002b36; */\r\n/* $base02: #073642; */\r\n/* $base01: #586e75; */\r\n/* $base00: #657b83; */\r\n/* $base0: #839496; */\r\n/* $base1: #93a1a1; */\r\n/* $base2: #eee8d5; */\r\n/* $base3: #fdf6e3; */\r\n/* $yellow: #b58900; */\r\n/* $orange: #cb4b16; */\r\n/* $red: #dc322f; */\r\n/* $magenta: #d33682; */\r\n/* $violet: #6c71c4; */\r\n/* $blue: #268bd2; */\r\n/* $cyan: #2aa198; */\r\n/* $green: #859900; */" - } - ], - "name": "Nixos Solarized (Dark)", - "originalDigest": "b8e24095530af971f61ee64a39b373a7ca2e5736", - "id": 25 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/179101.json", - "md5Url": "https://update.userstyles.org/179101.md5", - "url": "http://userstyles.org/styles/179101", - "originalMd5": "5a232c77627dfdb22013e4026899b0b1", - "installDate": 1581128205184, - "sections": [ - { - "code": ":root {\n --bg1: #1E2029;\n --bg2: #282a36;\n --bg3: #282a36;\n --bg4: #21222d;\n /* code background */\n --bg5: #282a36;\n --bg6: #282a36;\n\n --selected: #f8f8f2;\n --selected2: #f8f8f2;\n --accents: #bd93f9;\n\n --btn: #44475a;\n --btn2: #44475a;\n --btn3: #44475a;\n --btn4: #44475a;\n}\n\npre,\ncode,\ntt,\nkbd:not(.badmono),\npre,\nsamp,\n.js-line-number,\n.blob-num,\n.blob-code,\n.file-data pre,\n.line-data,\n#gist-form .file .input textarea,\n.blob-code-inner {\n font-family: 'Source Code Pro', 'Menlo', Consolas, 'Liberation Mono', Menlo, Courier, monospace !important;\n}\n\n.tabnav--responsive .tabnav-tab,\n.page-responsive .previewable-comment-form .comment-form-head.tabnav .toolbar-commenting,\n.pagehead.repohead.readability-menu {\n background-color: var(--bg1) !important;\n border: 0px;\n}\n\n.SelectMenu-item,\n.SelectMenu-header {\n background-color: var(--bg1) !important;\n color: var(--selected) !important;\n}\n\n.SelectMenu-item:hover {\n background-color: var(--btn) !important;\n}\n\ntextarea:focus {\n background-color: var(--bg1) !important;\n}\nbody {\n background-color: var(--bg3) !important;\n}\n.markdown-body table tr,\n.blob-num-context,\n#user-content-toc td {\n background: var(--bg1) !important;\n}\n.highlight:not(.lines) tr:not(.inline-comments):hover td.selected-line.blob-num:not(.line-age),\n.highlight:not(.lines) tr:not(.inline-comments):hover td.blob-num,\n.blob-num[colspan],\n.blob-num-hunk {\n background: var(--bg3) !important;\n}\n.list-browser-item.closed,\n.content .verseblock-content,\n.content .verseblock-content,\n.simple-stacked-bar,\n.date_selector td.selectable_day:hover,\n.date_selector td.selectable_day.hover,\n.pagination a:hover,\n.pagination a:focus,\n.pagination span:hover,\n.pagination span:focus,\n.pagination em:not(.current):hover,\n.pagination em:not(.current):focus,\n.dropdown-divider,\n.js-current .standalone a,\n.sidebar-module .disable > a,\n.label-select-menu div.labelstyle-000000.selected,\n.ScreenshotCarousel-navitem.selected,\n.CircleBadge {\n background: var(--bg1) !important;\n}\n.header,\n.headers,\n#readme .markdown-body,\n.social-count,\n.file,\n.box-body,\n.markdown-body table tr:nth-child(2n),\n.steps li,\n.explore-section:nth-child(2n),\n.markdown-format table,\n.list-group-item,\n.chromed-list-browser .none p,\n.chromed-list-browser .error p,\n.list-browser-footer,\n.commandbar .choice:hover,\n#gollum-editor-help,\n.search-filter:hover,\n#wiki-history table tr:nth-child(2n) td,\n.display tr:hover,\n.octofication .message,\n.commandbar .loading:hover,\n.comment-content,\n.commandbar .message,\n.boxed-group-inner,\n#adv_code_search .search-page-label,\n.timeline-comment,\n#contributors-master svg.viz,\n.diff-table .line-comments,\n.menu,\nsvg.spark,\nsvg.capped-card-content,\nbody.api .content tbody,\n.markdown-format img:not(.emoji),\n.mini-repo-list,\n#common-issues,\n.setup-wrapper .oauth-permissions-details,\n.milestone-list,\n.setup-form .setup-plans,\n.prose-diff > .markdown-body,\n.revision .gu,\n.tree-browser td,\n.tree-browser .alt td,\n.branches .branch-summary,\n.branches .no-results-message,\n.simple-box-footer,\n.commit-group,\n.blankslate,\n.content table tr,\n#search-results,\ntable.files,\n.mergeable,\n.org-module,\n.org-add-footer,\n.branch-infobar,\ntable.capped-list tr:nth-child(2n),\n.team-org-group,\n#gollum-editor-help-wrapper,\n.integrations-quality,\n.showcase-featured .mo-info .featured-grid-outer,\n.render-shell,\n.list,\n.latest-commit .commit-author,\n.bubble,\n.tabs > a.selected,\n.comment-form-head .tabnav-tab.selected,\n.oauth-org-access-details .boxed-group-list > li.on,\n#fullscreen_overlay,\n.branch-action-body,\n.inline-comment-form,\n.file-history-tease .participation,\n.gist-quicksearch-result-header,\n.label-generic,\n.migrate-org-roles,\n.commit-tease .commit-meta,\n.manage-repo-access-icon,\n.table-list:not(.team-member-list),\n.repo-file-upload-progress,\n.gcr-ext-editor-dialog,\n.shade-gray,\n.exploregrid-item,\n.signed-commit-badge-small,\n.facebox-popup,\n.explore-signup-entice-wrapper,\n.billing-addon-items tr.total-row,\n.billing-addon-items tr.dark-row,\n.Box-body,\nli.pinned-repo-item,\n.js-contribution-graph h2 + div:last-child,\n.project-triage-pane,\n.user-profile-nav.is-stuck,\n[data-filterable-for='projects-filter'] .container-lg,\n.review-summary-form-wrapper,\n#projects-results,\n.listgroup,\n.protected-branch-orgs-and-repo-admins,\n.listgroup-overflow,\n.Header,\n.project-column,\n.btn.btn-outline,\n.js-notice > .border,\n.news .issues_labeled .border,\ntable.pricing-table,\n.two-factor-steps,\ndiv.border.rounded-1,\narticle.border.rounded-1,\n.border-right.border-bottom.border-left,\n.graph-before-activity-overview,\n.access-form-wrapper {\n background: var(--bg2) !important;\n}\n.table-list-header,\n.timeline-comment-header,\n.boxed-group > h3,\n.boxed-group .heading,\n.file-header,\n.capped-card h3,\n.select-menu-header,\n#gist-form .file .meta,\n.file .meta,\n.file-box .meta,\n.menu-heading,\n.audit-results-header,\n.branches .branch-group-heading,\n.auth-form-header,\n.commit-form,\n.migration-jumbotron,\n.migration-sub-header,\n.commit-tease,\n.manage-repo-access-title,\n.select-menu-divider,\n.signed-commit-header,\n.reorderable-task-lists .markdown-body .task-list-item.hovered,\n.next-charge-box,\n.credit-card,\n.branch-action-body .merge-message,\n.review-thread-reply,\na.card.bg-gray-light:hover,\n.add-member-team-list .team-row-header,\n.Box-header,\n.pagination .gap,\n.pagination .disabled,\n.pagination .gap:hover,\n.pagination .disabled:hover,\n.listgroup-header,\n.merge-status-item,\n.previewable-comment-form .comment-form-head.tabnav,\n.bg-gray:not(body):not(.team-discussions-container),\n.Header .header-search-wrapper,\n.Header .header-search-wrapper input,\n.user-key-email-unverified {\n background: var(--bg1) !important;\n}\n.calendar-graph .contrib-details div,\n.tabnav-tabs a,\n.time,\n.gist-item .metadata .datetime,\n.list-group-item-meta,\na.keyboard-shortcuts,\nbutton.keyboard-shortcuts,\n.simple-conversation-list,\n.simple-conversation-list > li .title .num,\n.drag-and-drop,\n.starred-repo .sort-info,\n.org-stats,\n.commandbar .choice,\n.commandbar .loading,\n.commandbar .description,\nul.summary-stats li a,\n.authorship,\n.sha-block,\n.gh-header-meta,\n#last-edit,\n.setup-header .lead a,\n.repository-meta .edit-link a,\n.api-status a,\n.meta li,\n.who_when a,\n.numbers-summary a,\n.mini-icon-remove-close:hover,\n.section-heading-title .separator,\n.blog-aside .rss,\n.hook-list a,\n.github-jobs-promotion a.jobs-logo,\n.org-teams-list .team-meta,\n.repo-list-item .repo-description,\n.branch-infobar .lightweight-actions > li a,\n.repo-leaderboard-list .repo-leaderboard-meta-item a,\n.changed .moved-up:before,\n.changed .moved-down:before,\n.comment-header .octicon,\na.section-heading-back,\n.list-group-item-meta .octicon,\n.repo-leaderboard-title .title-meta,\na.pagehead-nav-item,\n.wiki-wrapper .wiki-empty-box,\n.commits-list-item .commits-comments-link,\n.timeline-comment-header,\n.commits-list-item .commit-meta,\n.issues-listing .table-list-issues .issue-comments-link,\n.issues-listing .table-list-issues .issue-meta-section a,\na.issues-reset-query,\n.labels-list-action,\ntable.tag-list p a,\ntable.tag-list td.date a,\n.muted-link,\na.muted-link,\n.render-view-modes li,\n.site-footer,\n.site-footer .octicon-mark-github:hover,\n.repo-list-stats .repo-list-stat-item,\n.range-editor span.flag .octicon,\n.commit-info .commit-meta a,\n.notifications .issue-notification.read .type-icon,\n.notifications .read a,\n.auth-form-header .octicon,\n.releases-tag-list p a,\n.history-link a,\na.issue-nwo-link,\nul.filter-list .filter-item,\n.member-meta .teams-link,\n.member-meta .btn-link,\nul.comparison-list > li em,\nul.comparison-list > li.title,\n.diffstat-summary,\na.team-member-ellipsis,\na.discussion-item-toggle-open,\na.discussion-item-toggle-closed,\nbutton.discussion-item-toggle-open,\nbutton.discussion-item-toggle-closed,\n.dropdown-header,\n.participation a,\n.completeness-indicator-info,\n.type-icon-state-none,\n.pagehead-tabs-item,\na.pagehead-tabs-item,\n.commit-tease,\n.reponav-item,\na.reponav-item,\n.delete-owners-button,\n.stats-group-stat,\n.stats-group-stat.no-link:hover,\n.wiki-edit-link,\n.toolbar-item .menu-target,\n.member-meta .member-meta-link,\n.hidden-text-expander a,\n.ellipsis-expander,\n.text-muted,\n.listgroup-item,\n.discussion-item-header,\n.discussion-sidebar-heading,\n.org-header-meta .meta-item .meta-link,\n.underline-nav-item,\n.boxed-group-inner,\n.lead,\n.form-checkbox .note,\n.bot-identifier,\n.dashboard-notice .dismiss:hover,\n.text-gray,\ntd.icon .octicon-file-text,\ntd.icon .octicon-file-symlink-file,\n.UnderlineNav-item,\n.project-header-link,\nbutton.project-header-link,\ntd.icon,\n.project-pane-close,\n.facebox-close,\n.tree-browser-result mark {\n color: #a3aac1 !important;\n}\nimg,\n#browser table,\n#browser table th,\n#issues .menu ul li,\n.branches .more-branches,\n.issues td,\nul.main_nav li.selected,\n.browser_header,\n.issue-head,\n.bootcamp-help .image,\nul.hook-list,\n.clone-url-button,\n.list-tip li,\n.section-nav a,\n.search-menu-container,\n.repo_list li a,\n.graphs .axis,\n.switcher > span:after,\na.assignee-bit,\n.menu li,\n.notifications td,\n.filter-tab,\nul.hook-list li,\n.repo .border,\n.box-action,\nul.repo-stats li a,\n.footer_nav h4,\n.footer-divider,\n.chromed-list-browser,\n.js-activate-link,\n.chromed-list-browser div,\n.filter-bar,\n.columns.sidebar,\n.title,\n.lbl,\n#contributors .person,\n.tabnav,\n#commit-activity-master,\n#services,\n.top-rule,\n.blog-post,\n#services .service,\nul.stats,\n.select-menu-filters,\n.select-menu-item,\n.select-menu-tabs,\n.release-list > li,\n.context-body,\n.api li:before,\n.library-list .feature,\n.lower_footer,\n.cheatsheet,\n.pagehead.settings-area,\n.release-body,\n.suggester,\n.pull-state,\n.pull-number,\n.merge-pr,\n.gist-file,\n#graph-shots li,\n.sidebar,\n.release-timeline,\n.explore h2,\n#head,\n.leaderboard-list-item,\n.release-timeline-tags .main,\n.search-result-item,\n.details,\n.jobs-list,\n.content-header,\n.user-list-item,\n.markdown-body,\nul#categories li h5,\n.render-view-modes li,\n.gobutton.with-comments .sha,\n#gollum-editor-function-bar,\n.capped-box,\n.steps li,\n#common-issues,\n.steps,\n#graphs,\n.previewable-comment-form .comment,\n.org-module,\n.org-repo,\n.table-list,\n.org-add-footer,\n.auto-search-group .search-filter,\n#notification-center li,\n.branch-status,\n.comment + .comment,\n.discussion-bubble-inner,\n.member-row,\n.press-info,\n.timeline-comment,\n.timeline-comment-header,\n.timeline-commits .timeline-commits-header,\n.marketing-section,\n.featured-callout .screenshot,\n.page-new-repo .license-container,\n.sidebar-module,\n.collapsed,\n.expanded,\n.discussion-topic,\n.bubble-inner,\n.team-org-group,\ndiv.article div.helper div.content,\n.boxed-group-inner .help,\ndl.new-email-form,\n.file .meta-divider,\n.avatar-stack.multiple-avatars:before,\n.file-box,\n.file-actions .btn-group li,\n.gist .gist-file .gist-data,\n.calendar-graph .contrib-details div,\n.branch-action-body,\n.setup-form .tos-info,\n.setup-form .setup-organization-next,\n.collection-page .other-content,\n.bubble-wrap,\n.release-show,\n.file-wrap,\n.branches .branch-summary,\n.branches .no-results-message,\n.branch-a-b-count .count-half:last-child,\n.tabnav-tab.selected,\n.panel-nav,\n.file,\n.full-commit .sha-block > a,\n.theme-selector-thumbnail,\n.segmented-nav li,\n.overall-summary,\n.boxed-group-inner,\n.search-form button,\n.branches .branch-group-heading,\n.boxed-group > h3,\n.boxed-group .heading,\n.issues-list-actions,\np code,\ncode,\n.wiki-wrapper .wiki-empty-box,\n#adv_code_search .search-page-label,\npre.headers,\n.inline-comment-form,\n.history-link,\n.oauth-permissions-details,\n.setup-info-module .features-list .list-divider,\n.setup-wrapper .oauth-permissions,\n.swipe .swipe-frame .swipe-shell,\nul.search-results,\n.orgs-help-shelf-content .orgs-help-divider,\n.repository-lang-stats-graph,\n.gist-quicksearch-results,\n.gist-quicksearch-result,\n.gist-quicksearch-result-group,\n.listgroup,\n.listgroup-item + .listgroup-item,\n.user-key-badge,\n.newsfeed-placeholder,\n.progress-bar-inline .progress-bar,\n.menu-heading,\nbody .border-gray-dark,\n.discussion-item-review .blob-wrapper,\n.bot-identifier,\n.counter,\n.Counter,\ndiv.marketplace-product-callout,\n.CodeMirror-dialog-top,\n.project-card:hover {\n border-color: rgba(30, 32, 41, 1) !important;\n}\n.edit-repository-meta,\n.field label,\n.boxed-group-list li,\n.capped-box,\n.marketing-nav a,\n.repository-meta,\n.gist-item .description,\np.explain,\n.news .alert .simple .title,\n#network .graph-date,\n.tabnav-widget.text,\n.feature .intro,\nspan.diffstat,\nspan.diffstat a,\n.commit .commit-branches a,\n#readme .plain,\n.news blockquote,\n.news blockquote p,\n.collection-stat,\n.overall-summary .graphs .desc,\n.flash-global a,\n.calendar-graph .contrib-details div .lbl,\n.tag-info a,\na.browse-button,\n.ghead .dir,\n.repository-lang-stats .percent,\n.comment-header-action-text a,\n.comment-header-right a,\n.gist-item .creator,\n.dashboard-tabs a,\n#graph_data .tab a,\n.pull-info,\n.list-group-item .list-group-item-summary a,\n#contributors .capped-card .cmt,\n.boxed-group-list .access-level,\nh3.conversation-list-heading,\na.filter-tab,\n.starred-repo p.description,\n.commit-desc pre,\n.org-repo-stats a,\n.org-repo-updated a,\n.org-repo-description,\n.org-repo-forked a,\n.commandbar .display table td span,\n.clone-options,\n.pulse-section,\n.discussion-sidebar p,\n.discussion-topic-header .discussion-topic-author,\n.gist-description,\n.explain,\np.subtext,\n.team-grid .team-description,\n.orgs-nav .org-nav-item,\n.form-actions-protip .protip,\n.discussion-item .author,\n.inline-comments .comment-count,\n.sidebar-heading,\n.clear-issue-filters a,\n.render-view-modes li.active:before,\nul.comparison-list > li em,\n.marketing-benefits .column p,\n.sub-nav li a,\n.headlines a .date,\n.sidebar-module ul ul li span,\n.merge-branch-description,\n.gist-item ul.meta > li > a,\nul#categories li h5 a,\n.render-view-modes li.active,\n.user-leaderboard-list .repo-list-item .repo,\n.repo-stats li a,\n.about p,\ndl.form > dd p.note,\np.subdued,\n.team-header .team-description,\n.hfields dl.form > dt label,\n.boxed-group > h3 a.boxed-group-breadcrumb,\n.boxed-group .heading a.boxed-group-breadcrumb,\n.subscriptions-sidebar .note,\n.thread-subscription-status,\n.ellipsis-button,\n.follow-list .follow-list-info,\nform.btn .count,\n.blame .commitinfo .date,\n.gist .gist-file .gist-meta a,\n.merge-pr-more-commits,\n.hidden-text-expander a,\n.news div.message,\n.news li blockquote,\n.news .alert .pull-info,\n.news .alert .branch-link,\n.release .release-authorship a,\n.wiki-wrapper .wiki-empty-box:hover,\n.select-menu.is-showing-clear-item .select-menu-clear-item .octicon,\n.diffstat-summary a,\na.subnav-item,\n.branches .branch-group-heading .branch-group-name,\n.render-notice,\n.table-list-milestones .stat,\n.commits-listing .commit-group-title .octicon-git-commit,\n.select-menu-header .octicon:hover,\n.repo-list-description,\n.file .meta,\n.email-format .email-hidden-toggle a,\n.file-diffstat,\n.program-info-column .mega-octicon,\n.octofication .notice-dismiss:hover,\n.markdown-format .intro,\n.label-admin,\n.program-info-column p,\n.file-history-tease,\n.blob-num:hover,\n.gist-snippet-meta .gist-count-links > li > a,\n.commit-tease .message,\n.commit-author-section,\n.manage-repo-access-not-active,\n.milestone-name,\n.select-menu-modal,\n.select-menu-action,\n.feature-callout,\n.repo-file-upload-file-wrap .remove-file:hover,\n.rss-subscribe,\ntable.capped-list .octicon,\n.site-header-menu .nav-item,\n.exploregrid-item,\n.markdown-body blockquote,\n.link-gray,\n.tabnav-tabs button.tabnav-tab,\n.commits-list-item .commit-desc pre,\n.Label--outline.bg-yellow-light,\n.review-comment .pending-batched-suggestion-label {\n color: rgba(255, 255, 255, 0.6) !important;\n}\n\n.Label--outline.bg-yellow-light {\n background-color: var(--btn) !important;\n}\n#main,\n.capped-box,\n.unread_count,\n#browser table th,\n.markdown-format table th,\ntable.upgrades tr.current td,\n.definitions,\n.discussion-topic-header,\n.timeline-commits-minimal .commit-icon .octicon,\n.timeline-commits .commit-icon .octicon,\n.upload-progress,\n.search-results-listing em,\n.discussion-bubble-inner,\n#wiki-history table td,\n.gist .gist-file .gist-data,\n.logo-box,\n.markdown-example .rendered,\n.team-grid .team-members,\n.diagram-icon:not(.active),\ntable.capped-list th,\n.filter-bar,\n.audit-search-clear,\n.country-info,\n.tabnav-tab.selected,\n.file-diff-split .empty-cell,\n.composer-infobar,\n.completeness-indicator-blank,\n.leaflet-control-zoom,\n.pagehead-tabs-item.selected,\n.reponav-item.selected,\n.manage-repo-access-not-active,\n.header-search-scope,\n.reverse-progress-bar,\n.featurette.py-5,\n.payment-history .refunded,\n.payment-history .failed,\n.profile-timeline-month-heading.bg-white,\n.project-card,\n.gh-header .gh-header-sticky.is-stuck + .gh-header-shadow {\n background: var(--bg2) !important;\n}\n.btn,\npre,\nh1,\nh2,\nh3,\n.header,\ntable,\ntable tr,\ntable td,\ntable th,\nblockquote,\n.pulse-graph,\n.minibutton,\n.social-count,\n.discusion-topic-infobar,\n.box-body,\n.timeline-comment-label,\n.logo-box,\n.developer-program-badge,\n.vcard-details,\n.vcard-stats,\n.auth-form-header,\n.nav-bar-tabs .section-title,\n.pagination a:last-child,\n.pagination span:first-child,\n.boxed-group-list > li,\n.toolbar-bordered,\n.pagination span:last-child,\n.dashboard-tabs,\n.graphs,\n.graph,\n.sub-nav,\n.audit-search-clear,\n.repo-list-item,\n.email-signature-reply,\nfooter,\n.bubble .bubble-expand,\n.grid .col,\n.composer-infobar,\n.email-quoted-reply,\n.summary-stats li,\n.columns.equacols.bordered,\n.file-diffstat,\nul.filter-list,\n.news .alert,\ntable.files td,\n.explore-section,\n.repolist > li,\n.featured-grid-outer,\n.gh-header-meta,\n.theme-picker-thumbs,\n.team,\n.billing-section,\n.sidebar-module ul h3,\n.headlines li,\n.discussion-sidebar-item + .discussion-sidebar-item,\n.markdown-format img,\ndiv#common-issues ul li,\n.about-facts,\n.starred-repo,\n.markdown-example,\n.traffic-graph-stats,\n.discussion-item + .discussion-item,\n.bubble,\n.tree-browser,\n.simple-box-footer,\n.team-grid .team-members,\n.org-list .list-item,\n.stats-group .stat,\n.team-info-card .team-stats,\n.table-of-contents li,\n.commit-group,\n.table-list-bordered .table-list-cell:first-child,\n.table-list-bordered .table-list-cell:last-child,\n.table-list-cell,\n.table-list,\n.table-list-header,\n.blankslate,\n.labels-list-item,\n.subnav-divider-right,\n.subnav-bordered,\n.content table tr th,\n#search-results li,\n.subhead,\n#pages-composer,\n.render-bar,\n#gollum-editor-help,\n#gollum-editor-help-parent,\n#gollum-editor-help-list,\n.auth-section,\n.commit-sha,\n.comment-body,\n.mini-repo-list-item,\n.advanced-search-form fieldset,\n.contrib-column,\n.org-header .edit-org,\n.pulse-summary .summary-box,\n.pulse-summary .summary-box li:first-child,\n.list-item + .list-item,\n.list-item + .list-heading,\n.list-heading + .list-item,\n.issue-list-item,\n.collection-card,\n.setup-header,\nbody.api pre,\n.stats-group-stat:first-child,\n.build-statuses-list,\n#gollum-dialog-dialog-buttons,\n#gollum-dialog-dialog h4,\na.gollum-minibutton,\na.gollum-minibutton:visited,\n.two-factor-toggle .two-factor-status,\n.two-factor-settings-group,\n.member-badge,\nul.comparison-list > li,\n.release-downloads,\n.release-downloads li,\n.blob-interaction-bar,\ninput.subnav-search-input,\n.select-menu-header,\n.select-menu-modal,\n#gist-form .file .meta,\n.file .meta,\n.file-box .meta,\n.capped-card,\n.audit-results-header,\n.pagination a,\n.pagination span,\n.pagination em,\n.input_area,\n.output_area .rendered_html table,\n.render-info .message,\n.subnav .btn + .issues-search,\n.branch-action-body .branch-action-item + .branch-action-item,\n.discussion-item-merged.open .discussion-item-details-header,\n.discussion-item-merged.open .build-statuses-list,\n.build-status-item,\n.pagehead-tabs-item.selected,\n.org-header,\n.pagehead,\n.branch-action-item + .mergeability-details,\n.migration-section,\n.migrate-org-roles,\n.migrate-org-roles-header,\n.migration-footer,\n.migration-org-avatar,\n.org-migration-settings-section,\n.word-upload-callout .note,\n.commit-tease .commit-meta,\n.manage-user-info,\n.manage-repo-access-title,\n.org-settings-team-item:first-child,\n.label-generic,\n.plan-notice,\n.intgr-header,\n.code-list-item,\n.sort-bar,\n.repo-file-upload-outline,\n.comment-reactions.has-reactions,\n.reaction-summary-item,\n.select-menu-divider,\n.featurette.border-top,\n.tile-block,\n.tile-bordered:not(:last-child),\n.showcase-page-header,\n.showcase-page-repo-list,\n.header-search-scope,\n.result-group a,\n.signed-commit-badge,\n.signed-commit-header,\n.user-key-email,\n.border-top,\n.pricing-card-cta,\n.shelf,\n.access-token,\n.about-menu,\n.oauth-border,\n.reponav-item.selected,\n.file-header,\n.reorderable-task-lists .markdown-body .task-list-item.hovered,\n.next-charge-box,\n.setup-info-module h2,\n.radio-label,\n.border,\n.border-top,\n.border-right,\n.border-bottom,\n.border-left,\n.border-y,\n.pinned-repo-list-item,\n.pinned-repo-filters,\n.orghead,\n.orghead .edit-org,\n.Box-body-row,\n.discussion-item-deployed,\n.branch-action-body .merge-message,\n.new-project-column,\n.confirm-removal-list-container,\n.confirm-removal-list-item,\n.user-profile-nav,\n.review-thread-reply,\n.feature-callout-octicon,\n.feature-callout,\n.discussion-item + .discussion-item,\n.discussion-item-review + .discussion-item,\n.libraries-jumbotron,\n.last-review-thread,\n.menu-item,\n.review-comment.is-comment-editing,\n.Box,\n.team-list-footer,\n.Box-header,\n.profile-rollup-summarized + .profile-rollup-summarized,\n.Subhead,\n.dashboard-notice .coupon,\n.Box-body,\n.listgroup-header,\n.merge-status-item,\n.pending-team-invitations-link,\n.discussion-item + .discussion-item-review,\n.profile-timeline-card-wrapper,\n.profile-rollup-wrapper + .profile-rollup-wrapper,\n.email-preference-exceptions .exception,\n.user-key-email-unverified {\n border-color: rgba(255, 255, 255, 0.02) !important;\n}\n.btn:active,\noption:hover,\n.listings-layout .nav li a:hover,\n.state-merged,\n#fork-select .target:not(.disabled):hover,\n.flash-notice,\ntable.upgrades tr:hover td,\n.email-format .email-hidden-toggle:hover a,\n.dashboard-tabs a:hover,\n.documentation-results a:hover,\n.hidden-text-expander a:hover,\n.dropdown-item:hover,\n.dropdown-item.zeroclipboard-is-hover,\n.subnav-item.selected,\n.subnav-item.selected:hover,\n.subnav-item.selected:focus,\n.example-nav li a.selected,\n.issues-reset-query:hover .octicon-x,\n.segmented-nav li.active,\n.diff-expander:hover,\n.pagination .current,\n.owner-select-target:hover,\n.release-timeline-tags .expander-text:hover .expander-dots,\n.gollum-minibutton:hover,\n.gollum-minibutton:visited:hover,\n.search-result-item.navigation-focus,\n.gist-quicksearch-result.navigation-focus,\n.gist-snippet .link-overlay .link,\n.btn.btn-outline:hover,\n.btn.btn-outline:active,\n.btn.btn-outline.selected,\n.btn.btn-outline.zeroclipboard-is-hover,\n.btn.btn-outline.zeroclipboard-is-active,\n.pull-request-link:hover,\n.issues-reset-query:hover .issues-reset-query-block,\n.date-selector td.selected,\n.date-selector td.selectable-day:hover,\n.add-line-comment,\n.suggester .cur,\n.result.selected,\n.result:hover,\n.CommunityTemplate-highlight,\n.diff-table button.add-line-comment,\n.version-picker a:hover,\n.discussion-item-changes-marker.is-unread .discussion-item-icon {\n background: var(--bg2) !important;\n color: #fff !important;\n}\n.comment-reactions .user-has-reacted,\n.filter-item.selected {\n background: #373848 !important;\n}\n.markdown-format pre,\n.markdown-body pre,\n.markdown-format .highlight pre,\n.markdown-body .highlight pre,\n#facebox pre,\n.blob-expanded,\n.terminal,\n.copyable-terminal,\n#notebook .input_area,\n.blob-code-context,\n.markdown-format code,\n.api pre,\n.api code,\n.hook-delivery-details pre,\n.hook-delivery-container pre,\n.CodeMirror,\n.highlight {\n background: var(--bg4) !important;\n color: #ccc !important;\n border: none !important;\n}\n.blob-expanded .blob-num,\n.blob-expanded .blob-code {\n background: var(--bg3) !important;\n}\n\n#readme .plain,\n.readme .markdown-body,\n.readme .plain,\n.pull-request-composer,\n.drag-and-drop,\n.octofication .broadcast-icon-mask,\n.file .image,\n.merge-pr-more-commits,\n.coupons .coupon-form-body,\n.manage-repo-access-group,\n.saved-reply-form,\n.orghead .edit-org:hover,\n.octotree_views,\n.simple-box,\n.btn-link.timeline-progressive-disclosure-button,\na.border.rounded-1,\n.Box:not([style*='background']),\n.octotree_sidebar .octotree_bottom {\n background: var(--bg2) !important;\n border-color: var(--bg2) !important;\n}\n.Box-row,\n.Box-footer,\n.border-y,\n.border-top,\n.border-sm-top,\n.border-md-top,\n.border-lg-top,\n.commits-list-item + .commits-list-item,\n.diff-table .line-comments,\n.diff-table tr:not(:last-child) .line-comments,\n.timeline-comment .comment + .comment,\n.facebox-footer,\n.comment-reactions.has-reactions,\n.select-menu-divider,\n.branch-action-body .merge-branch-form,\n.branch-action-body .merge-message,\n.branch-action-item + .branch-action-item,\n.branch-action-item + .mergeability-details,\n.codesearch-results .repo-list-item + .repo-list-item,\n.dashboard-rollup-items > .dashboard-rollup-item,\n.topic-list .topic-list-item + .topic-list-item,\n.discussion-post .reply-comment:first-child,\n.issue-list-item + .issue-list-item,\n.last-review-thread,\n.review-thread-reply,\n.file-navigation .get-repo-btn,\n.user-list-item + .user-list-item,\n.wiki-list .wiki-list-item + .wiki-list-item {\n border-top: 1px solid var(--bg2) !important;\n}\n.Header {\n border-bottom: none !important;\n}\n.blame .blob-num,\n.blame-blob-num,\n.overall-summary,\n.repository-lang-stats,\n.collection-card,\n.team-grid .team,\n.code-list .divider .blob-num,\n.code-list .divider .blob-code,\n.expandable-line-num .diff-expander:hover,\n.select-menu-filters,\n.select-menu-modal,\n.pagination a,\n.build-status-item,\n.more-branches,\n.plan-choice.open,\n.uploaded-files > li.delete,\n.bg-gray-light,\n.more-repos,\n.billing-per-seat-callout:after,\n.code-list-item .blob-num,\n.blob-num.js-line-number,\n.bg-gray-light.disabled {\n background: var(--bg1) !important;\n}\n.UnderlineNav-item:focus .UnderlineNav-octicon,\n.UnderlineNav-item:hover .UnderlineNav-octicon,\n.UnderlineNav-item.selected .UnderlineNav-octicon,\n.text-gray-light,\n.markdown-body blockquote,\n.markdown-body h6,\n.table-list,\n.autocomplete-item .organization-member,\n.full-commit .branches-list li.loading,\n.full-commit .branches-list li.pull-request,\n.branches-tag-list li.loading,\n.commit-branches,\n.table-of-contents .octicon-diff-renamed,\n.toc-select .select-menu-item-icon.octicon-diff-renamed,\n.conversation-list-heading,\n.simple-conversation-list,\n.simple-conversation-list > li .num,\n.deployment-status-label,\n.list-group-item .list-group-item-summary a.quiet,\n.select-menu-tabs .select-menu-tab-nav,\n.select-menu-tabs a,\n.select-menu-item.disabled,\n.select-menu-item.disabled.selected,\n.select-menu-item.disabled .description,\n.select-menu-item.disabled.selected .description,\n.credit-card.amex .title,\n.billing-addon-items .addon-cost,\n.payment-history .refunded .status,\n.plan-choice-exp,\n.blame-commit-date[data-heat='10'],\n.blame-hunk:hover .reblame-link,\nul.comparison-list > li.title,\n.admin-options-block .disabled,\n.admin-options-block .disabled .note,\n.check-annotation-notice .annotation-title,\n.code-list .full-path a,\n.deployments-timeline-icon.is-inactive,\n.graphs .dir,\n.delete-topic-button,\n.topic-tag-action .add-topic-button,\n.topic-tag-action .remove-topic-button,\n.jump-to-suggestions-path .jump-to-octicon,\n.hook-item .description,\n.hook-item.inactive .icon-for-inactive,\n.hook-item.mute .icon-for-mute,\n.hook-item.pending .icon-for-pending,\n.hook-deliveries-list .item-status.pending,\n.hook-delivery-time,\n.repository-lang-stats ol.repository-lang-stats-numbers li > a,\n.repository-lang-stats ol.repository-lang-stats-numbers li > span,\n.page-new-repo .form-checkbox.disabled,\n.oauth-permissions-details.default:not(.delete) .access-details,\n.oauth-permissions-details.default:not(.delete) .permission-title,\n.oauth-permissions-details.none .access-details,\n.oauth-permissions-details.none .permission-title,\n.oauth-application-whitelist .edit-link,\n.oauth-application-info .app-info,\n.developer-app-item .developer-app-list-meta,\n.org-insights-cards [role='tab'][aria-selected='true'] .UnderlineNav-octicon,\n.export-actions a,\n.pinned-repo-name,\n.vcard-detail .octicon,\n.profile-timeline-card .issue-meta-section .octicon,\n.profile-rollup-toggle,\n.mini-repo-list-item .stars,\n.numbers-summary .octicon,\ntable.files td .simplified-path,\ntable.files td.message,\ntable.files td.message a,\ntable.files td.age,\n.settings-email .email-actions .settings-remove-email.settings-disabled-remove-email,\n.setup-creditcard-form .form-group select:invalid,\n.task-run.inactive .icon-for-inactive,\n.task-run.pending .icon-for-pending,\n.team-listing .expand-nested-team,\n.user-status-emoji-tab[role='tab'][aria-selected='true'] .UnderlineNav-octicon,\n.home-hero-signup .form-control-note,\n.gist-snippet-meta .gist-count-links > li .octicon,\n.gist-snippet-meta .extra-info,\n.gist-quicksearch-results .gist-quicksearch-result-header,\n.gist-quicksearch-results .select-menu-item h4,\n.gist-quicksearch-results .select-menu-item span,\n.markdown-body del {\n color: rgba(255, 255, 255, 0.4) !important;\n}\n.issues-list,\n.pulls-list-group,\n.commit-tease,\n.branch-infobar,\n.pagehead.repohead h1 .repo-label span,\n.coupons .coupon-form-body .coupon-icon,\n.menu,\n.merge-pr-more-commits,\n.api pre {\n border: 1px solid rgba(0, 0, 0, 0.03) !important;\n}\n.compare-pr-placeholder,\n.compare-cutoff,\n.diff-cutoff,\n.flash.flash-warn,\n.flash-global.flash-warn,\n.markdown-body li.added.moved,\n.repo-private-label,\n.gist-secret-label,\n.label-private,\n.stale-files-tab,\n.signed-out-comment,\n.warning,\n.commits-list-item em,\n.unsupported-browser,\n.prereceive-feedback,\n.zhc-banner {\n background: rgba(126, 81, 35, 0.4) !important;\n border: 1px solid #542 !important;\n}\n.btn,\ninput.btn,\nheader.nav-bar,\n.bubble .bubble-title,\nkbd,\na.feed,\n.list-browser-filterbar,\n.gobutton,\n.comment-header,\n.pagehead ul.tabs li a,\n.login_form input[type='submit'],\n.top-bar,\nul#bootcamp li a h4,\n#gists .context-menu-container,\nbody#com #header,\n.white-nav .selected span,\n.filter-tab,\n#header-wrapper,\n#header-wrapper .nav,\n.pagination span,\n.cheatsheet h2,\n.section a.section-head,\n.octotree_view_header,\n.list-heading,\n.dashboard-tabs li a,\na.function-button,\n.add-pill-form,\n.gist .gist-file .gist-meta,\n.octotree_toggle,\nul.comparison-list > li.title,\nbutton.button,\na.button,\nspan.button,\nbutton.minibutton,\na.minibutton,\nspan.minibutton,\n.clone-url-button > .clone-url-link {\n background: var(--bg2) !important;\n border-color: var(--bg2) !important;\n}\n.btn:hover,\n.btn:active,\n.btn.zeroclipboard-is-hover,\n.btn.zeroclipboard-is-active,\n.minibutton:hover,\n.minibutton:active,\n.minibutton.zeroclipboard-is-hover,\n.minibutton.zeroclipboard-is-active.kbd,\n.signup-button:hover,\na.signin:hover,\n.hero .textographic,\n.hero .screenographic,\n.pagination span.current,\n.box-action:active,\n.btn:active,\n.btn.selected,\n.btn.selected:hover,\n.btn.zeroclipboard-is-active,\n.minibutton:active,\n.minibutton.selected,\n.minibutton.selected:hover,\n.minibutton.zeroclipboard-is-active,\n.octotree_toggle:hover,\nbutton.button:hover,\na.button:hover,\nspan.button:hover,\nbutton.minibutton:hover,\na.minibutton:hover,\nspan.minibutton:hover,\n.clone-url-button.selected > .clone-url-link,\n.clone-url-button.selected > .clone-url-link:hover,\nul#bootcamp li a:hover h4 {\n background: var(--bg5) !important;\n border-color: var(--bg5) !important;\n}\n.commitinfo,\n.gc .diff-line-code,\n.gc .diff-line-num,\n.gc .diff-line-pre,\n.featured-commit-activity-graph,\n.featured-repo-logo,\n.outline-box,\n.gobutton > .sha .octicon,\n.markdown-body .csv-data .blob-num,\n#feedBody,\n.search-result-header,\n.accessibility-aid:focus,\n.file-data,\n.signup-plans th,\n.signup-plans td,\n.signup-plans-orgs th,\n.signup-plans-orgs td,\n.commits td,\n.featured-callout,\n.sidebar-module ul ul li,\n.native-download,\n.setup-info-module,\ndiv#common-issues ul,\n#gist-form .name,\n.subnav-item,\n.render-notice,\n.label-edit.edit-color-label-form .color-editor .color-editor-input,\n.date_selector td,\n.new-label,\n.range-editor .range,\n.range-editor .flag,\n.octotree_sidebar,\n.auth-form-body,\ndiv.border-wrap,\n.profile-header,\n.highlight .gc,\n.uploaded-files.is-populated,\n.range-editor,\n#gollum-editor-help-parent li a.selected,\n#gollum-editor-help-list li a.selected,\n#gollum-editor-help-parent li a:hover,\n#gollum-editor-help-list li a:hover,\n.github-access-banner,\n.protip-callout,\nul.comparison-list,\n.wiki-custom-sidebar,\n.invitation-container,\n.orgs-help-shelf,\n.orgs-help-item-octicon,\ntextarea,\n.thread-subscription-status,\n.branch-action-body .merge-branch-form,\n.pull-info,\n.branch-link,\n.discussion-item-merged.open .discussion-item-details,\n.word-upload-callout,\n.commit-tease-contributors,\n.session-authentication .create-account-callout,\n.intgrs-lstng-item,\n.intgr-install-callout,\n.is-failed .repo-file-upload-errors,\n.is-bad-file .repo-file-upload-errors,\n.is-too-big .repo-file-upload-errors,\n.is-too-many .repo-file-upload-errors,moz-extension://7d69bfd2-7bdf-41a4-8b4c-d5d025044fe0/edit.html?id=26#\n.is-empty .repo-file-upload-errors,\n.site-header,\n.site-subheader,\n.pricing-card,\n.explore-signup-entice,\n.price-box,\n.cvv-hint-tooltip,\n.plan-choice,\n.date-selector td,\n.user-profile-sticky-bar:after,\n.review-thread,\n.card,\n.tutorial,\n.overview .card > div[style*='background'],\n.Box-footer,\n.ScreenshotCarousel,\n.card-filter-autocomplete-dropdown .autocomplete-keyword-only,\n.inbox-zero,\n.tag-input .suggester,\n.review-comment:target .timeline-comment-label,\n.review-comment:target button.reaction-summary-item {\n background: var(--bg1) !important;\n border-color: var(--bg1) !important;\n}\n.pagehead ul.actions a.feed,\n.explore h2 .feed,\n#code_search_instructions h2,\ntd.inst,\n.metabox-loader,\n.pull-flag,\n.browser-content,\n.filterbar ul.filters li,\n.pagehead ul.tabs li.contextswitch,\n#wiki-header > div,\n.pagehead ul.tabs li.contextswitch:hover,\n.bigbutton a,\n#new_message,\n#issues_next ul.sorts li,\nul.sorts li.asc,\nul.sorts li.desc,\n.listings-layout .columns.main .content,\n.fieldswrap,\n.filterbar li.selected,\n#issues_next ul.filters li,\ntable.instruction tr:nth-child(2n),\n.email-hidden-toggle a,\n#commit-activity-master-head,\n.action-indicator,\n.pull-head .diffstat,\nul.suggestions,\n.discusion-topic-infobar,\n.commits-listing:before,\n.discussion-item-icon,\n.jstree-wholerow-hovered,\n.bubble-contents,\n.ellipsis-button,\n.filter-list li span.bar,\n.selectable_day.today,\n.billing-plans .current,\n.commits-listing:before,\n.billing-section .usage-bar,\n.issue-list em,\n.file-info-divider,\n.pagehead ul.tabs li a:hover,\n.repos .bottom-bar,\n#languages .popular,\n.tip-box h4,\ntable.upgrades td,\n.commit-preview .message,\n.commit-preview p.error,\n.pagehead ul.tabs li.contextswitch,\n#browser tr th,\n.status-box h4,\n.line_numbers,\n#files span.icon,\n#issues_list .actions,\n#repos .public,\n.inset-callout,\n#repo-message,\n.repo-private-label,\n.label-admin,\na.team-member-ellipsis,\n.code-list em,\n.user-list em,\n.credit-card.normal .signature,\n.credit-card.amex .gladiator,\n.subnav-item:hover,\n.subnav-item:focus,\n.wiki-list em,\n.progress-bar:not(.anim-grow-x),\n.header-search-scope:hover,\n.CommunityTemplate-highlight--focus,\n.related-issue-item.navigation-focus,\n.commit-sha {\n background: var(--bg5) !important;\n}\n.template-previews .discussion-sidebar-heading,\nbody,\n.Box-row-link,\n.btn,\n.social-count,\n.form-control,\n.form-select,\np.explain strong,\n.menu-item.selected,\n.menu-item .octicon,\n.tabnav-tab.selected,\n.tabnav-tab:focus,\n.tabnav-tab:hover,\n.UnderlineNav-item:focus,\n.UnderlineNav-item:hover,\n.UnderlineNav-item.selected,\n.text-gray-dark,\n.link-gray-dark,\n.text-emphasized,\n.Counter--gray-light,\n.markdown-body span.frame span span,\n.table-list-header-toggle .btn-link:hover,\n.table-list-header-toggle .btn-link.selected,\n.table-list-header-toggle .btn-link.selected:hover,\n.table-list-header-toggle .select-menu-button.selected,\n.table-list-header-toggle .select-menu-button.selected:hover,\n.table-list-header-toggle .select-menu-button:hover,\n.breadcrumb strong.final-path,\n.commit-author-section,\n.commits-list-item .commit-title,\n.signed-commit-signer-name .signer,\n.toc-select .select-menu-item-heading,\n.toc-select .select-menu-item-text,\n.blob-code-inner,\n.blob-code-addition .x,\n.blob-code-deletion .x,\n.tabnav-pr .tabnav-tab.selected,\n.discussion-item-entity,\n.discussion-item-ref-title .title-link,\n.pull-request-integrations-title,\n.discussion-item .renamed-is,\n.discussion-item .renamed-was,\n.dropdown-item,\n.keyboard-mappings th,\n.list-group-item-link,\n.team-mention,\n.user-mention,\n.pagehead-actions > li,\n.pagehead-tabs-item:hover,\n.pagehead-tabs-item.selected,\n.reponav-item:focus,\n.reponav-item:hover,\n.reponav-item.selected,\n.steps li.current,\n.prose-diff.collapsed .rich-diff-level-zero.expandable:hover .octicon,\n.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child:hover:before,\n.radio-label,\n.select-menu-divider,\n.select-menu-header .select-menu-title,\n.select-menu-tabs .select-menu-tab-nav:hover,\n.select-menu-tabs a:hover,\n.select-menu-tabs .select-menu-tab-nav.selected,\n.select-menu-tabs .select-menu-tab-nav[aria-selected='true'],\n.select-menu-tabs a.selected,\n.select-menu-tabs a[aria-selected='true'],\n.select-menu-blankslate h3,\n.select-menu-item.selected,\ndetails-menu .select-menu-item[aria-checked='true'],\ndetails-menu .select-menu-item[aria-selected='true'],\n.select-menu-item.selected > .octicon,\ndetails-menu .select-menu-item[aria-checked='true'] > .octicon,\ndetails-menu .select-menu-item[aria-selected='true'] > .octicon,\n.select-menu-item-parent.navigation-focus,\n.select-menu-item-parent.navigation-focus.selected,\n.select-menu-item-parent[aria-selected='true'],\n.select-menu-item-parent[aria-selected='true'].selected,\n.select-menu-item-parent.navigation-focus .octicon-check,\n.select-menu-item-parent.navigation-focus.selected .octicon-check,\n.select-menu-item-parent[aria-selected='true'] .octicon-check,\n.select-menu-item-parent[aria-selected='true'].selected .octicon-check,\n.selected .checks-index-label,\n.code-list em,\n.search-autocomplete-dropdown .autocomplete-text,\n.CommunityTemplate-highlight,\n.dashboard-notice h2,\n.exploregrid-item-title,\n.getting-started .link-text,\n.jump-to-field-active,\n.page-responsive .HeaderMenu-link:hover,\n.page-responsive .HeaderMenu-details[open] .HeaderMenu-link,\n.header-nav-current-user .user-profile-link,\n.select-menu-item.navigation-focus > .octicon.label-options-icon,\n.select-menu-item[aria-selected='true'] > .octicon.label-options-icon,\n.repository-lang-stats ol.repository-lang-stats-numbers li .lang,\n.marketplace-plan-emphasis,\n.merge-branch-heading,\n.oauth-org-access-details .oauth-org-item.on strong,\n.oauth-application-whitelist .request-info strong,\n.oauth-application-info .application-title,\n.developer-app-item .developer-app-name,\n.org-insights-cards [role='tab'][aria-selected='true'],\n.manage-repo-access-not-active,\n.manage-memberships-tabs-item.selected,\n.pinned-repo-checkbox:checked + .pinned-repo-name,\n.access-token .token-description,\n.token-scope,\n.shelf-dismiss .close-button:hover,\n.team-listing .is-open .expand-nested-team,\n.user-status-emoji-tab[role='tab'][aria-selected='true'],\n.subheader-nav .nav-item.selected,\n.illflow-item.selected .illflow-item-heading,\n.MarketingBody-lead > p:first-child,\n.site-header-nav .dropdown-menu a.active,\n.flash {\n color: rgba(255, 255, 255, 0.7) !important;\n}\n.text-alpha,\n.text-beta,\n.text-delta,\n.text-gamma,\nh1,\nh2,\nh3,\nh4,\nh5,\n.link-muted:hover,\n.text-black,\n.menu-item.selected,\n.header-enterprise-version {\n color: rgba(255, 255, 255, 0.65) !important;\n}\n.subnav-bordered,\n.markdown-body h1,\n.markdown-body h2,\n.boxed-group-table th,\n.boxed-group-table td,\n.capped-card > p,\n.capped-card h3,\n.select-menu-item,\ntable.files tr.up-tree,\ntable.capped-list td,\n.pricing-table td {\n border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;\n}\n.list-browser-item.navigation-focus,\n.headlines li:hover,\n.js-details-container.navigation-focus,\n.js-details-container.navigation-focus:nth-child(2n),\n.team-grid .team-members,\n.tree-browser tr.navigation-focus td,\n.issues-listing .table-list-issues .selectable:hover,\n.issues-listing .table-list-issues .navigation-focus,\n.setup-plans tr.selected,\n.notifications .navigation-focus,\n.sidebar-module ul ul li a:hover,\n.typeahead-result,\n.no-results,\n.link-overlay .link,\n#gollum-editor-help-list,\n.owner-select-target,\n.divider .blob-code div.highlight,\n.oauth-org-access-details .boxed-group-list > li.on:hover,\npre div:hover,\n.summary-stats li a:hover,\n.pinned-repos-selection-list-item.selected,\n.Box-body-row--highlight.navigation-focus,\n.Box-body-row--highlight:hover,\n.js-current .standalone a,\n.menu-item:hover,\n.Box-row--focus-gray.navigation-focus,\n.team-listing .is-open.root-team,\n.Box-row--hover-gray:hover,\n.Box-row--hover-blue:hover,\ntable.files tr[aria-selected='true'] td,\n.label-select-menu .select-menu-item[aria-selected='true'],\n.label-select-menu .select-menu-item.navigation-focus,\n.user-profile-nav {\n background: var(--bg4) !important;\n}\n.ellipsis-expander,\n.hidden-text-expander a,\n.subnav-search-context .btn,\n.markdown-body kbd,\n.email-format .email-hidden-toggle a,\n.commit .commit-title,\n.commit .commit-title a,\n.commit-tease-sha,\n.timeline-commits .author,\n.timeline-commits .commit-message > code a,\n.full-commit .branches-list li,\n.full-commit .sha-block > .sha,\n.full-commit .sha-block > a,\n.branches-tag-list li:first-child,\n.keyboard-mappings,\nkbd,\n.pagehead-tabs-item .Counter,\n.reponav-item .Counter,\n.protip-callout,\n.render-notice,\n.select-menu-header .close-button:hover,\n.select-menu-header .octicon:hover,\n.select-menu-action,\n.page-responsive .HeaderMenu-link,\ntable.capped-list .octicon,\n.illflow-item .illflow-item-heading,\n.action-card-syntax,\n.markdown-format kbd,\n.repohead h1.private .octicon {\n color: rgba(255, 255, 255, 0.6) !important;\n}\nul.sidetabs li a:hover,\n.editbox h1,\n#issues .labels .admin,\n#issues .display .sortbar,\n#facebox .close,\n#issues_search .wrapper,\n.ranked-repositories .meta a,\n.actor,\nul.nav.logged_out,\n.tip-box a.next,\n#inbox .list .unread,\n.main .filterbar,\n.browser-content .footerbar,\nul.smalltabs,\n.snippet,\n.supportstaffer,\n.discussion-form,\n.chooser-box,\n.chooser-box h3,\n#forkqueue .instructions,\n.selector-item.clear:hover,\n#contributors-master svg,\n.inset-callout h2,\n.documentation ul.nav,\n.date_selector td.selected,\n#contributors-master,\n.context-title,\n.list-module h2,\n.bootcamp-help h1,\ntable.files tr.up-tree a:hover,\n.ellipsis-button:hover,\n.codesearch-results .repo-list-name em,\n.codesearch-results .repo-list-description em,\n.blog-search-results em,\n.codesearch-cols em,\nul.bignav li a:hover,\nul.smallnav li a:hover,\n.comments-wrapper,\n.rackspace,\n.subnav-bar > ul > li > ul > li > a:hover,\n.issue.active,\n.orgs-nav .count,\n.filter-item:not(.selected):hover,\n.task-progress .progress-bar .progress,\n.oauth-connection-illustration .oauth-image,\n.manage-repo-access-wrapper:before,\n.counter,\n.Counter,\n.block-diff-neutral {\n background: var(--bg6) !important;\n}\n.vcard-detail .octicon,\n.member-badge .octicon,\n.command-bar .octicon-question:before,\n.news .alert .time,\nul.color-label-list .color-label.zeroed,\nul.color-label-list .color-label.zeroed .count,\n.gh-header-title .issue-number,\na.leaderboard-list-rank,\n.bootcamp ul li a,\n.ssh-key-fingerprint,\n.tag-references > li a,\n.release .release-authorship,\n.branches .branch-summary,\n.branches .no-results-message,\nheader ul.links > li a,\n.team-info-card .stats-group .stat,\n.team-info-card .stats-group .stat.no-link:hover,\n.discussion-sidebar-item,\n.issues-listing .table-list-issues .issue-meta,\n.task-progress,\n.table-list-milestones .stat-label,\n.table-list,\n#blog-home,\n.blog-post-meta,\n.blog-post-meta a,\n.blog-post-meta .octicon,\n.diff-line-num,\n.file-data .line-numbers span,\n.discussion-item .timestamp,\n.branch-status .divider,\n.news .alert .octicon,\n.news .alert .mega-octicon,\n.blankslate > .mega-octicon,\n.repo-list-meta,\na.discussion-item-help,\n.page-new-repo .license-info,\n.notification-actions .btn-link,\n.commit-info .commit-meta,\n.notifications .read .type-icon,\n.notification-actions .age,\n.list-item .byline,\n.issue-list-meta,\n.blob-num-expandable .diff-expander,\n.file-type-icon,\n.uploaded-files .remove,\n.releases-tag-list td.date a,\n.collaborators .collab-remove .remove-link,\n.octofication .notice-dismiss,\nul.comparison-list > li .octicon,\ndiv.content-header h6,\n.fullscreen-overlay textarea,\n.blob-num.non-expandable:hover,\n.breadcrumb,\n.application-authorizations .oauth-app-list-meta,\n.application-authorizations .oauth-app-owner,\n.boxed-group-inner .help,\n.thread-subscription-status .reason,\n.toc-diff-stats .octicon,\n.blob-num,\n.recent-gists .description .blank,\n.recent-gists .metadata,\n.member-meta .access-link,\n.gist-quicksearch-no-results,\n#user-content-toc ul ul li:before,\n.btn-octicon,\nbutton.btn-octicon,\n.user-list li em,\n.reponav-item .octicon,\n.pagehead-tabs-item .octicon,\n.table-list-header-toggle .btn-link,\n#graph_data h2,\n#message-list .message .time,\n.tabnav .tabnav-extras,\n.discussion-item-integrations-callout .pull-request-integrations-dismiss,\n.oauth-application-info .meta-link,\n.oauth-application-info .app-info,\n.repo-file-upload-file-wrap .remove-file,\n.gcr-ext-editor-close svg,\n.commit-id,\n.orghead .edit-org,\n.signed-commit-badge,\n.manage-member-meta-item .btn-link,\n.note,\n.topic-tag-action .add-topic-button,\n.topic-tag-action .remove-topic-button,\n.text-gray-light,\n.js-notice .octicon-x,\na.footer-octicon:hover,\n.table-of-contents .toc-diff-stats .octicon {\n color: rgba(255, 255, 255, 0.3) !important;\n}\n.btn:disabled,\n.btn:disabled:hover,\n.btn.disabled,\n.btn.disabled:hover,\nbutton.button:disabled,\nbutton.button:disabled:hover,\nbutton.button.disabled,\nbutton.button.disabled:hover,\nbutton.minibutton:disabled,\nbutton.minibutton:disabled:hover,\nbutton.minibutton.disabled,\nspan.minibutton.disabled,\na.minibutton.disabled,\nbutton.minibutton.disabled:hover,\na.minibutton:disabled:hover,\na.minibutton.disabled:hover,\nspan.minibutton:disabled:hover,\nspan.minibutton.disabled:hover,\n.search-result-group,\n.gist-quicksearch-result-group {\n background: var(--bg2) !important;\n border-color: var(--bg2) !important;\n color: rgba(255, 255, 255, 0.2) !important;\n}\n.avatar.avatar-more,\n.AvatarStack--right .avatar.avatar-more:after,\n.markdown-body .csv-data th,\n.capped-card-content,\n.new-discussion-timeline .previewable-comment-form .comment-form-head.tabnav,\n.select-menu-divider,\n.select-menu-header,\n.payment-history .failed,\n.payment-history .refunded,\n.search-autocomplete-dropdown .autocomplete-keyword-only,\n.tint-box,\n.MarketplaceEdit-body .menu-item:hover,\ntable.files tr.navigation-focus td,\ntable.files tr[aria-selected='true'] td,\n.team-member-ellipsis:hover,\ntable.capped-list th,\n.action-card:after,\n.action-card:before,\n.action-card-header:before,\n.gistsearch-aside .filter-list li span.bar,\n.gist-quicksearch-results .gist-quicksearch-result-header {\n background: var(--bg1) !important;\n}\n.sidebar-module,\n.form-control,\n.form-select,\n.octotree_github_sidebar input[type='text'],\n.octotree_github_sidebar textarea,\ndiv.search-form input,\n#search > input[name='q'] {\n background-color: var(--bg2) !important;\n border-color: var(--bg2) !important;\n}\n.octofication .message,\n.panel-nav:not(.disabled):active,\n.diagram-icon:not(.active),\n.btn.btn-outline:hover:not(.ajax-pagination-btn),\n.btn.btn-outline.zeroclipboard-is-hover,\n:checked + .radio-label,\n.gist-snippet .file-box:hover .file,\n.octofication .message,\n.reaction-sort-item.selected,\n.pull-request-link,\ndiv.project-card:focus,\n.timeline-progressive-disclosure-button:hover,\n.release-timeline-tags .expander-text:hover .expander-dots,\n.review-comment[aria-selected='true'],\n.timeline-comment[aria-selected='true'] .review-summary .comment-body {\n border-color: var(--selected) !important;\n}\n.repo-file-upload-progress,\n.project-updated-message,\n.delete-topic-button,\n.topic-tag-action .add-topic-button,\n.topic-tag-action .remove-topic-button,\n.commit-desc + .commit-branches,\n.full-commit .btn-outline {\n border-color: var(--btn3) !important;\n}\n.template-previews .discussion-sidebar-heading:hover,\n.zeroclipboard-link,\na:not(.IssueLabel),\n.Box-row.navigation-focus .Box-row--drag-button,\n.Box-row-link:hover,\n.btn-blue .Counter,\n.btn-outline,\n.btn-outline.selected .Counter,\n.btn-outline:active .Counter,\n.btn-outline:hover .Counter,\n[open] > .btn-outline .Counter,\n.social-count:hover,\n.btn-link,\n.drag-and-drop-error-info a,\na.tabnav-extra:hover,\n.pagination a,\n.pagination em,\n.pagination span,\n.text-blue,\n.link-gray:hover,\n.link-gray-dark:hover,\n.link-hover-blue:hover,\n.muted-link:hover,\na.branch-name,\n.ajax-pagination-form .ajax-pagination-btn,\n.btn-invisible,\n.btn-invisible.selected,\n.btn-invisible.zeroclipboard-is-active,\n.btn-invisible.zeroclipboard-is-hover,\n.btn-invisible:active,\n.btn-invisible:focus,\n.btn-invisible:hover,\n.btn-octicon:hover,\n.commit .commit-title .issue-link,\n.commit-link,\n.timeline-commits .commit-message > code a:hover,\n.commit-id:hover,\n.discussion-sidebar-toggle:hover,\n.milestone-name:hover,\n.sidebar-assignee .assignee:hover,\n.participation a:hover,\n.timeline-comment-action:focus,\n.timeline-comment-action:hover,\n.discussion-item-link:hover,\n.discussion-item-entity:hover,\n.discussion-item-ref-title .title-link:hover,\n.discussion-item-help:hover,\n.steps li.current .octicon,\n.prose-diff .show-rich-diff,\n.select-menu-action:hover,\n.select-menu-new-item-form .octicon,\n.marketing-hero-octicon .octicon,\n.intgrs-lstng-item-link:hover .intgrs-lstng-item-header,\n.intgr-admin-link:hover .octicon,\n.listgroup-item:hover .link-small,\n.rule-type-conditions,\n.code-list .blob-num a:hover,\n.coupon-icon,\n.dashboard-notice .octicon-organization,\n.dashboards-overview-cards .summary-stats .metric-1,\n.repo-snipit:hover .repo-snipit-description,\n.repo-snipit:hover .repo-snipit-name,\n.exploregrid-item:hover .exploregrid-item-title,\n.getting-started .link-text strong,\n.scoped-search .form-control.focus .header-search-scope,\n.issues-reset-query:hover,\n.milestone-title-link a:hover,\n.milestone-description .expand-more,\na.task-progress:hover,\n.page-new-repo .license-info,\n.notifications .notifications-more > a,\n.notifications-sso-prompt em,\n.notification-actions .btn-link:hover,\n.oauth-application-whitelist .edit-link:hover,\n.developer-app-item .developer-app-name:hover,\n.org-insights-card-legend .metric-0,\n.orghead .edit-org:hover,\n.export-actions a:hover,\n.member-row a:hover,\n.invite-team-member-list .team-link,\n.stats-group-stat:hover,\n.stats-group-stat:hover .stat-number,\n.ldap-memberships-list .edit,\n.project-comment-body-hover .octicon-pencil:hover,\n.project-comment-title-hover .octicon-pencil:hover,\n.profile-rollup-toggle:hover,\n.pr-toolbar .subset-files-tab,\n.numbers-summary a:hover,\ntable.files td.message a:hover,\n.session-details:hover .octicon,\n.setup-header .lead a:hover,\n.shelf-dismiss:hover,\n.orgs-help-item-octicon .octicon,\n.orgs-help-dismiss:hover,\n.team-member-ellipsis:hover,\n.team-listing .team-name,\n.team-listing .team-show-more,\n.team-listing .expand-nested-team:hover,\n.tree-browser tr.navigation-focus td .octicon-chevron-right,\n.tree-browser tr[aria-selected='true'] td .octicon-chevron-right,\n.tree-browser-result mark,\n.toolbar-commenting .dropdown-item:hover,\n.toolbar-commenting .dropdown-item:focus,\n.toolbar-item .menu-target:hover,\n.toolbar-item:hover,\n.toolbar-item .menu-target:focus,\n.toolbar-item:focus,\n.link-mktg:hover,\n.btn-outline-mktg:hover,\n.illflow-blue .illflow-item .illflow-item-heading,\n.MarketingBody-lead a:hover {\n color: var(--selected) !important;\n}\n.HeaderNavlink:hover,\n.HeaderNavlink:focus,\ntable.files .octicon-file-directory,\ntable.files .octicon-file-symlink-directory,\ntable.files .octicon-file-submodule,\n.header-logo-invertocat:hover,\n.notification-indicator:hover,\n.btn.btn-outline,\n.full-commit .btn-outline:not(:disabled):hover,\n.markdown-body a strong,\n.markdown-format a strong,\n.notifications.list-group a:hover,\n.octotree_sidebar .octotree_bottom a:hover i:before {\n color: var(--selected) !important;\n}\n#com #header .top-nav .dropdown-button:hover .dropdown-caret,\n.header-nav-link:hover .dropdown-caret,\n.header-nav-link:focus .dropdown-caret,\n.header-navlink:hover .dropdown-caret,\n.header-navlink:focus .dropdown-caret,\n.HeaderNavlink:hover .dropdown-caret,\n.HeaderNavlink:focus .dropdown-caret {\n border-top-color: var(--selected) !important;\n}\n.btn-primary:not(.compare-button):not(.btn-outline):not([disabled]):not(.disabled),\n.button.primary,\n.btn-theme-green,\n.btn-primary-mktg {\n background: var(--btn) !important;\n border-color: var(--btn) !important;\n}\n.btn-primary:not(:disabled):not(.disabled):not(.compare-button):not(.btn-outline):hover,\n.button.primary:not(:disabled):hover,\n.btn-theme-green:hover,\n.btn-primary-mktg:hover {\n background: var(--btn) !important;\n border-color: #7686C3 !important;\n}\nimage-crop .handle:before,\n.pagination a,\n.pagination em,\n.pagination span,\n.AvatarStack-body,\n.blankslate code,\n.markdown-body .csv-data .blob-num,\n.ajax-pagination-form .ajax-pagination-btn,\n.autocomplete-results,\n.suggester,\n.boxed-group-inner,\n.commit-group-title .octicon-git-commit,\n.full-commit .commit-meta,\n.conversation-list-heading .inner,\n.details-overlay[open] > .dropdown-item:hover,\n.discussion-timeline.team-discussion-timeline .blankslate,\nul.comparison-list,\n.tint-box.transparent,\n.dashboard-notice .coupon,\n.getting-started .list-group-item,\n.topic-tag-outline,\n.MarketplaceEdit-body .menu-item.selected,\n.oauth-org-access-details .oauth-org-item.on,\n.oauth-org-access-details .oauth-org-item.revoked,\n.manage-repo-access-icon,\ntable.files,\n.qr-code-table .white,\n.action-card:after,\n.action-card-controls:before,\n.actions-bg-mask,\n.TenYearNav-year.selected .TenYearNav-digits,\n.TenYearNav-year:hover .TenYearNav-digits,\n.gist-snippet-meta .gist-count-links > li > a:hover,\n.gist-quicksearch-results,\ndiv#common-issues ul,\n.markdown-format img,\n.dropdown-menu,\n.btn-primary .counter,\n.bg-white,\n.card,\n.pagination > span,\n.rgh-reactions-near-limit,\n.select-menu-item {\n background: var(--bg2) !important;\n}\n.timeline-comment.current-user,\n.github-jobs-promotion p,\n.octotip,\n.markdown-format .alert:not(.warning),\n.full-commit.commit,\n.bootcamp .bootcamp-body,\n.bootcamp h1,\n.owners-notice,\n.new-user-avatar-cta,\n.full-commit .browse-button,\n.commit-ref,\n.branch-name,\n.timeline-comment.current-user .timeline-comment-header .timeline-comment-label,\n.file-history-tease,\n.flash,\n.flash-global,\n.feature-banner,\n.recently-touched-branches,\n.timeline-progressive-disclosure-items button,\n.pr-toolbar .subset-files-tab,\narticle.full .alert,\n.btn.btn-blue,\n.topic-tag,\n.RecentBranches,\n.js-tag-input-tag,\nul.search-results li .label,\n.topic-tag-action,\n.alert {\n border: 1px solid var(--btn2) !important;\n}\n.timeline-comment.current-user .timeline-comment-header,\n.blob-history,\n.recently-touched-branches li {\n border-bottom-color: var(--btn2) !important;\n}\n.timeline-comment.current-user .timeline-comment-header,\n.github-jobs-promotion p,\n.octotip,\n.markdown-format .alert:not(.warning),\n.full-commit.commit,\n.flash,\n.bootcamp h1,\n.bootcamp-body,\n.owners-notice,\n.full-commit .browse-button,\n.blob-history,\n.branch-name,\n.new-user-avatar-cta,\n.jstree-wholerow-clicked,\n.commit-ref,\n.api .alert,\n.file-history-tease,\n.flash,\n.flash-global,\n.feature-banner,\n.recently-touched-branches,\n.pr-toolbar .subset-files-tab,\narticle.full .alert,\n.btn.btn-blue,\n.hook-delivery-guid,\n.topic-tag,\n.topic-tag-action,\n.delete-topic-button,\n.topic-tag-action .add-topic-button,\n.topic-tag-action .remove-topic-button,\n.RecentBranches,\n.signup-prompt-bg,\nul.search-results li .label,\ndiv[style*='background-color: #044d6e'],\n.alert,\n.btn-mktg {\n background: var(--btn4) !important;\n}\n.timeline-comment.current-user:before {\n border-right-color: var(--btn2) !important;\n}\n.diff-table tr:hover > pre,\n.highlight:not(.lines) tr:not(.inline-comments):hover td.selected-line.blob-code:not(.line-age),\n.highlight:not(.lines) tr:not(.inline-comments):hover td.blob-code,\n.blob-code-hunk,\n.blob-code-expandable {\n background: var(--bg2) !important;\n}\n.pagination a:focus,\n.pagination a:hover,\n.pagination em:focus,\n.pagination em:hover,\n.pagination span:focus,\n.pagination span:hover,\n.select-menu-item + .semantic-toc-file:after,\n.semantic-toc-symbol:not(.last-visible):after,\n.tabnav-pr,\n.tabnav-pr .tabnav-tab.selected,\n.plans-card-btn {\n border-color: transparent !important;\n}\n::-webkit-scrollbar-track,\n::-webkit-scrollbar-corner {\n background: var(--bg3) !important;\n}\n::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.1) !important;\n}\npath.js-diff-placeholder {\n fill: var(--bg5) !important;\n}\n.repohead.experiment-repo-nav,\n.discussion-timeline-actions,\n.gh-header {\n background-color: var(--bg3);\n}\n.timeline-comment-wrapper {\n border-bottom: 2px solid var(--bg5);\n border-top: 2px solid var(--bg5);\n}\n.discussion-timeline-actions {\n border-top: 2px solid var(--bg5);\n}\n.discussion-item-icon {\n border: 2px solid var(--bg5);\n}\n.discussion-timeline:before,\n.profile-timeline.discussion-timeline:before,\n.profile-timeline.discussion-timeline .profile-timeline-month-heading:after {\n background-color: var(--bg5);\n}\n.thread-subscription-status {\n background-color: var(--bg3) !important;\n}\n.Counter {\n color: rgba(255, 255, 255, 0.75);\n}\n.UnderlineNav-item.selected,\n.UnderlineNav-item:focus,\n.UnderlineNav-item:hover {\n border-bottom-color: var(--selected);\n}\n.profile-timeline-year-list {\n background: var(--bg3) !important;\n}\n.contribution-activity .filter-item.selected {\n color: rgba(0, 0, 0, 0.7) !important;\n}\n.markdown-body img {\n background-color: transparent;\n}\n.ellipsis-expander,\n.hidden-text-expander a {\n background: rgba(0, 0, 0, 0.2);\n}\n\n/* CODE */\n.pl-s .pl-s1,\n.pl-smi {\n color: #b2ccd6;\n}\n.pl-e,\n.pl-en {\n color: #50fa7b;\n}\n.pl-c1,\n.pl-s .pl-v {\n color: #ffb86c;\n}\n.pl-pds,\n.pl-s,\n.pl-s .pl-pse .pl-s1,\n.pl-sr,\n.pl-sr .pl-cce,\n.pl-sr .pl-sra,\n.pl-sr .pl-sre {\n color: #f1fa8c;\n}\n.pl-ent {\n color: #8be9fd;\n}\n.pl-mi1 {\n color: #8be9fd;\n background-color: var(--bg4);\n}\n.pl-k {\n color: #ff79c6;\n}\n.pl-smw,\n.pl-v {\n color: #bd93f9;\n}\n.pl-c {\n color: #6272a4;\n}\n.blob-code-inner.highlighted {\n background-color: var(--btn);\n}\n.blob-code-deletion {\n background-color: hsla(353, 25%, 30%, 1);\n}\n.blob-num-deletion {\n background-color: hsla(353, 25%, 25%, 1);\n border-color: hsla(353, 25%, 20%, 1);\n}\n.blob-code-addition {\n background-color: hsla(137, 25%, 30%, 1);\n}\n.blob-num-addition {\n background-color: hsla(137, 25%, 25%, 1);\n border-color: hsla(137, 25%, 20%, 1);\n}\n.blob-code-addition .x {\n background-color: hsla(135, 73%, 30%, 1);\n}\n.blob-code-deletion .x {\n background-color: hsla(353, 73%, 30%, 1);\n}\n.timeline-comment {\n color: inherit;\n}\n/* comments */\n.comment-body,\n.js-comment-body {\n color: #f8f8f2 !important;\n}\n/* timeline background lines, badges, etc */\n.TimelineItem-break {\n background-color: var(--bg3) !important;\n border-top: 4px solid var(--bg5) !important;\n}\n.TimelineItem:before {\n background-color: var(--bg5) !important;\n}\n.TimelineItem-badge {\n border: 2px solid var(--bg5) !important;\n}\n/* tabs on the comment box and such, Write, Preview, etc */\n.tabnav-tab.selected,\n.tabnav-tab[aria-selected='true'] {\n background-color: var(--bg5) !important;\n border-color: var(--bg4) !important;\n}\n/* badges, like bug, feature, etc, */\n.protip code {\n background-color: var(--bg5) !important;\n padding: 3px;\n}\n.menu-item.selected {\n background-color: var(--bg4);\n}\n.menu .menu-item:hover {\n background-color: var(--bg5) !important;\n}\n.timeline-comment--caret:after,\n.timeline-comment--caret:before {\n border-right-color: var(--bg1);\n}\n.Popover-message:after {\n border-bottom-color: var(--bg1);\n}\n.Popover-message--bottom-left:after,\n.Popover-message--bottom-right:after,\n.Popover-message--bottom:after {\n border-top-color: var(--bg1);\n}\n.Popover-message--right-bottom:after,\n.Popover-message--right-top:after,\n.Popover-message--right:after {\n border-left-color: var(--bg1);\n}\n.select-menu-tabs .select-menu-tab-nav.selected,\n.select-menu-tabs .select-menu-tab-nav[aria-selected='true'],\n.select-menu-tabs a.selected,\n.select-menu-tabs a[aria-selected='true'] {\n color: #24292e;\n background-color: var(--btn);\n border-color: var(--btn);\n}\n.TimelineItem-badge {\n background-color: var(--bg5);\n}\n.TimelineItem-badge .octicon {\n fill: hsla(0, 0%, 100%, 0.5);\n}\n.TimelineItem-body {\n color: hsla(0, 0%, 100%, 0.33);\n}\n.commit-ref,\n.branch-name {\n color: hsla(0, 0%, 100%, 0.4);\n}\n.diffbar,\n.pr-toolbar {\n background-color: var(--bg3);\n}\n.orghead {\n background-color: var(--bg1);\n}\n\n.comment-body a {\n color: var(--accents) !important;\n}\n", - "domains": [ - "github.com" - ] - } - ], - "name": "Dracula GitHub", - "originalDigest": "f68b01ff04b2cc0ddb61d0b91dfd2f3b87b1af73", - "id": 26, - "updateDate": 1581223257532 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/176998.json", - "md5Url": "https://update.userstyles.org/176998.md5", - "url": "http://userstyles.org/styles/176998", - "originalMd5": "1175f7014bcea33009b6ff8ed2603887", - "installDate": 1581128402636, - "sections": [ - { - "urls": [], - "urlPrefixes": [], - "domains": [ - "stackoverflow.com", - "superuser.com", - "serverfault.com", - "askubuntu.com", - "stackexchange.com" - ], - "regexps": [], - "code": "/* Conwy - Stack Exchange\r\n Version: 1.0.0\r\n Author: lineav\r\n Licence: https://creativecommons.org/licenses/by-sa/4.0/\r\n*/\r\n\r\n/* Invert the whole website */\r\nhtml {\r\n filter: invert(0.80) hue-rotate(180deg) contrast(1.2)!important;\r\n background: #ffffff !important;\r\n}\r\n\r\nimg {\r\n filter: invert(1) hue-rotate(180deg) brightness(1.1) contrast(1.05)!important;\r\n}\r\n\r\n/* invert logo */\r\nimg.h-auto.wmx100 {\r\n filter: invert(0)!important;\r\n}\r\n\r\n/* make scrollbars dark */\r\n::-webkit-scrollbar {\r\n background: #2f2f2f;\r\n width: 0.8em;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n background-color: #555555;\r\n outline: 1px solid #111111;\r\n}" - } - ], - "name": "Conwy - Stack Exchange", - "originalDigest": "055ce9ac0041cad64b4c5245fb4bb1083a231dc2", - "id": 29 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/174814.json", - "md5Url": "https://update.userstyles.org/174814.md5", - "url": "http://userstyles.org/styles/174814", - "originalMd5": "fcfb3986795d61f47eb67338edb01330", - "installDate": 1581129281945, - "sections": [ - { - "code": "html, body {\n\tbackground-color: #282a36;\n\tcolor: #f3f3f3;\n}\n\n.style-name-link {\n color: #f3f3f3;\n}\n\n#header {\n\tborder-color: transparent;\n\tbox-shadow: 0 0 16px -3px #191A21;\n}\n\n#options input[type=\"number\"] {\n\tborder-width: 1px;\t\n}\n\ninput[type=\"number\"],\nselect,\ninput[type=\"checkbox\"],\nbutton,\ninput:not([type]) {\n\tbackground-color: #282a36;\n\tborder-color: #191A21 !important;\n\tcolor: #6272a4;\n\tbackground: none;\n\tborder-radius: .2rem;\n\ttransition: .12s all;\n}\n\ninput[type=\"number\"]:hover,\nselect:hover,\ninput[type=\"checkbox\"]:hover,\nbutton:not([disabled]):hover,\ninput:not([type]):hover {\n\tborder-color: #6272a4 !important;\n\tbackground-color: #282a36 !important;\n\tcolor: #f3f3f3;\n\tcursor: pointer;\n}\n\ninput:not([type]):hover {\n\tcursor: auto !important;\n}\n\ninput[type=\"checkbox\"] {\t\n\tborder-color: #191A21 !important;\n}\n\nsvg.svg-icon.checked,\nsvg.svg-icon.select-arrow {\n\tfill: #6272a4;\n}\n\n#enabled-label:hover svg {\n\tfill: #f3f3f3 !important;\n}\n\n.cm-s-dracula .CodeMirror-activeline-background {\n\tbackground: #2d2e3b;\t\n}\n\n.resize-grip {\n\tborder-color: transparent;\n\tbox-shadow: 0 0 15px -.5px #191A21;\n\tborder-radius: 2rem !important;\n}\n\n.resize-grip::after {\n\tborder: none;\n}\n\n.CodeMirror-focused,\n.codeMirror>div>textarea {\n\toutline: none !important;\n}", - "regexps": [ - "moz-extension://.*" - ] - } - ], - "name": "dracula: stylus", - "originalDigest": "52c36bb7712fdb6f67195019664f060f4838a4f6", - "id": 30, - "updateDate": 1581130211735 - }, - { - "enabled": true, - "updateUrl": "https://userstyles.org/styles/chrome/170121.json", - "md5Url": "https://update.userstyles.org/170121.md5", - "url": "http://userstyles.org/styles/170121", - "originalMd5": "25c77995809000a269e5275133b6a485", - "installDate": 1581129599953, - "sections": [ - { - "code": "body, td, tr, input, textarea, select {\n font-family: 'open sans', 'source sans pro', 'helvetica neue', sans-serif;\n}\n\n.gt {\n font-size: 90%;\n line-height: 1.5em;\n font-weight: 400;\n color: #222;\n}\n\n.LW-avf {\n font-size: 0.95em;\n line-height: 1.45em;\n}\n\n/* //////// GLOBAL NON-COLOR ///////// */\n\n.Bu.y3, .aKB, .aKl {\n display: none;\n}\n\n.aAy {\n width: auto;\n}\n\n/* opacity icons */\n\n.gbqfi, .gb_X .gb_Nb .gb_Pb, .aQS, .n4 .G-asx, .aii, .gb_Pb, .T-I-auR.ayk-axZ-aup-I .ayk-axZ-aup-auo, .aqN, .aos, .gb_Qb {\n opacity: .7;\n background-color: transparent;\n}\n\n.gb_Rb {\n opacity: 0.7;\n}\n\n.l6 {\n padding-top: 0;\n}\n\n.J-KU-Jg-K9 .J-KU .aAy, .aRy, .aKj {\n height: 46px;\n}\n\nbody, td, tr, input, textarea, select {\n font-family: \"Helvetica Neue\", arial;\n}\n\n.aKj {\n padding-top: 4px;\n}\n\n/* search text*/\n\n.gbqfif, .gbqfq {\n height: auto;\n font-family: \"Helvetica Neue\", arial;\n margin: 0;\n}\n\n/* tab icons, something, labels */\n\n.aKp, .aRx, .as {\n display: none;\n}\n\n/* //////// BACKGROUND COLOR ///////// */\n\n.wl {\n background: #171A21;\n /* background: linear-gradient(45deg, #042029 0%,#073642 146%); */\n}\n\n/* //////// TRANSLUSCENT WHITE ///////// */\n\n.aOd, .aJ6 {\n color: rgba(255,255,255,.7);\n}\n\n.aAy.aAy.aIf-aLe.J-KU-Je.J-KU-JW .aKo {\n background-color: rgba(255,255,255,.7);\n}\n\n.J-KU-Jg-K9.aAA .aAy, .J-KU-Jg-K9.aAA .J-KU-KO.aAy, .aKj, .yO, .xY, .aKz, .gbqfqw, #gbqfb, .UI .TB {\n border: none;\n background: transparent;\n color: rgba(255,255,255,.7);\n box-shadow: none;\n}\n\n/* search bar */\n\n.gbqfqw {\n border-bottom: 1px dashed rgba(255,255,255,.3);\n /*\n border-bottom: 1px dashed rgba(0,0,0,.3);\n */\n}\n\n/* //////// TRANSLUSCENT BLACK ///////// */\n\n.NQ {\n background-color: rgba(0,0,0,.3);\n}\n\n\n/* //////// SEARCH TEXT COLOR ///////// */\n\n.gbqfif {\n color: #F573C7;\n}\n\n/* //////// UNREAD HIGHLIGHT LINE ///////// */\n\n.zE {\n background: #292936;\n}\n\n/* //////// EMAIL FROM ///////// */\n\n.xY, .e, .x2, .CL .CK {\n color: #8DBBE0;\n}\n\n/* //////// EMAIL TITLE ///////// */\n\n.y6 span {\n color: #7A8CBE;\n}\n\n/* //////// GRAY VARIANT 1 ///////// */\n\n.TO .n0, .akh, .mj, .l8, .l9, .ma, .B .Di .Dj, .l6, .z .Di .Dj, .Wz .Wy {\n color: #878C91;\n}\n\n/* buttons */\n\n.T-I-KE, .G-atb .T-I-ax7, .TD, .aOd {\n color: #878C91;\n background-color: rgba(0,0,0,.35);\n background-image: none;\n border: none;\n}\n\n/* //////// GRAY VARIANT 2 ///////// */\n\n.y6 .y2, .h0, .C .Di .Dj {\n color: #878C91;\n}\n\n/* //////// SIDEBAR MORE LINK ///////// */\n\n.n4 {\n color: #F573C7;\n}\n\n/* active menu item tick */\n\n.ain {\n border-color: #F573C7;\n}\n\n/* //////// HOUHIN ///////// */\n\n.bX a, .Cz.J-J5-Ji.e {\n color: #B587DE;\n}\n\n/* contact header */\n\n.bX {\n color: #B587DE;\n background-color: rgba(0,0,0,.35);\n}\n\n/* //////// SENCHA ///////// */\n\n.T-I-auR {\n background-image: none;\n border: none;\n background-color: #B587DE;\n color: rgba(255,255,255,.8);\n}\n\n/* Promotions line */\n\n.aJi-aLe .aDG, .aAy.J-KU-JW.aAy.aJi-aLe .aKo, .aAy.J-KU-KO.aAy.aJi-aLe .aKo {\n background-color: #B587DE;\n}\n\n/* //////// SHENG ///////// */\n\n/* flash alerts */\n\n.b8 .vh, .cc .vh, .vX .vh {\n background-color: #FFBA66;\n border: none;\n color: rgba(0,0,0,.85);\n}\n\n/* Updates Line */\n\n.aH2-aLe .aDG, .aAy.J-KU-JW.aAy.aH2-aLe .aKo, .aAy.J-KU-KO.aAy.aH2-aLe .aKo {\n background-color: #DEF085;\n}\n\n/* //////// GAIWAN ///////// */\n\n/* tooltips */\n\n.T-ays, .T-ays-atD, .T-ays-atC {\n background-color: #878C91;\n border: none;\n color: rgba(0,0,0,.85);\n}\n\n/* //////// KYUSU ///////// */\n\n.aIf-aLe .aDG, .aAy.J-KU-JW.aAy.aIf-aLe .aKo, .aAy.J-KU-KO.aAy.aIf-aLe .aKo {\n background-color: #FFBA66;\n}\n\n/* did you mean */\n\n.Wz, .ya {\n color: #FFBA66;\n background-color: rgba(0,0,0,.35);\n padding: 11px;\n}\n\n/* email line cursor */\n\n.PF.xY.PE {\n background: #FFBA66;\n}\n\n/* tab text */\n\n.aKz {\n color: #FFBA66;\n}", - "domains": [ - "mail.google.com" - ] - } - ], - "name": "dracula: gmail", - "originalDigest": "e3be0bd4ec5291d6ce6a194524e36ff2d77f3bac", - "id": 31, - "updateDate": 1581130222031 - } -] \ No newline at end of file diff --git a/modules/themes/alucard/config/inkscape/default-template.svg b/modules/themes/alucard/config/inkscape/default-template.svg deleted file mode 100644 index ff14f948..00000000 --- a/modules/themes/alucard/config/inkscape/default-template.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - Default template - 2020-08-05 - - diff --git a/modules/themes/alucard/config/polybar/config b/modules/themes/alucard/config/polybar/config deleted file mode 100644 index 6d89840e..00000000 --- a/modules/themes/alucard/config/polybar/config +++ /dev/null @@ -1,385 +0,0 @@ -[colors] -black = ${xrdb:color0} -bblack = ${xrdb:color8} -red = ${xrdb:color1} -bred = ${xrdb:color9} -green = ${xrdb:color2} -bgreen = ${xrdb:color10} -yellow = ${xrdb:color3} -byellow = ${xrdb:color11} -blue = ${xrdb:color4} -bblue = ${xrdb:color12} -magenta = ${xrdb:color5} -bmagenta = ${xrdb:color13} -cyan = ${xrdb:color6} -bcyan = ${xrdb:color14} -white = ${xrdb:color7} -bwhite = ${xrdb:color15} - -bg = ${xrdb:background} -fg = ${colors.magenta} -bg-alt = #1E2029 -fg-alt = #373844 -bg-dark = #181a23 - -alert = ${colors.yellow} -accent = #604c7e - - -[global/wm] -margin-top = 0 -margin-bottom = 34 - -[bar/main] -monitor = ${env:MONITOR} -monitor-strict = true -enable-ipc = true -wm-restack = bspwm -# REQUIRED to move the window with hideit.sh -override-redirect = true -fixed-center = true - -background = ${colors.bg} -foreground = ${colors.fg} - -width = 100% -height = 34 -offset-x = 0 -offset-y = 0 -# bottom = true - -overline-size = 0 -overline-color = #f00 -underline-size = 0 -underline-color = #00f - -border-bottom-size = 0 -border-top-size = 1 -border-color = ${colors.bg-dark} - -padding-left = 2 -padding-right = 2 -module-margin-left = 0 -module-margin-right = 0 - -font-0 = "Fira Code:pixelsize=9;2" -font-1 = "Wuncon Siji:pixelsize=12;2" -font-2 = "Siji:pixelsize=10;2" - -; modules-left = volume pad cpu memory pad pkg mail -modules-left = pulseaudio pad cpu memory pad fs -modules-center = bspwm -modules-right = syncthing redshift wlan pad network-up pad network-down pad battery pad date - -;tray-position = center -;tray-padding = 2 -;tray-transparent = true -;tray-background = #0063ff - -[module/bspwm] -type = internal/bspwm -pin-workspaces = true -enable-click = true - -# ws-icon-0 = 1; -# ws-icon-1 = 2; -# ws-icon-2 = 3; -# ws-icon-3 = 4; -# ws-icon-4 = 5; -# ws-icon-5 = 6; -ws-icon-default =  - -format = -label-padding = 1 - -label-focused = %icon% -label-focused-background = ${colors.bg-dark} -label-focused-foreground = ${colors.fg} -# label-focused-underline = ${colors.magenta} -; label-focused-foreground = ${xrdb:color2} -label-focused-padding = 1 - -label-occupied = %icon% -label-occupied-foreground = ${colors.accent} -label-occupied-padding = 1 - -; label-urgent = %icon% -label-urgent-foreground = ${colors.alert} -; label-urgent-background = ${colors.alert} -label-urgent-padding = 1 - -label-empty = %icon% -label-empty-foreground = ${colors.fg-alt} -label-empty-padding = 1 - -[module/date] -type = internal/date -interval = 5 - -label = %date% %time% -date = %A, %h %d -date-alt = %Y-%m-%d -time = %I:%M %p -time-alt = %H:%M:%S -format-prefix = "" -format-prefix-padding = 1 -; format-prefix-background = ${colors.bg-alt} -format-prefix-foreground = ${colors.accent} -; format-underline = ${xrdb:color4} - -[module/fs] -type = internal/fs -mount-0 = / -mount-1 = /mnt/projects ; for desktops -mount-2 = /home ; for laptop -interval = 30 - -; Available tags: -; (default) -; -; -; -format-mounted = "" -format-mounted-foreground = ${colors.accent} -; Available tokens: -; %mountpoint% -; %type% -; %fsname% -; %percentage_free% -; %percentage_used% -; %total% -; %free% -; %used% -; Default: %mountpoint% %percentage_free%% - -; Available tags: -; (default) -format-unmounted = -label-unmounted = -label-unmounted-foreground = ${colors.fg-alt} - -bar-used-indicator = -bar-used-width = 8 -bar-used-foreground-0 = ${colors.fg} -bar-used-foreground-1 = ${colors.fg} -bar-used-foreground-2 = ${colors.yellow} -bar-used-foreground-3 = ${colors.alert} -bar-used-foreground-4 = ${colors.alert} -bar-used-fill = | -bar-used-empty = ¦ -bar-used-empty-foreground = ${colors.fg-alt} - -[module/xwindow] -type = internal/xwindow -label = %title:0:80:...% -label-padding-left = 2 - -; [module/mpd] -; type = internal/mpd -; host = /home/hlissner/.config/mpd/mpd.sock -; -; format-online = -; format-padding = 5 -; -; label-song-maxlen = 45 -; label-song-ellipsis = true -; -; icon-prev =  -; icon-seekb =  -; icon-stop =  -; icon-play =  -; icon-pause =  -; icon-next =  -; icon-seekf =  -; -; icon-random =  -; icon-repeat =  -; -; toggle-on-foreground = ${colors.fg} -; toggle-off-foreground = #66 - -[module/cpu] -type = internal/cpu -interval = 2 -format = -format-prefix = "" -format-foreground = ${colors.accent} -; format-underline = #f90000 -; label = %percentage%% -format-padding = 1 - -bar-load-indicator = -bar-load-width = 8 -bar-load-foreground-0 = ${colors.fg} -bar-load-foreground-1 = ${colors.fg} -bar-load-foreground-2 = ${colors.yellow} -bar-load-foreground-3 = ${colors.alert} -bar-load-foreground-4 = ${colors.alert} -bar-load-fill = | -bar-load-empty = ¦ -bar-load-empty-foreground = ${colors.fg-alt} - -[module/memory] -type = internal/memory -interval = 3 -format = -format-prefix = "" -format-prefix-foreground = ${colors.accent} -; format-underline = #4bffdc -; label = %percentage_used%% -format-padding-left = 1 - -; Only applies if is used -bar-used-indicator = -bar-used-width = 8 -bar-used-foreground-0 = ${colors.fg} -bar-used-foreground-1 = ${colors.fg} -bar-used-foreground-2 = ${colors.yellow} -bar-used-foreground-3 = ${colors.alert} -bar-used-foreground-4 = ${colors.alert} -bar-used-fill = | -bar-used-empty = ¦ -bar-used-empty-foreground = ${colors.fg-alt} - -[module/wlan] -type = internal/network -interface = ${env:WLP:wlp3s0} -interval = 3.0 - -format-connected = -format-disconnected = -format-disconnected-foreground = - -; label-connected = -; label-disconnected = ! -; label-disconnected-foreground = ${colors.red} - -ramp-signal-0 =  -ramp-signal-0-foreground = ${colors.yellow} -ramp-signal-1 =  -ramp-signal-1-foreground = ${colors.yellow} -ramp-signal-2 =  -ramp-signal-2-foreground = ${colors.yellow} -ramp-signal-3 =  -ramp-signal-3-foreground = ${colors.accent} -ramp-signal-4 =  -ramp-signal-4-foreground = ${colors.fg} - -[module/network-up] -type = internal/network -interface = ${env:LAN:eno1} -interval = 4.0 -label-connected = "%upspeed%" -format-connected-prefix = " " -format-connected-prefix-foreground = ${colors.accent} -format-connected-foreground = ${colors.fg} -format-connected-background = -format-connected-underline = -format-disconnected-prefix = " " -format-disconnected-prefix-foreground = ${colors.alert} -format-disconnected-foreground = ${colors.alert} - -[module/network-down] -type = internal/network -interface = ${env:LAN:eno1} -interval = 4.0 -label-connected = "%downspeed%" -format-connected-prefix = " " -format-connected-prefix-foreground = ${colors.accent} -format-connected-foreground = ${colors.fg} -format-connected-background = -format-connected-underline = -format-disconnected-prefix = " " -format-disconnected-prefix-foreground = ${colors.alert} -format-disconnected-foreground = ${colors.alert} - -[module/pulseaudio] -type = internal/pulseaudio - -; format-volume = -format-volume = -; label-volume = " " -label-volume-foreground = ${colors.accent} - -; format-muted-prefix = " " -format-muted-foreground = ${colors.alert} -label-muted =  - -bar-volume-width = 8 -# bar-volume-foreground-0 = ${colors.magenta} -# bar-volume-foreground-1 = ${colors.magenta} -# bar-volume-foreground-2 = ${colors.magenta} -# bar-volume-foreground-3 = ${colors.magenta} -# bar-volume-foreground-4 = ${colors.magenta} -# bar-volume-foreground-5 = ${colors.magenta} -# bar-volume-foreground-6 = ${colors.magenta} -bar-volume-gradient = false -bar-volume-indicator = | -bar-volume-indicator-font = 1 -bar-volume-indicator-foreground = #ff -bar-volume-fill = ─ -bar-volume-fill-font = 1 -bar-volume-empty = ─ -bar-volume-empty-font = 1 -bar-volume-empty-foreground = ${colors.fg-alt} - -; Only applies if is used -ramp-volume-0 =  -ramp-volume-1 =  -ramp-volume-2 =  - -[module/battery] -type = internal/battery -battery = BAT0 -adapter = ADP1 -full-at = 98 - -format-charging = -format-charging-underline = #ffb52a - -format-discharging = -format-discharging-underline = ${self.format-charging-underline} - -format-full-prefix = " " -format-full-prefix-foreground = ${colors.fg-alt} -format-full-underline = ${self.format-charging-underline} - -ramp-capacity-0 =  -ramp-capacity-1 =  -ramp-capacity-2 =  -ramp-capacity-0-foreground = ${colors.red} -ramp-capacity-1-foreground = #575864 -ramp-capacity-2-foreground = ${colors.fg-alt} - -animation-charging-0 =  -animation-charging-1 =  -animation-charging-2 =  -animation-charging-framerate = 1000 -animation-charging-foreground = ${colors.fg} - - -;===================================================== -; Custom scripts -;===================================================== - -[module/pad] -type = custom/text -content = " " -content-foreground = ${colors.fg-alt} - -[module/redshift] -type = custom/script -exec = ~/.config/polybar/modules/redshift -exec-if = pgrep -x redshift -interval = 60 -format-padding = 1 - -[module/syncthing] -type = custom/script -exec = echo 1 -exec-if = systemctl is-active syncthing -format = "" -format-foreground = ${colors.fg} -interval = 30 - -; vim:ft=dosini diff --git a/modules/themes/alucard/config/polybar/modules/redshift b/modules/themes/alucard/config/polybar/modules/redshift deleted file mode 100755 index 9a0b05f0..00000000 --- a/modules/themes/alucard/config/polybar/modules/redshift +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# Specifying the icon(s) in the script -# This allows us to change its appearance conditionally -pgrep -x redshift &> /dev/null -if [[ $? -eq 0 ]]; then - temp=$(redshift -p 2>/dev/null | grep temp | cut -d' ' -f3) - temp=${temp//K/} -fi - -icon="" -# OPTIONAL: Append ' ${temp}K' after $icon -if [[ -z $temp ]]; then - echo "%{F#65737E}$icon" # Greyed out (not running) -elif [[ $temp -ge 5000 ]]; then - echo "%{F#8FA1B3}$icon" # Blue -elif [[ $temp -ge 4000 ]]; then - echo "%{F#EBCB8B}$icon" # Yellow -else - echo "%{F#D08770}$icon" # Orange -fi diff --git a/modules/themes/alucard/config/polybar/run.sh b/modules/themes/alucard/config/polybar/run.sh deleted file mode 100644 index 6b4536c9..00000000 --- a/modules/themes/alucard/config/polybar/run.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -pkill -u $UID -x polybar -while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done - -polybar main >$XDG_DATA_HOME/polybar.log 2>&1 & -echo 'Polybar launched...' diff --git a/modules/themes/alucard/config/qutebrowser/theme.py b/modules/themes/alucard/config/qutebrowser/theme.py deleted file mode 100644 index e454bd83..00000000 --- a/modules/themes/alucard/config/qutebrowser/theme.py +++ /dev/null @@ -1,221 +0,0 @@ -## Colors -palette = { - 'background': '#282a36', - 'background-alt': '#1E2029', - 'border': '#282a36', - 'current-line': '#44475a', - 'selection': '#44475a', - 'foreground': '#f8f8f2', - 'foreground-alt': '#e0e0e0', - 'foreground-attention': '#ffffff', - 'comment': '#6272a4', - 'cyan': '#8be9fd', - 'green': '#50fa7b', - 'orange': '#ffb86c', - 'pink': '#ff79c6', - 'purple': '#bd93f9', - 'red': '#ff5555', - 'yellow': '#f1fa8c' -} - -spacing = { - 'vertical': 6, - 'horizontal': 4 -} - -padding = { - 'top': spacing['vertical'], - 'right': spacing['horizontal'], - 'bottom': spacing['vertical'], - 'left': spacing['horizontal'] -} - -# HACK This is set to mitigate the blinding flash of white in between page -# loads. This can break sites with no explicit background, so I rely on the -# let-there-be-light.user.js greasemonkey script to "reset" the background. -c.colors.webpage.bg = palette['background'] - -## UI -# Scrollbar style; much less intrusive than the default -c.scrolling.bar = "overlay" -# Completion -c.completion.shrink = True - -## Fonts -c.fonts.default_family = "JetBrainsMono" -c.fonts.default_size = "10pt" - -# Background color of the completion widget category headers. -c.colors.completion.category.bg = palette['background-alt'] -# Bottom border color of the completion widget category headers. -c.colors.completion.category.border.bottom = palette['background-alt'] -# Top border color of the completion widget category headers. -c.colors.completion.category.border.top = palette['border'] -# Foreground color of completion widget category headers. -c.colors.completion.category.fg = palette['foreground'] -# Background color of the completion widget for even rows. -c.colors.completion.even.bg = palette['background-alt'] -# Background color of the completion widget for odd rows. -c.colors.completion.odd.bg = palette['background-alt'] -# Text color of the completion widget. -c.colors.completion.fg = palette['foreground'] -# Background color of the selected completion item. -c.colors.completion.item.selected.bg = palette['selection'] -# Bottom border color of the selected completion item. -c.colors.completion.item.selected.border.bottom = palette['selection'] -# Top border color of the completion widget category headers. -c.colors.completion.item.selected.border.top = palette['selection'] -# Foreground color of the selected completion item. -c.colors.completion.item.selected.fg = palette['foreground'] -# Foreground color of the matched text in the completion. -c.colors.completion.match.fg = palette['orange'] -# Color of the scrollbar in completion view -c.colors.completion.scrollbar.bg = palette['background'] -# Color of the scrollbar handle in completion view. -c.colors.completion.scrollbar.fg = palette['foreground'] -# Background color for the download bar. -c.colors.downloads.bar.bg = palette['background-alt'] -# Background color for downloads with errors. -c.colors.downloads.error.bg = palette['background-alt'] -# Foreground color for downloads with errors. -c.colors.downloads.error.fg = palette['red'] -# Color gradient stop for download backgrounds. -c.colors.downloads.stop.bg = palette['background-alt'] - -## Color gradient interpolation system for download backgrounds. -## Type: ColorSystem -## Valid values: -## - rgb: Interpolate in the RGB color system. -## - hsv: Interpolate in the HSV color system. -## - hsl: Interpolate in the HSL color system. -## - none: Don't show a gradient. -c.colors.downloads.system.bg = 'none' - -## Background color for hints. Note that you can use a `rgba(...)` value -# for transparency. -c.colors.hints.bg = palette['background-alt'] -# Font color for hints. -c.colors.hints.fg = palette['purple'] -# Hints -c.hints.border = '1px solid ' + palette['background'] -# Font color for the matched part of hints. -c.colors.hints.match.fg = palette['foreground-alt'] -# Background color of the keyhint widget. -c.colors.keyhint.bg = palette['background-alt'] -# Text color for the keyhint widget. -c.colors.keyhint.fg = palette['purple'] -# Highlight color for keys to complete the current keychain. -c.colors.keyhint.suffix.fg = palette['selection'] -# Background color of an error message. -c.colors.messages.error.bg = palette['background-alt'] -# Border color of an error message. -c.colors.messages.error.border = palette['background'] -# Foreground color of an error message. -c.colors.messages.error.fg = palette['red'] -# Background color of an info message. -c.colors.messages.info.bg = palette['background-alt'] -# Border color of an info message. -c.colors.messages.info.border = palette['background'] -# Foreground color an info message. -c.colors.messages.info.fg = palette['comment'] -# Background color of a warning message. -c.colors.messages.warning.bg = palette['background-alt'] -# Border color of a warning message. -c.colors.messages.warning.border = palette['border'] -# Foreground color a warning message. -c.colors.messages.warning.fg = palette['red'] -# Background color for prompts. -c.colors.prompts.bg = palette['background-alt'] -# Border used around UI elements in prompts. -c.colors.prompts.border = '1px solid ' + palette['background'] -# Foreground color for prompts. -c.colors.prompts.fg = palette['cyan'] -# Background color for the selected item in filename prompts. -c.colors.prompts.selected.bg = palette['selection'] -# Background color of the statusbar in caret mode. -c.colors.statusbar.caret.bg = palette['background-alt'] -# Foreground color of the statusbar in caret mode. -c.colors.statusbar.caret.fg = palette['orange'] -# Background color of the statusbar in caret mode with a selection. -c.colors.statusbar.caret.selection.bg = palette['background-alt'] -# Foreground color of the statusbar in caret mode with a selection. -c.colors.statusbar.caret.selection.fg = palette['orange'] -# Background color of the statusbar in command mode. -c.colors.statusbar.command.bg = palette['background-alt'] -# Foreground color of the statusbar in command mode. -c.colors.statusbar.command.fg = palette['pink'] -# Background color of the statusbar in private browsing + command mode. -c.colors.statusbar.command.private.bg = palette['background-alt'] -# Foreground color of the statusbar in private browsing + command mode. -c.colors.statusbar.command.private.fg = palette['foreground'] -# Background color of the statusbar in insert mode. -c.colors.statusbar.insert.bg = palette['background-alt'] -# Foreground color of the statusbar in insert mode. -c.colors.statusbar.insert.fg = palette['pink'] -# Background color of the statusbar. -c.colors.statusbar.normal.bg = palette['background-alt'] -# Foreground color of the statusbar. -c.colors.statusbar.normal.fg = palette['foreground-alt'] -# Background color of the statusbar in passthrough mode. -c.colors.statusbar.passthrough.bg = palette['background'] -# Foreground color of the statusbar in passthrough mode. -c.colors.statusbar.passthrough.fg = palette['orange'] -# Background color of the statusbar in private browsing mode. -c.colors.statusbar.private.bg = palette['background-alt'] -# Foreground color of the statusbar in private browsing mode. -c.colors.statusbar.private.fg = palette['foreground-alt'] -# Background color of the progress bar. -c.colors.statusbar.progress.bg = palette['background-alt'] -# Foreground color of the URL in the statusbar on error. -c.colors.statusbar.url.error.fg = palette['red'] -# Default foreground color of the URL in the statusbar. -c.colors.statusbar.url.fg = palette['foreground'] -# Foreground color of the URL in the statusbar for hovered links. -c.colors.statusbar.url.hover.fg = palette['cyan'] -# Foreground color of the URL in the statusbar on successful load -c.colors.statusbar.url.success.http.fg = palette['green'] -# Foreground color of the URL in the statusbar on successful load -c.colors.statusbar.url.success.https.fg = palette['green'] -# Foreground color of the URL in the statusbar when there's a warning. -c.colors.statusbar.url.warn.fg = palette['yellow'] -# Status bar padding -c.statusbar.padding = padding -# Background color of the tab bar. -c.colors.tabs.bar.bg = palette['background-alt'] -# Background color of unselected even tabs. -c.colors.tabs.even.bg = palette['background-alt'] -# Foreground color of unselected even tabs. -c.colors.tabs.even.fg = palette['comment'] -# Color for the tab indicator on errors. -c.colors.tabs.indicator.error = palette['red'] -# Color gradient start for the tab indicator. -c.colors.tabs.indicator.start = palette['orange'] -# Color gradient end for the tab indicator. -c.colors.tabs.indicator.stop = palette['green'] - -## Color gradient interpolation system for the tab indicator. -## Type: ColorSystem -## Valid values: -## - rgb: Interpolate in the RGB color system. -## - hsv: Interpolate in the HSV color system. -## - hsl: Interpolate in the HSL color system. -## - none: Don't show a gradient. -c.colors.tabs.indicator.system = 'none' - -# Background color of unselected odd tabs. -c.colors.tabs.odd.bg = palette['background-alt'] -# Foreground color of unselected odd tabs. -c.colors.tabs.odd.fg = palette['comment'] -# Background color of selected even tabs. -c.colors.tabs.selected.even.bg = palette['background'] -# Foreground color of selected even tabs. -c.colors.tabs.selected.even.fg = palette['foreground'] -# Background color of selected odd tabs. -c.colors.tabs.selected.odd.bg = palette['background'] -# Foreground color of selected odd tabs. -c.colors.tabs.selected.odd.fg = palette['foreground'] - -## Tab padding -c.tabs.padding = padding -c.tabs.indicator.width = 1 -c.tabs.favicons.scale = 1 diff --git a/modules/themes/alucard/config/qutebrowser/userstyles/monospace-textareas.scss b/modules/themes/alucard/config/qutebrowser/userstyles/monospace-textareas.scss deleted file mode 100644 index 5ba2ee79..00000000 --- a/modules/themes/alucard/config/qutebrowser/userstyles/monospace-textareas.scss +++ /dev/null @@ -1,3 +0,0 @@ -textarea { - font-family: monospace; -} diff --git a/modules/themes/alucard/config/qutebrowser/userstyles/stackoverflow.scss b/modules/themes/alucard/config/qutebrowser/userstyles/stackoverflow.scss deleted file mode 100644 index dc76477f..00000000 --- a/modules/themes/alucard/config/qutebrowser/userstyles/stackoverflow.scss +++ /dev/null @@ -1,1027 +0,0 @@ -[qb-domain="serverfault.com"], -[qb-domain="superuser.com"], -[qb-domain="stackapps.com"], -[qb-domain="mathoverflow.new"], -[qb-domain="askubuntu.com"], -[qb-domain$="stackoverflow.com"], -[qb-domain$="stackexchange.com"] -{ - /*************************************************************** - Stack Overflow Dark v2.11.20 (2018-08-09) - https://github.com/StylishThemes/StackOverflow-Dark - http://userstyles.org/styles/35345 - - ** Will apply to almost all Stack Exchange Sites ** - Except: - * Area 51 (area51.stackexchange.com) - * Gaming (gaming.stackexchange.com) - - ** Please open an issue to report sites where the style breaks ** - https://github.com/StylishThemes/StackOverflow-Dark/issues - - previous version information contained at the userstyles site - ****************************************************************/ - - * { - border-color: #444 !important; - text-shadow: none !important; - box-shadow: none !important; - } - - body { - background-color: #191919 !important; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAABGCAAAAABURb1YAAAFnklEQVR4AWWXCY4cwXbE6h4JMhCvMPc/ov+3Ox9QsLCGpKlFHILd+UQ559AGDkBSFXWmomonqkL/XuUcIPUcONjHCJyE36KaqNiaRnVCG9TGpgIU9hIfohCBVGj24ammo04lU3Fy0NZDAyZi5AElHjgEGlRbG1WjraIt7TmADQkAaoEHsOXAAaeqat9RVTqjosyEH5W+DQCQt8BzIJMfXJI3e5tGRefSlRn3NrO3scnvNl26FN5RITGNfjm3GM/+FhQgnlQeImC+dEm8rzHVTNGL9EADVsTAIfGJBziRy7RlmcZU1IYpHIj+4JrWym8/XSwzompmFNVOFdTOAAfs61KZ6eXcp57fykQUOxNBmTesz2HpCnCg3UV/bA7VRpWGNqKtrYLTs0ilCjgxiZxjeLC5dDPBFn4Pn2ja6BRUL10DTgET4Focq8rn8casxV4E5tIlZvytqtfivCOKZrqc38G7egnkXecyPZdzubc57VtUnbfL+a0u3b1N3d9Mci7cKocHoh3xihLQ6fXUlgTOOfVkXSUFINoWHhqxE23RTmCqtoEJaITkIrUCkU9fnqpqm+40VSXS3CLaSzfGBb4rPuOSfN0ylLve6/jpcrbL2dTlnOdv5AamKjLvLN1XruMNS/cul/hx8twKpKYRaE2DOp8+c+lW7uVXVQ7Vx0x1G3HXjNocsHCac7NbWc6egwJVHu2kRTVNC2pqv2U4XNsv5/yWJlV9+NJ1C7xluInlcr7rK+Kg+qy7onQqgnbi7UHcS3qXjdw3bO5tumycYlVssMI5EXXpRnatPK362KodtVU60cm+eQT10sVLFwJYlVaf7UGSoi5dQF3DvnTX3UvXTPO8quKH7jsXhm/PxfKWZXqBM5sS33kmKtC31Q05fI095i5IPpyzRXqSy1Sr17p1F7NE8vMtnNbLpVVtk8c0OrfF0sKxHnIpYgHW4puMomTz8mgmrSjpvrxhX97l7LqLpl7bW9BH9/MNzF8XwRqL8/m7c30eFYV5VX3QTquK06XbLt16F4ks+8Z9m6gPtpcuk3OvibCekng4lzMHi9MoqZmKj9tdbQCbc7bcEA+oEJduRNNL1waf1tuI9MDBUK8t3k9uFz3rrqadO9Ln9TL/ezlwDvky3TW7ZmXfpc77TN0yhOXnP939LvVDV9s+tgLTm0TqYd1lea3PRFuVjLa562HdPbCfascGrvO3DMeIATVqVRO8vfHrbupdfo1dzlXUdkVLZsS1mLPG3rWcl+4B1l1537h0VXzU1tyLG7cCu+LSrSqo06hocy3WCcil65qHDbuEYzQN2HpT3jFt9LEFvHTP1nxbXOEkbhkKmd+6BTfVZ/I143z/Fyz6Za92o0I7I6gzfeYAHPwy/Rb43L9TLtMt8CtwW1xvQvbR1g9n7qJRNN1kdxcdH7cM58Szxq679MdLOhE72t6VNEpHHkzwRyjBcGth+dE99pIkVbWaEWmvnQ8Yl7Mp59zpRWXdNo6odrO754Zzvxf/010nP7onb1TR+bgbVPB9PcADJvH/043Kvk0UzLRxQ6UiaeTAcyxYl2lyrrvZv8v2wE7U1uVcST0821jJeIDKWuyxiqnuko7q3+zJYXJ46nV3D67EyL+lQ9F2qkr+3kUafQpwYE8T329p6y7OX1TF97fQv/c+l87zj7Hsgpig4qRLd9fMPs74rLGyCzRbhmVqpy7nqvPmTD1gvKe7b2U8u1QzmtuDuEtbgT3c8QBJveo6cueFkUwv59nVmfFw1jl4/unuOT9qERV76ers8n23z/c8/Xy7a4lwwLplmGusbRp33Up13+ZDN3KPxNVMhY62vUQyRTse6+cKHtZYjIfDh260Cjbb3Vy6R8H8SMBzqSwrsB1UTacoknlnOb8V4JD9Njfpwz/fHjpBUeevcAtcl65sqXPX9D87RUTLc/dfOgAAAABJRU5ErkJggg==) !important; - background-clip: border-box !important; - background-origin: padding-box !important; - background-attachment: scroll !important; - background-repeat: repeat !important; -background-size: auto !important; -background-position: left top !important; - } - - /* custom code font */ - pre.prettyprint, code { - font-family: "Menlo", Monaco, Consolas, "Liberation Mono", Menlo, Courier, monospace !important; - } - - /* === custom color === */ - a:not([class*="comment-"]), .profile-popup a, .seWrapper a, .gs-title b, .spoiler:hover a, - .comment-up-on, .comment-up-off:hover { - color: #4183C4 !important; - } - - .nav .primarynav li a:hover, .message.message-config .actions .button, .btn-careers:hover, - .btn-careers:visited, .question-list-layout a:hover { - color: #fff !important; - background: #4183C4 !important; - } - - input[type="submit"].btn-clear, input[type="button"].btn-clear, button.btn-clear, .btn-clear { - color: #4183C4 !important; - } - - input[type="submit"].btn-clear:hover, input[type="button"].btn-clear:hover, button.btn-clear:hover, .btn-clear:hover, - input[type="submit"].btn-clear:focus, input[type="button"].btn-clear:focus, button.btn-clear:focus, .btn-clear:focus { - color: #4183C4 !important; - background: #273045 !important; - } - - a.post-tag:hover, .bounty-indicator, .bounty-indicator-tab, .bounty-award, - span.bounty-indicator-tab, #change-picture, .top-badge,.supernovabg, .hotbg, - .nav li.youarehere a, .nav a:hover, a.button:hover, .edit-count, .pager a:hover span, - .bounties-tab, .login-link, #sidebar a[href*="/questions/ask"], - #sidebar a[href*="/questions/ask"]:visited, .page-numbers:hover, .s-btn.s-btn__primary, - .s-btn.s-btn__primary:focus { - background-color: #4183C4 !important; - color: #eee !important; - } - - #tabs a.youarehere:before, .tabs a.youarehere:before, - .newnav .tabs-list-container .tabs-list .intellitab a.youarehere:before { - background-color: #4183C4 !important; - } - - .s-btn.s-btn__primary:hover { - filter: brightness(1.1) !important; - } - - /* === text selection === */ - ::selection { - background: #4183C4 !important; - color: #fff !important; - } - ::-moz-selection { - background: #4183C4 !important; - color: #fff !important; - } - - /* === input focus hightlight === */ - input:focus, textarea:focus, .chosen-container.chosen-container-active .chosen-choices, - .chosen-container .active-result.highlighted { - border-color: #4183C4 !important; - box-shadow: inset 0 1px 2px rgba(0,0,0,.075), 0 0 2px #4183C4 !important; - outline-color: transparent !important; - } - .tag-editor input:focus, .previous-button, .next-button, .btn-clear, - .chosen-container.chosen-container-active .chosen-choices input, - .gsc-webResult.gsc-result, .gsc-results .gsc-imageResult, .s-sidebarwidget:after { - border: 0 !important; - box-shadow: none !important; - } - .menu-switcher { - filter: none !important; - -webkit-filter: none !important; - } - - /* === hidden === */ - div.hireme, div#hireme, .next-answer-hook-container, .intellitab:after, .s-hero .-container { - display: none !important; - } - - /* === background color === */ - /* from darkest to lightest grey */ - .popup-badges .all-badge-progress .completed:before, .previous-button, .next-button, #footer, - /* === herobox when not logged in === */ #herobox.alternate, - .message-title { - background-color: rgba(0,0,0,.4) !important; - } - - header { - background-color: #080808 !important; - } - - #custom-header, .review-bar, .diff-choices a.selected, #header #topbar, td.owner, a.owner, .question-status, - .profile-popup, .profile-popup div, .profile-popup th, .profile-popup td, #global, .actual-edit-overlay, - input:not([type="submit"]), textarea, #search input, .tag-editor, .f-select > select, textarea#input, - .search-form .chosen-container .chosen-choices, .pac-container, select, #match-preferences-editor .close:hover, - .gsc-input-box, .gsc-option-menu, .subheader, .min-ds-wizard .min-ds-box.jobs { - background-color: #111 !important; - color: #ddd !important; - } - - .gsc-selected-option-container { - background: #111 !important; - } - - .onebox, .profile-ad, .message.message-config, - .so-header a:hover, .so-header a.topbar-icon-on, .topbar-dialog .header, .header-edit-section:hover, - .timeline-item, .sidebar-profile .-item, .btn-outlined.-white:hover, .btn-outlined:hover, .top-bar a:hover, .top-bar a:focus, - .top-bar .-item._active, .top-bar .-link.topbar-icon-on, .top-bar .-link.topbar-icon-on:hover, - .top-bar .-feature-notice:hover, .top-bar .-feature-notice.topbar-icon-on, .topbar-dialog .dialog-content, - .feature-notice-dialog:before, .-item.social, .salary-results-container .collection, .sidebar #post-job, - .sidebar .salary-survey-sidebar, .ui-dialog, .salary-calculator-calculator, .sticky-menu-wrapper._sticky, - .-summary, .field._toolbar .-toolbar, .timeline .feature-banner__background { - background: #151515 !important; - } - - html, blockquote, #post-preview, .nav .primarynav li a, #chat, #hsearch .textbox, .form-item, .grippie, - .welovestackoverflow, #wmd-button-bar, .wmd-button-bar, .qa-block, .content-block, .user-info-rep, .sidebar, - .popup, .full-diff, .val-success, .search-form .filter-pane nav, .s-card, .chosen-container .chosen-drop, - .pac-item.pac-item-selected, .pac-item:hover, .-item.social:hover, #add-tags-button, #filter-preview, - .salary-results { - background: #191919 !important; - } - - .authcomment, .seIntro, .seFooter, .title-banner, .salary-results-wrapper, .salary-skill-legend { - background-color: #191919 !important; - border: 2px solid #262626 !important; - } - - #tabs a { - border: 1px solid transparent !important; - } - - #tabs a.youarehere, .tabs a.youarehere, .tag-suggestions, .dropdown li, - .proposed-change .diff-buttons a:not(.selected), #logout-form, .snippet-holder, - .CodeMirror, .CodeMirror-gutters, .badge-progress.completed, - .timeline-item:before, .item-select-table .item, .title-box, .-list-item, - .bg-powder-050, .textarea-with-counter .-counter { - background-color: #191919 !important; - border-color: #444 !important; - } - - /* RSS Feed - issue #87 */ - body > pre:not(.prettyprint):not(.CodeMirror-line) { - background: #191919 !important; - color: #ddd; - } - - #tabs a.youarehere, .tabs a.youarehere { - border-bottom-color: transparent !important; - } - - .subtabs :not(.youarehere) { - border: 0 !important; - } - - #user-about-me, .user-about-me, .mine .messages, .avatar-card, .tag-container, .dropdown { - background: #191919 !important; - border: 0 !important; - color: #C1BEBA !important; - } - - #chat .mine .messages, .salary-share { - background-color: #292929 !important; - border: 1px solid #444 !important; - } - - #chat div.moderator { - color: #366fb3 !important; - } - - .topbar-dialog, .share-tip, .messages, - #tag-menu, #overlay-header, .action-list .action-selected, .switcher-nudge-lightbox, - .user-rep-chart-summary-tooltip:hover, .current-site-container, #or, .account-number, .topbar, - .wmd-prompt-dialog, .wb-popup-content, .wb-hat-details, .docs-review-page .history-table tr.even td, - kbd, kbd code, .switcher label, .timeline-item-actions, .cv-story .section-opener h2, - .cv-story .section-opener:after, .header-edit-section .ctas, - .item-select-table .item:hover, .visa-wrapper, .chosen-choices, .p-top-tags .-tag-group, - .chosen-results .active-result, .salary-results-wrapper .inline-survey-cta, - #messages-interface .callout, .tour-bubble .-body, .why-jobs-v2 .developers-first select option { - background-color: #222 !important; - color: #ddd !important; - } - - .profile-popup, .profile-popup tr, .profile-popup th, .profile-gravatar, .newuser, .roomcard, - .seWrapper, h2.index.header, .privilege-table-row:hover, .list-originals .item.hover, - .list-originals .body-summary, .review-instructions-reason, .room-mini, #formContainer, #switch, - .login-topbar, .newsletter-category, .newsletter-item, .blogcontainer, .usercard-xxl, .roomcard-xxl, - .docs-review-page .topic-draft-bar, .badge-progress, .avatar-wrapper, .timeline-line, - .s-progress-bar .-bar, .-job-badges .-badge, .search-form .job-alert-tooltip, .bg-white, - .s-sidebarwidget--header, .tag-popup .-container, .tag-popup .-arrow:before { - background-color: #222 !important; - border-color: #555 !important; - color: #ddd !important; - } - - #header #topbar, .revision-comment, .date-span, .form-submit input, .preferred-login, - .mdhelp, .wmd-help-button.active-help, .date_brick, .more-info, .review-stats-current-user, - .review-stats-count-current-user, .topbar-menu-links, .input-group .-fill { - background: #222 !important; - color: #ddd !important; - -webkit-border-radius: 3px !important; - border-radius: 3px !important; - } - .topbar.newheader, .network-items>a, .icon-help, .icon-help:hover { - background-color: #222 !important; - } - .calendar, .calendar-small, .mspark .mspbar, #promo-box, #input-area .input-hint, - .tour-page .feature-selection li a.triggered, .ob-docs, - .topbar.newheader .topbar-wrapper .topbar-links .search-container #search input[name="q"], - .mainbar.discussion .discussion-item, #input-area, .pager a span, .page-sizer a { - background: #222 !important; - color: #ddd !important; - } - - .tour-page .tour-content section:nth-child(n+1), .users-page .user-info:hover, - .nav-left-col a { - background: rgba(34,34,34,.5) !important; - } - - .ad502-room, .message.message-config .actions, .tag-container .col, .congrats, .task-stat-table td { - background-color: #232323 !important; - border: 1px solid #191919 !important; - } - - .rep-recent-row, .bounty, .diff-choices a:hover, div.meter, .narrow .votes, .ob-post-votes, .card, - .congrats, .-card { - background-color: #232323 !important; - color: #bbb !important; - } - - .answer, #system-message, .commentlist, .revision td, #hero-content, .mdhelp-tabs .selected, .tabs .selected, - .rep-card .rep-col, .sort select, .-job._highlighted, .MathJax_MenuDisabled, .gsc-option-menu-item-highlighted, - .secondary-job-results-identifier { - background: #232323 !important; - color: #999 !important; - } - - .container, .tour-page .headline, .tour-page .cta, .s-progress-bar._badge .-fill { - background-image: none !important; - } - - .tagged-interesting, .tagged-interesting .views, .highlight-row, .highlighted, .card.rep-card .graph, - .badge-progress:hover, #newsletter-ad, .search-form .icon-advanced-search, - .message.gray, .menu-popout li:hover, .menu-popout .is-selected, #job-detail .-sticky-tabs, - .nav-left-col a:hover, .deleted-answer footer .user-info, .util-bar, .user-info { - background-color: #242424 !important; - background-image: none !important; - } - - #newsletter-ad { - padding: 10px !important; - } - #newsletter-ad:before { - content: "Love this site?"; - font-size: 18px !important; - } - - .youarehere, .dropdown li.selected a, .dropdown li.selected a:hover, .ob-docs .example-metric, - .menu-popout, .version-row, .version-name, .post-tag, .post-tag:visited, - .switcher input[type="radio"]:checked+label, .double-input .separator, .geo-tag, - .MathJax_Menu, .MathJax_MenuLabel:focus, .salary-calc-inputs, .question-container.unread, - .comments-wrap { - background: #333 !important; - color: #ccc !important; - } - - .nav li, .seNav, .topbar a.topbar-icon-on, .topbar a.topbar-icon-on:hover, .owner, .nav a, - .module li.current, .seCurrent, .community-bulletin, .owner-revision td, .markdown-diff .skip, - #footer .container, .body-diffs .skip, .newsletter-anon, .tag-suggestions>div:hover, - .topbar-dialog .modal-content li:hover, .timestamp:hover+div.message .meta, div.message:hover .meta, - #side-menu ul li a:hover, .conversation-info, .message.reply-parent, .message.reply-child, - .sidebar-element .list li .rep-and-badges, .congrats .actions, .newsletters-toggle, - .tag-suggestions>div:focus, .current-site a.site-link:hover, #sub-navs>a:hover, - #sub-navs .menu-item:hover, .popup-close .-link:hover, .p-highlights .-reputation .-meta-rep, - .nav-left-col a.is-active, .comment__highlight:not([style*="background-color"]), - ul.comments-list .comment__highlight .comment-text, - ul.comments-list .comment__highlight .comment-actions { - background-color: #333 !important; - } - - .owner-answer, .question-status, .notification, #feed-ticker, #top-menu, .vote-revision td, - .topbar-dialog .unread-item, .privileges-wrapper .stroke, .progress-bar .bar { - background: #404040 !important; - } - - tr.comment:hover, .reply-parent, .timestamp, .usercard, - .comment-help, .answer-help-background, .mdhelp-tabs, .tabs li, .hi, .seNavLinks a:hover, - .seNavLinks a:focus, .itemBoxNew, .pagination a.current, .pagination a.selected, .pagination a:hover, - .wb-wearing, .impact-card hr, .MathJax_MenuActive { - background-color: #444 !important; - color: #ddd !important; - } - - .page-numbers.current { - background: #444 !important; - } - - .comment__highlight:not([style*="background-color"]), - ul.comments-list .comment__highlight .comment-text, - ul.comments-list .comment__highlight .comment-actions { - background: rgba(102, 102, 102, .8) !important; - } - #chat .messages .mention { - background: #666 !important; - } - - #post-text-container div span { - background: #c1beba !important; - } - .-logo img { - background: #fff !important; - } - - .sidebar-element .list li .rep-and-badges:before { - background: linear-gradient(270deg, #333, rgba(51,51,51,0)); - } - - /* === Brown(ish) === */ - .new-post-activity, #new-answer-activity, .val-info, .highlight, a.youarehere:before, - .message.regular, .filter-dashboard-edit .floating-help, .review-post-author-guidance { - background-color: rgba(51,34,17,.4) !important; - } - pre .spaces, .message.message-warning { - background-color: #321 !important; - color: #eee !important; - } - .message.message-warning .message-tip-left-top:before { - border-top-color: #321 !important; - } - - /* chat room buttons */ - a.button { - background: #840 !important; - color: #eee !important; - } - - /* === Green === */ - .accepted-answer, .suggested-edit .inserted, .markdown-diff .inserted, .rep-increase, .progress-bar .percent, - .recommended, .vote.accepted, .suggested-edit .inserted>div, .full-diff .inserted>div, - .message.success, .p-highlights .-rep-increase, .s-progress-bar .-fill, .answerBox.accepted { - background: #232 !important; - } - - span.diff-add { - background: #3F4E1D !important; - color: #92CC09 !important; - } - .topbar-dialog.achievements-dialog .rep-up, .-activity .-stat.answered { - color: #92CC09 !important; - } - - .answered, .answer-votes, .answered .vote-count-post { - background: #232323 !important; - color: #4b553c !important; - } - .user-show-new .user-rep .rep-amount .rep-up, .-stats.rep-up { - color: #4b553c !important; - border-color: #4b553c !important; - } - - .answered-accepted, .answered-accepted strong, .rep-up.bounty-indicator-tab, .user-rep-chart-summary-bar, - .special-rep, .s-progress__privilege .s-progress--bar { - background: #4b553c !important; - color: #fff !important; - } - - .answered strong, .user-show-new .user-rep-full .rep-up { - color: #4b553c !important; - } - - .vote-count-post [style="color:green"] { - color: green !important; - } - - /* === Red === */ - .deleted-answer, .suggested-edit .deleted, .markdown-diff .deleted, .suggested-edit .deleted>div, - .full-diff .deleted>div, .realtime-post-deleted-notification p, .message.incomplete, - .message.error, .deleted-answer .comments-wrap, .deleted-answer .user-info, - .deleted-answer .util-bar, .deleted-answer .comment { - background-color: #200 !important; - } - .post-timeline-v2 .post-timeline tr.deleted-event td, - .post-timeline-v2 .post-timeline tr.deleted-event-details td { - background-color: rgba(34, 0, 0, .4) !important; - } - /* Mobile */ - .-summary .-votes, .deleted-answer .votes { - background-color: rgba(214, 217, 220, .2) !important; - } - - span.diff-delete { - background-color: #400f00 !important; - color: #ff4a15 !important; - } - - .summary a.moderator-tag, .btn._google { - background-color: #400 !important; - } - - .summary a.moderator-tag:hover { - background-color: #600 !important; - } - - .vote-count-post [style="color:maroon"] { - color: maroon !important; - } - - /* === Transparent background === */ - div.message .meta, .spaces, .comment, span.feed-icon, a.role-switch, .nav.careers li, .nav.careers li:hover, - .switcher-nudge-content p, #content, #tabs a, .tabs a, #chat .username, #chat .messages, .tag-container, - .prettyprint code, .lv-info, .lv-stats-wrapper, .lv-stats-wrapper .number, .container, .bottom-notice, - #question-header, .question-form .form-item, .post-menu>a:hover, #main-content, - #mainbar, #mainbar-full, .mainbar-full, #logout-page, #sidebar, .footerwrap, #footer-menu, .module, - #sidebar #newsletter-ad, #sidebar .ad-container, #sidebar .everyonelovesstackoverflow, .mention, - .tag-suggestions>div .more-info, .user-tags .answer-votes, .expanded:hover, .sidebar-accordion, - .sidebar-accordion a:hover, .sidebar, .sidebar *:not(.post-tag), .tag-filter-isany, .col-section.expanded, - .timeline-mine header, .timeline-sidebar header, .sidebar-profile.is-visible, .cv-section, - .cv-story .avatar-wrapper, .btn-clear, .header-edit-section, .personal-statement, .link-text, - .match-preferences .seniority-selector, .field-with-bg, #tags .message.regular, - #profile-side #side-menu a, .sidebar-profile .-header, .sidebar-profile .-footer, - #popup-next-badge .-header, .popup-close .-link, .job-cover-image.-no-image, #job-detail, - .s-footer .-container, .p-top-tags .badge-tag, .gsc-webResult.gsc-result, .gsc-imageResult, - .gsc-cursor-page, .gsc-cursor-current-page, .metaInfo .owner, #content > .subheader, - header.job-details--header, .site-footer--container, .-activity .-stat.answered, - .deleted-answer .comment-actions, .min-ds-wizard .current, .input-group .-fill._clean, - .why-jobs-v2 .slanted-background:before { - background-color: transparent !important; - } - - #tabs a:hover, .tabs a:hover { - background-color: #191919 !important; - border: 1px solid #444 !important; - border-bottom-color: transparent !important; - } - - .highcharts-container rect[fill="#FFFFFF"], rect[fill="rgb(255, 255, 255)"] { - fill: transparent !important; - } - .spoiler, .spoiler * { - color: transparent !important; - } - .spoiler:hover, .spoiler:hover * { - color: inherit !important; - } - - /* === Dark border === */ - .body-diffs table * { - border-color: #111 !important; - } - - .s-progress-bar .-bar:before, .s-progress-bar .-bar:after { - border-top-color: #222 !important; - border-bottom-color: #222 !important; - } - .search-form .job-alert-tooltip:after { - border-top-color: #222 !important; - } - - .welovestackoverflow, .question-summary, .subheader, - .company-module .-details strong:before, .bc-black-1 { - border-color: #333 !important; - } - - a.required-tag, .topbar-dialog.feature-notice-dialog:before, - .site-footer .-link._expandable:after, .bc-black-2 { - border-color: #555 !important; - } - - .message .message-tip-top-right:before, .message .message-tip-top-left:before { - border-bottom-color: #191919 !important; - } - .search-form .filter-pane a._active, .search-form .filter-pane a:hover { - border-bottom-color: #4183C4 !important; - } - .left-arrow, .timeline-item:nth-child(odd):after { - border-right-color: rgba(119,119,119,.4) !important; - } - .previous-button:hover .left-arrow { - border-right-color: #c0c0c0 !important; - } - .right-arrow, .timeline-item:nth-child(even):after { - border-left-color: rgba(119,119,119,.4) !important; - } - .next-button:hover .right-arrow { - border-left-color: #c0c0c0 !important; - } - #input-area .input-hint:after { - border-left-color: #222 !important; - } - .s-progress-bar .-fill { - border-top: #444 1px solid !important; - border-bottom: #444 1px solid !important; - } - #sub-navs .youarehere { - border-top-color: #4183C4 !important; - } - .nav-left-col .is-active, .nav-links .youarehere .nav-links--link { - border-right-color: #4183C4 !important; - } - - /* === No/hide border === */ - div.list > div { - border-right: 0 !important; - } - .module, .tabs a, div.message, .full-diff td, .wb-outer:not(.wb-selected), - .page-numbers.dots, .p-top-tags .badge-tag, .page-numbers.desc, .intellitab:not(.selected) a, - #sub-navs .menu-item .menu-switcher, .input-group .-fill._clean { - border-color: transparent !important; - } - .left-arrow, .right-arrow { - border-bottom-color: transparent !important; - border-top-color: transparent !important; - } - div.message:hover, .timestamp:hover + div.message { - visibility: inherit; - border: 1px dotted #333; - } - - /* blue label count */ - .bounty-indicator-tab, .hero.profile, .jobs-banner.-blue, #reg-alert-modal:hover, - .-popout .btn-secondary:hover, .search-btn, .tags .jobs a, .btn-secondary, #job-board-save { - background: #046 !important; - color: #ccc !important; - border: 1px solid #135 !important; - } - .hero-box, .filter-show-more { - background: #182030 !important; - } - .review-actions input, .btn, .chosen-choices .search-choice, .topbar-dialog a.btn-secondary, - .filter-dashboard, input[type=submit], .bg-blue-500, .s-btn.s-btn__filled { - background: #182030 !important; - color: #ccc !important; - border: 1px solid #135 !important; - } - .review-actions input:hover, .btn:hover, .btn-secondary:hover, #job-board-save:hover, - .topbar-dialog a.btn-secondary:hover, input[type=submit]:hover, .s-btn.s-btn__filled:hover { - background: #273045 !important; - } - .s-hero { - background-image: url(https://cdn.sstatic.net/img/hero/pattern.svg),linear-gradient(to right, #121723 0, #182030 100%) !important; - } - .s-hero:after { - background: #182030 !important; - } - - /* === Text Color === */ - div, input, .accepted-answer .post-text, .accepted-answer .user-action-time, #question-header a, - .post-text, .user-info, .topbar-dialog .header h3, .topbar-dialog .header h3 a, .topbar-dialog span, - .search-result .answered .vote-count-post strong, .votes-cast-stats th, .subheader h1, .vote.accepted, - .message.message-config h1, .message.message-config h2, .message.message-config h3, .message.message-config h4, - .spoiler:hover, .company-module a:hover *, .search-form .label, .search-form label, .list.companies p, - #snpte-button-run, .comment-link, .timeline .header h4, .-title, #profile-side #side-menu a:hover, - .-rep, .-total, .-list-item .-description, .message.message-error a, .chosen-container .chosen-results li, - .salary-calc-inputs span, .salary-survey-dialog .header h3, .title-banner h1, .salary-results-container h1, - .topbar-dialog h4, .label-key > b, .heading, .module h3, .badge-tag, .s-label, - .-link__with-icon:hover .svg-icon, .youarehere a, .youarehere .svg-icon, h1, h2, h3, h4, h5, h6, - .h1, .h2, .h3, .h4, .h5, .h6, .tour-bubble p { - color: #ddd !important; - } - /* patch for hint text of SurfingKeys browser extension */ - #sk_hints div { - color: #000 !important; - } - - /* placeholder */ - ::-webkit-input-placeholder { - color: #ddd !important; - } - ::-moz-placeholder { - color: #ddd !important; - } - - .user-details td, .content-page, h2:not([style]), h2 a, .profile-popup a:hover, .module h4, .page-description, - #openid_identifier, .form-item label, .subheader h2, .nav-links a.nav-links--link:hover { - color: #c1beba !important; - } - .comment, #top-menu a, .subheader a, .reputation a, .reputation-score, .relativetime.old, - .votes-cast-stats td, .mini-counts span, #chat .system-message, .card .rep, a.badge, a.badge-tag, - .user-card .user-stats .number, .user-card .user-card-name, a.question-hyperlink:hover, - a.answer-hyperlink:hover, .cv-story .time-frame, .-list-item.is-completed .-description, - .s-footer .-toc th, .event-count, .post-timeline td, .post-timeline th, #side-menu ul .category { - color: #aaa !important; - } - .ob-post-tag, .ob-user-tag, .deleted-answer .util-bar a, .nav-links--link { - color: #999 !important; - } - - .nav-links .youarehere .nav-links--link .svg-icon, .nav-links .fc-medium { - color: #666 !important; - } - - .comment-up-off, .comment-flag, .comment-flag-off { - color: #444 !important; - } - - .answered-accepted strong, .youarehere, .nav .primarynav li a, .nav a, a:hover, .rep-up.special-rep, - .pac-item-query, #content .salary-subheader, .salary-skill-legend-li .-score, - header.job-details--header a { - color: #fff !important; - } - - input, .actual-edit-overlay { - -webkit-text-fill-color: #fff !important; - } - - .post-text a:visited, .comment-text a:not(.comment-user):visited, #chat-body .content a:visited, - .question-hyperlink:visited, .answer-hyperlink:visited, #hot-network-questions ul a:visited { - color: #4183C4 !important; - } - - .rep-up { - color: #4b553c !important; - filter: brightness(140%) !important; - } - - .rep-down, .user-show-new .user-rep .rep-down { - color: #d65 !important; - filter: brightness(140%) !important; - } - - .comment-flag-on, .comment-flag:hover, .flag-on { - color: #622 !important; - } - - /* dark blue */ - .result-highlight { - color: #aa0 !important; - } - - /* brown/dark orange */ - .warm { - color: #840 !important; - } - #profile-summary>.-popout._incomplete { - border-color: #840 !important; - } - - /* orange */ - .hot { - color: #a20 !important; - } - - /* light brown */ - .unanswered { - color: #9a4444 !important; - } - - /* === Style adjustments === */ - .nav a, .post-tag, .comment-link, .tag-synonym-link, a.post-tag:hover, .topbar a, - .search-form .filter-pane a:hover, .comment-link:hover, .tag-synonym-link:hover { - text-decoration: none !important; - } - - .form-item { - padding-left: 20px !important; - } - - .tag-container .col { - margin: 0 !important; - border: #333 1px solid !important; - } - .tag-container.row { - margin: 2px !important; - } - .stats { - margin-top: 5px !important; - margin-bottom: 4px !important; - } - #hsearch, .statscontainer { - margin-right: 5px !important; - } - - .nav .primarynav li a, .list-originals .stats { - display: block !important; - float: left !important; - } - - .nav-links--link .svg-icon { - fill: currentColor !important; - } - - /* scroll bar */ - ::-webkit-scrollbar { - max-width: 10px !important; - max-height: 10px !important; - background: #1d1d1d !important; - } - ::-webkit-scrollbar-track, ::-webkit-scrollbar-corner { - background: #1d1d1d !important; - } - ::-webkit-scrollbar-thumb { - background: rgba(175, 175, 175, .5) !important; - } - ::-webkit-scrollbar-thumb:hover { - background: rgba(65, 131, 196, .8) !important; - background: rgba(65, 131, 196, .8) !important; - } - - /* === badges === */ - a.badge[title^="bronze"], a.badge-tag[title^="bronze"], .badge3 + .badgecount { - color: #c96 !important; - } - a.badge[title^="silver"], a.badge-tag[title^="silver"], .badge2 + .badgecount { - color: #c5c5c5 !important; - } - a.badge[title^="gold"], a.badge-tag[title^="gold"], .badge1 + .badgecount { - color: #ffcc46 !important; - } - .badge-tag, a.tag, .ob-post-tag, .ob-user-tag, .events-tooltip { - background-color: #191919 !important; - border-color: #111 !important; - } - .badge3-alternate, .progress-bar.badge-3 .bar .percent, - .s-progress-bar._badge._badge3 .-fill, .badge-wrapper._badge3 { - background-color: #7C4318 !important; /* bronze */ - } - .badge2-alternate, .progress-bar.badge-2 .bar .percent, - .s-progress-bar._badge._badge2 .-fill, .badge-wrapper._badge2 { - background-color: #464a4f !important; /* silver */ - } - .badge1-alternate, .progress-bar.badge-1 .bar .percent, - .s-progress-bar._badge._badge1 .-fill, .badge-wrapper._badge1 { - background-color: #957000 !important; /* gold */ - } - - /* === Images === */ - .wmd-button>span { - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyODMgNjAiIHdpZHRoPSIyODMiIGhlaWdodD0iNjAiPgogIDxnIGZpbGw9IiNjNmM2YzYiPgogICAgPHBhdGggZD0iTTEyOCAxNC40aDguNlYxNkgxMjh2LTEuNnptMC01LjNoOC42djJIMTI4Vjl6bTAtNWg4LjZ2MS43SDEyOFY0em0tMi42LTF2My42aC0xVjRoLS44VjNoMS44em0tMSA3djFoMS44djFoLTIuNnYtMmwxLjctMXYtLjdoLTEuN3YtLjhoMi42djJsLTEuNy43em0xLjggMi43VjE3aC0yLjZ2LTFoMS43di0uN2gtMS43di0xaDEuN3YtLjhoLTEuN3YtMWgyLjZ6bTc4LTUuM0wyMDkgMTJWOS4zYzEuMyAwIDQuNyAwIDQuNyAzLjcgMCAyLTEuMyAzLjYtMyA0IDIuNi0uNCA0LjgtMyA0LjgtNiAwLTUuNi01LjgtNS42LTYuNi01LjZWM2wtNC40IDQuNHptMzEgMEwyMzEgMTJWOS4zYy0xLjMgMC00LjcgMC00LjcgMy43IDAgMiAxLjUgMy42IDMuMyA0LTIuNy0uNC01LTMtNS02IDAtNS42IDYtNS42IDYuNy01LjZWM2w0LjMgNC40ek01Ny43IDRDNTYuMyAyLjcgNTQgMi43IDUzIDRsLTMgM2MtMS40IDEuMy0xLjQgMy40IDAgNC43IDAgMCAwIC4yLjMuM2wxLTFjMC0uMi0uMi0uMy0uMy0uNC0uNy0uNy0uNy0xLjggMC0yLjVsMy0zYy43LS41IDEuOC0uNSAyLjUgMCAuNyAxIC43IDIgMCAyLjdMNTUgOWMuMy42LjUgMS4yLjUgMS44bDItMkM1OSA3LjMgNTkgNS4yIDU3LjUgNHptLTQuNCA0LjNMNTMgOGwtMS4yIDFjMCAuMi4zLjMuNC40LjcuNy43IDEuOCAwIDIuNWwtMyAzYy0uNy41LTEuOC41LTIuNSAwLS43LTEtLjctMiAwLTIuN0w0OCAxMWMtLjItLjYtLjQtMS4yLS40LTEuOGwtMiAyYy0xLjQgMS40LTEuNCAzLjUgMCA0LjggMS4yIDEuMyAzLjMgMS4zIDQuNiAwbDMtM2MxLjItMS4yIDEuMi0zLjQgMC00Ljd6TTE0OSA0aDguNnYxLjdIMTQ5VjR6bTAgNWg4LjZ2MkgxNDlWOXptMCA1LjRoOC42djEuOEgxNDl2LTEuOHptLTUuNC05LjZjMC0xIC44LTEuOCAxLjgtMS44czEuOC44IDEuOCAxLjgtLjggMS44LTEuOCAxLjgtMS44LTEtMS44LTEuOHptMCA1LjJjMC0xIC44LTEuOCAxLjgtMS44czEuOC44IDEuOCAxLjgtLjggMS44LTEuOCAxLjgtMS44LS44LTEuOC0xLjh6bTAgNS4yYzAtMSAuOC0xLjggMS44LTEuOHMxLjguOCAxLjggMS44LS44IDEuOC0xLjggMS44LTEuOC0uOC0xLjgtMS44em0tNzgtNi43YzIgMCAzLjUgMS41IDMuNSAzLjVzLTEuMyAzLjUtMy4zIDMuNVM2MiAxNCA2MiAxMnYtLjVjMC0zLjggMy4yLTcgNy03djJjLTEuMiAwLTIuNS41LTMuNCAxLjVsLS41LjZoLjd6bTkgMGMyIDAgMy41IDEuNSAzLjUgMy41cy0xLjMgMy41LTMuMyAzLjVTNzEgMTQgNzEgMTJ2LS41YzAtMy44IDMuMy03IDctN3YyYy0xLjIgMC0yLjUuNS0zLjQgMS41bC0uNS42aC43ek0yNTAgM2MtMy44IDAtNyAzLTcgN3MzLjIgNyA3IDcgNy0zIDctNy0zLjItNy03LTd6bTEgMTEuNGgtMnYtMS44aDJ2MS44em0yLjUtNC40bC0yLjYgMS44aC0ydi0xbDIuNi0xLjd2LS43aC00LjRWNi41aDUuMmMuNSAwIDEgLjQgMSAxVjEwek0xMyA5LjZDMTMuNyA5IDE0IDggMTQgN2MwLTIuMi0xLjgtNC00LTRINXYxNGg2YzIuMiAwIDQtMS44IDQtNCAwLTEuNS0uOC0yLjctMi0zLjR6TTggNWgxLjZjMSAwIDEuNiAxIDEuNiAycy0uNyAyLTEuNiAySDhWNXptMi41IDEwSDh2LTRoMi41YzEgMCAxLjcgMSAxLjcgMnMtLjggMi0xLjcgMnptMjktMTJ2MWgtMmwtNSAxMmgydjFoLTd2LTFoMmw1LTEyaC0yVjNoN3ptNDcuMiA2LjJ2LTNjMC0uNS4yLTEgLjUtMS4yLjMtLjMuOC0uNCAxLS40VjNDODYuNiAzIDg1IDQuNCA4NSA2djIuNGMwIC40LS4zLjgtLjguOGgtLjh2MS42aC44Yy41IDAgLjguMy44LjhWMTRjMCAxLjYgMS41IDMgMy4zIDN2LTEuNmMtLjQgMC0uOC0uMi0xLS40LS40LS4zLS42LS43LS42LTF2LTMuMmMwLS40LS4zLS44LS44LS44LjIgMCAuNi0uMy42LS44eiIvPgogICAgPHBhdGggZD0iTTE2NSAxMmgxMHYyaC0xMHYtMnptLTMtM2gxNnYyaC0xNlY5em0wIDZoMTZ2MmgtMTZ2LTJ6IiBvcGFjaXR5PSIuNCIvPgogICAgPHBhdGggZD0iTTE2MiAzaDE2djJoLTE2em0zIDNoMTB2MmgtMTB6bTE4LjYgM2gyLjN2MmgtMi41em0zLjQgMGgyLjN2MkgxODd6Ii8+CiAgICA8cGF0aCBkPSJNMTg2LjYgMTJoMTB2MmgtMTB2LTJ6bS0zIDNoMTZ2MmgtMTZ2LTJ6bTAtMTJoMTZ2MmgtMTZ6bTMgM2gxMHYyaC0xMHoiIG9wYWNpdHk9Ii40Ii8+CiAgICA8cGF0aCBkPSJNMTkwLjQgOWgyLjN2MmgtMi4zem0zLjQgMGgyLjN2MmgtMnptMy40IDBoMi4zdjJoLTIuM3pNOTMuNiAxMC44djNjMCAuNS0uMiAxLS41IDEuMiAwIC4zLS41LjQtMSAuNFYxN2MyIDAgMy4zLTEuNCAzLjMtM3YtMi40YzAtLjQuMy0uOC44LS44aDFWOS4yaC0xYy0uNSAwLS44LS4zLS44LS44VjZjMC0xLjYtMS41LTMtMy4zLTN2MS42bDEgLjRjLjIuMy40LjcuNCAxdjMuMmMwIC40LjMuOC44LjgtLjMgMC0uNy4zLS43Ljh6TTExOC4yIDR2MTJoLTE1VjRoMTVtMS0xaC0xN3YxNGgxN1YzeiIvPgogICAgPHBhdGggZD0iTTExNCA2LjhjMC0xIC42LTEuNiAxLjUtMS42IDEgMCAxLjYuNyAxLjYgMS42cy0uNSAxLjYtMS40IDEuNmMtLjggMC0xLjYtLjctMS42LTEuNnptMyA4aC0xMi42bDMtOC42IDQuNCA1LjQgMi0xLjZNMjY4LjUgOS44bC0uOC0uOC0yLjcgMi41IDIuNyAyLjUuOC0uOC0xLjgtMS43bTMuNyAxLjdsLjguOCAyLjgtMi41LTIuOC0yLjUtLjguOCAxLjggMS43TTI3MS4zIDN2NC43aDQuNyIvPgogICAgPHBhdGggZD0iTTI3NSA2LjdWMTZoLTExVjRoOC4zbC0xLTFIMjY0Yy0uNiAwLTEgLjUtMSAxdjEyYzAgLjUuNCAxIDEgMWgxMWMuNSAwIDEtLjUgMS0xVjcuN2wtMS0xeiIvPgogIDwvZz4KICA8ZyBmaWxsPSIjZjkwIj4KICAgIDxwYXRoIGQ9Ik0xMjggNTQuNGg4LjZWNTZIMTI4em0wLTUuM2g4LjZ2MkgxMjh2LTJ6bTAtNWg4LjZ2MS43SDEyOFY0NHptLTIuNi0xdjMuNmgtMVY0NGgtLjh2LTFoMS44em0tMSA3djFoMS44djFoLTIuNnYtMmwxLjctMXYtLjdoLTEuN3YtLjhoMi42djJsLTEuNy43em0xLjggMi43VjU3aC0yLjZ2LTFoMS43di0uN2gtMS43di0xaDEuN3YtLjhoLTEuN3YtMWgyLjZ6bTc4LTUuM0wyMDkgNTJ2LTIuN2MxLjMgMCA0LjcgMCA0LjcgMy43IDAgMi0xLjMgMy42LTMgNCAyLjYtLjQgNC44LTMgNC44LTYgMC01LjYtNS44LTUuNi02LjYtNS42VjQzem0zMSAwTDIzMSA1MnYtMi43Yy0xLjMgMC00LjcgMC00LjcgMy43IDAgMiAxLjUgMy42IDMuMyA0LTIuNy0uNC01LTMtNS02IDAtNS42IDYtNS42IDYuNy01LjZWNDN6TTU3LjcgNDRjLTEuMy0xLjMtMy41LTEuMy00LjcgMGwtMyAzYy0xLjUgMS4zLTEuNSAzLjQgMCA0LjcgMCAwIDAgLjIuMi4zbDEtMWMwLS4yLS4yLS4zLS4zLS40LS44LS43LS44LTEuOCAwLTIuNWwzLTNjLjYtLjUgMS43LS41IDIuNCAwIC43IDEgLjcgMiAwIDIuN0w1NSA0OWMuMy42LjUgMS4yLjUgMS44bDItMmMxLjMtMS40IDEuMy0zLjUgMC00Ljh6bS00LjQgNC4zTDUzIDQ4bC0xLjIgMWMwIC4yLjMuMy40LjQuNy43LjcgMS44IDAgMi41bC0zIDNjLS43LjUtMS44LjUtMi41IDAtLjctMS0uNy0yIDAtMi43TDQ4IDUxYy0uMi0uNi0uNC0xLjItLjQtMS44bC0yIDJjLTEuNCAxLjQtMS40IDMuNSAwIDQuOCAxLjIgMS4zIDMuMyAxLjMgNC42IDBsMy0zYzEuMi0xLjIgMS4yLTMuNCAwLTQuN3pNMTQ5IDQ0aDguNnYxLjdIMTQ5em0wIDVoOC42djJIMTQ5em0wIDUuNGg4LjZ2MS44SDE0OXptLTUuNC05LjZjMC0xIC44LTEuOCAxLjgtMS44czEuOC44IDEuOCAxLjgtLjggMS44LTEuOCAxLjgtMS44LTEtMS44LTEuOHptMCA1LjJjMC0xIC44LTEuOCAxLjgtMS44czEuOC44IDEuOCAxLjgtLjggMS44LTEuOCAxLjgtMS44LS44LTEuOC0xLjh6bTAgNS4yYzAtMSAuOC0xLjggMS44LTEuOHMxLjguOCAxLjggMS44LS44IDEuOC0xLjggMS44LTEuOC0uOC0xLjgtMS44em0tNzgtNi43YzIgMCAzLjUgMS41IDMuNSAzLjVzLTEuMyAzLjUtMy4zIDMuNWMtMiAwLTMuNy0xLjUtMy43LTMuNXYtLjVjMC0zLjggMy4yLTcgNy03djJjLTEuMiAwLTIuNS41LTMuNCAxLjVsLS41LjZoLjd6bTkgMGMyIDAgMy41IDEuNSAzLjUgMy41cy0xLjMgMy41LTMuMyAzLjVjLTIgMC0zLjctMS41LTMuNy0zLjV2LS41YzAtMy44IDMuMy03IDctN3YyYy0xLjIgMC0yLjUuNS0zLjQgMS41bC0uNS42aC43ek0yNTAgNDNjLTMuOCAwLTcgMy03IDdzMy4yIDcgNyA3IDctMyA3LTctMy4yLTctNy03em0xIDExLjRoLTJ2LTEuOGgyem0yLjUtNC40bC0yLjYgMS44aC0ydi0xbDIuNi0xLjd2LS43aC00LjR2LTEuN2g1LjJjLjUgMCAxIC40IDEgMVY1MHpNMTMgNDkuNmMuNi0uNyAxLTEuNiAxLTIuNiAwLTIuMi0xLjgtNC00LTRINXYxNGg2YzIuMiAwIDQtMS44IDQtNCAwLTEuNS0uOC0yLjctMi0zLjR6TTggNDVoMS42YzEgMCAxLjYgMSAxLjYgMnMtLjcgMi0xLjYgMkg4em0yLjUgMTBIOHYtNGgyLjVjMSAwIDEuNyAxIDEuNyAycy0uOCAyLTEuNyAyem0yOS0xMnYxaC0ybC01IDEyaDJ2MWgtN3YtMWgybDUtMTJoLTJ2LTF6bTQ3LjIgNi4ydi0zYzAtLjUuMi0xIC41LTEuMmwxLS40VjQzYy0xLjcgMC0zLjIgMS40LTMuMiAzdjIuNGMwIC40LS4zLjgtLjguOGgtLjh2MS42aC44Yy41IDAgLjguMy44LjhWNTRjMCAxLjYgMS41IDMgMy4zIDN2LTEuNmMtLjQgMC0uOC0uMi0xLS40LS40LS4zLS42LS43LS42LTF2LTMuMmMwLS40LS4zLS44LS44LS44LjIgMCAuNi0uMy42LS44eiIvPgogICAgPHBhdGggZD0iTTE2NSA1MmgxMHYyaC0xMHptLTMtM2gxNnYyaC0xNnptMCA2aDE2djJoLTE2ek0xODYuNiA1MmgxMHYyaC0xMHptLTMgM2gxNnYyaC0xNnptMC0xMmgxNnYyaC0xNnptMyAzaDEwdjJoLTEweiIgb3BhY2l0eT0iLjQiLz4KICAgIDxwYXRoIGQ9Ik05My42IDUwLjh2M2MwIC41LS4yIDEtLjUgMS4yIDAgLjMtLjUuNC0xIC40VjU3YzIgMCAzLjMtMS40IDMuMy0zdi0yLjRjMC0uNC4zLS44LjgtLjhoMXYtMS42aC0xYy0uNSAwLS44LS4zLS44LS44VjQ2YzAtMS42LTEuNi0zLTMuMy0zdjEuNmwxIC40Yy4yLjMuNC43LjQgMXYzLjJjMCAuNC4zLjguOC44LS4zIDAtLjcuMy0uNy44em0yNC42LTYuOHYxMmgtMTVWNDRoMTVtMS0xaC0xN3YxNGgxN3oiLz4KICAgIDxwYXRoIGQ9Ik0xMTQgNDYuOGMwLTEgLjYtMS42IDEuNS0xLjYgMSAwIDEuNi43IDEuNiAxLjYgMCAxLS41IDEuNi0xLjQgMS42LS44IDAtMS42LS43LTEuNi0xLjZ6bTMgOGgtMTIuNmwzLTguNiA0LjQgNS40IDItMS42TTI2OC41IDQ5LjhsLS44LS44LTIuNyAyLjUgMi43IDIuNS44LS44LTEuOC0xLjdtMy43IDEuN2wuOC44IDIuOC0yLjUtMi44LTIuNS0uOC44IDEuOCAxLjdNMjcxLjMgNDN2NC43aDQuNyIvPgogICAgPHBhdGggZD0iTTI3NSA0Ni43VjU2aC0xMVY0NGg4LjNsLTEtMUgyNjRjLS42IDAtMSAuNS0xIDF2MTJjMCAuNS40IDEgMSAxaDExYy41IDAgMS0uNSAxLTF2LTguM3pNMTgzLjYgNDguOGgyLjN2MmgtMi41em0zLjQgMGgyLjN2MkgxODd6TTE5MC40IDQ4LjhoMi4zdjJoLTIuNHptMy40IDBoMi4zdjJIMTk0ek0xOTcuMiA0OC44aDIuM3YySDE5N3pNMTYyIDQzaDE2djJoLTE2em0zIDNoMTB2MmgtMTB6Ii8+CiAgPC9nPgo8L3N2Zz4=) !important; - } - - #hlogo img, .everyonelovesstackoverflow, button[disabled], input[disabled] { - opacity: .3 !important; - } - .everyonelovesstackoverflow:empty { display: none !important; } - - #hlogo a, #footer-logo { - background-repeat: no-repeat !important; - } - - #footer-logo { - background-size: contain !important; - } - - #header-logo img, #footer-logo img { - visibility: hidden !important; - } - - #sound, .vote-count-container.stars .img, #sub-navs>a:hover .messages-icon, - .industries:before, .js-reputation-graph, .js-reputation-graph *, - #sub-navs .messages-icon, .topbar-dialog .header .icon-close { - -webkit-filter: invert(100%) !important; - filter: invert(100%) !important; - } - .collection img, .salary-survey-sidebar .header-img, #post-job .header-img { - filter: invert(80%) hue-rotate(180deg); - } - - .axis .tick, .pie text { - fill: #ccc !important; - } - .axis line, .axis path { - stroke: #999 !important; - } - - /*New navigation tabs*/ - .intellitab a { - background: transparent !important; - } - .intellitab.selected a { - background-color: rgba(51, 51, 51, .5) !important; - } - .intellitab a.youarehere { - border-bottom-color: #242729 !important; - } - .intellitab .menu-switcher { - background-color: #333 !important; - } - .intellitab .menu-switcher:hover{ - background-color: #222 !important; - } - .intellitab.dropdown-enabled:hover .menu-switcher, .intellitab .dropdown a:hover, - .post-timeline-v2 .post-timeline tr.separator > td > div { - background-color: #444 !important; - } - .dropdown:before { - filter: invert(76%) !important; - -webkit-filter: invert(76%) !important; - } - /* documentation editing icons */ - .docs-menu a { - -webkit-filter: brightness(200%) !important; - filter: brightness(200%) !important; - } - .docs-menu:hover a { - -webkit-filter: none !important; - filter: none !important; - } - - /* override prettyprint bright border styles */ - .prettyprint { - border-color: transparent !important; - color: #ddd !important; - } - /* style non-prettyprint code */ - code, pre:not(.prettyprint):not(.CodeMirror-line) { - background: #333 !important; - } - .prettyprint code { - background: transparent !important; - } - /* accepted answer code blocks */ - .accepted-answer pre, .accepted-answer code, .accepted-answer pre.prettyprint, - .accepted-answer .prettyprint .pln, .accepted-answer .youarehere, .accepted-answer pre:not(.prettyprint) { - background: #202A20 !important; - } - - /*! Desert */pre.prettyprint{display:block;background-color:#333!important;line-height:1.4em!important}pre .nocode{background-color:none!important;color:#000!important}code .str,pre .str{color:#ffa0a0!important}code .kwd,pre .kwd{color:khaki!important;font-weight:700!important}code .com,pre .com{color:#87ceeb!important}code .typ,pre .typ{color:#98fb98!important}code .lit,pre .lit{color:#cd5c5c!important}code .pun,pre .pun{color:#fff!important}code .pln,pre .pln{color:#fff!important}code .tag,pre .tag{color:khaki!important;font-weight:700!important}code .atn,pre .atn{color:#bdb76b!important;font-weight:700!important}code .atv,pre .atv{color:#ffa0a0!important}code .dec,pre .dec{color:#98fb98!important}ol.linenums{margin-top:0;margin-bottom:0;color:#aeaeae}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none!important}@media print{pre.prettyprint{background-color:none!important}code .str,pre .str{color:#060!important}code .kwd,pre .kwd{color:#006!important;font-weight:700!important}code .com,pre .com{color:#600!important;font-style:italic!important}code .typ,pre .typ{color:#404!important;font-weight:700!important}code .lit,pre .lit{color:#044!important}code .pun,pre .pun{color:#440!important}code .pln,pre .pln{color:#000!important}code .tag,pre .tag{color:#006!important;font-weight:700!important}code .atn,pre .atn{color:#404!important}code .atv,pre .atv{color:#060!important}} -} - -[qb-domain="stackexchange.com"] -{ - /* login screen StackExchange logo replacement */ - .login-page .se-logo { - -moz-box-sizing: border-box !important; - box-sizing: border-box !important; - background: url(https://StylishThemes.github.io/StackOverflow-Dark/images/stackexchange-logo.svg) no-repeat !important; - background-size: cover !important; - background-position: center center !important; - width: 200px !important; /* Width of new image */ - height: 48px !important; /* Height of new image */ - padding-left: 200px !important; /* Equal to width of new image */ - } - /* login button (input type=button")*/ - .login-page input.fr { - background-color: #4183C4 !important; - } - /* remove content border */ - #content { - border: 0 !important; - } - #sidebar #newsletter-ad, #sidebar .ad-container, #sidebar .everyonelovesstackoverflow { - border-width: 2px !important; - } - /* start blog.stackexchange.com */ - .cse .gsc-control-cse, .gsc-control-cse, div.pagination { - background-color: #181818 !important; - } - .sidebar p { - color: #ddd !important; - } - .job { - color: #888 !important; - } - .gsc-control-wrapper-cse { - padding-top: 10px !important; - } - /* hide google custom search placeholder */ - .gsc-input input:not(.gse-input-focus) { - background-image: none !important; - } - .podcast-container { - -webkit-filter: invert(100%) !important; - filter: invert(100%) !important; - } - .filters-sidebar .filters ul li.current, - .filters-sidebar .filters ul li.current .filter-unread-count { - background: #182030 !important; - } - /* end blog.stackexchange.com */ - /* chat.stackexchange.com */ - .event-banner { - background-color: #222 !important; - border-color: #555 !important; - } - /* end chat.stackexchange.com */ - /* http://stackexchange.com/newsletters/newsletter (see #36) */ - .promotion-banner-container, .promotion-banner { - background: #222 !important; - } - table[style*="background-color"], table[style*="background-image"] { - background: transparent !important; - border: none !important; - } - table h2[style*="color: "][style*="!important"], - table a[style*="color: #000!important"]:not([href*="questions/tagged"]) { - /* can't use color here because they added an inline !important */ - filter: invert(100%); - } - table tr, table td, table td p { - background: transparent !important; - color: #ddd !important; - } - table td a[href*="questions/tagged"] { - background: #222 !important; - color: #ddd !important; - border: none !important; - text-decoration: none !important; - } - table td hr { - border-style: solid !important; - } - footer .iconLogoSE path:first-child { - fill: #ededed !important; - } - div[class^="gv-"], table.gv-stats tr, table.gv-stats td { - color: initial !important; - } - - /* target sites to *NOT* hide the header background */ - #header, #hmenus { - background-color: transparent !important; - } - #header { - background-image: none !important; - } -} - -[qb-domain="tex.stackexchange.com"] -{ - /* target sites that need an inverted header */ - #header, #header > * { - -webkit-filter: invert(100%) !important; - filter: invert(100%) !important; - } -} - -[qb-domain="stackoverflow.com"] -{ - #hlogo a { - background-image: url(https://StylishThemes.github.io/StackOverflow-Dark/images/stackoverflow-logo.svg) !important; - } - .-logo > .-img { - background-image: url(https://StylishThemes.github.io/StackOverflow-Dark/images/stackoverflow-logo.svg) !important; - background-size: cover !important; - background-position: 0 0 !important; - background-repeat: no-repeat !important; - } -} - -[qb-domain="chat.stackoverflow.com"] -{ - /* chat.stackoverflow.com */ - #hlogo a { - background-image: none !important; - } - #header-logo, #footer-logo { - background-image: url(https://StylishThemes.github.io/StackOverflow-Dark/images/stackoverflow-logo.svg) !important; - } - #header-logo { - background-size: contain !important; - } -} - -[qb-domain="askubuntu.com"] -{ - #header { - background-image: none !important; - } - .narrow div.votes, .answered-accepted .mini-counts { - background-color: transparent !important; - } - #custom-header .nav-global, #custom-header .nav-global ul, .topbar { - background-color: #000 !important; - } - #custom-header .more.open, .topbar .profile-me:hover, .topbar a:hover, .topbar-icon:hover, #hmenus, .nav li, .nav a { - background-color: #111 !important; - } - #custom-header .nav-global a { - border-top-color: transparent !important; - } - #custom-header .nav-global a.active { - color: #eee !important; - border-top-color: #eee !important; - } - .nav li.youarehere, .nav li:hover { - background-color: #4183C4 !important; - } -} - -[qb-domain="english.stackexchange.com"] -{ - /* english language & usage */ - .post-signature.owner { - background-image: none !important; - } -} diff --git a/modules/themes/alucard/config/qutebrowser/userstyles/xkcd.scss b/modules/themes/alucard/config/qutebrowser/userstyles/xkcd.scss deleted file mode 100644 index 0888daa1..00000000 --- a/modules/themes/alucard/config/qutebrowser/userstyles/xkcd.scss +++ /dev/null @@ -1,86 +0,0 @@ -[qb-domain$="xkcd.com"] { - body { - background: #282a36 !important; - color: #f8f8f2 !important; - } - - img, div[class="self"] { - filter: hue-rotate(180deg) invert(100%) !important; - -webkit-filter: hue-rotate(180deg) invert(100%) !important; - } - - /*Exceptions*/ - img[alt="Stargazing"], img[alt="Flashlights"], img[alt="Google Maps"], img[alt="Alternative Energy Revolution"], img[alt="Man Page"] { - filter: invert(0%) !important; - -webkit-filter: invert(0%) !important; - } - - .box { - background: #1E2029 !important; - } - - #topLeft a { - color: #e0e0e0 !important; - } - - ul.comicNav li a { - background: transparent linear-gradient(#3C3C3C, #2E2E2E) repeat scroll 0% 0% !important; - } -} - - -[qb-domain="imgs.xkcd.com"] { - img { - filter: hue-rotate(180deg) invert(100%) !important; - -webkit-filter: hue-rotate(180deg) invert(100%) !important; - } - - /*Exceptions*/ - img[alt="https://imgs.xkcd.com/comics/stargazing.png"], - img[alt="https://imgs.xkcd.com/comics/flashlights.png"], - img[alt="https://imgs.xkcd.com/comics/google_maps.png"], - img[alt="https://imgs.xkcd.com/comics/alternative_energy_revolution.jpg"], - img[alt="https://imgs.xkcd.com/comics/man_page.png"] { - filter: invert(0%) !important; - -webkit-filter: invert(0%) !important; - } -} - - -[qb-domain="m-xkcd.com"] { - body { - background: #282a36 !important; - } - - #title { - color: #FAFAFA !important; - } - - #altTextLink { - color: #CCCCCC !important; - } - - #news { - color: #FAFAFA !important; - } - - ul#footerLinks li a { - background: transparent linear-gradient(#3C3C3C, #2E2E2E) repeat scroll 0% 0% !important; - } - - #altText { - background: #131313 !important; - color: #FAFAFA !important; - } - - img { - filter: hue-rotate(180deg) invert(100%) !important; - -webkit-filter: hue-rotate(180deg) invert(100%) !important; - } - - /*Exceptions*/ - img[alt="Stargazing"], img[alt="Flashlights"], img[alt="Google Maps"], img[alt="Alternative Energy Revolution"], img[alt="Man Page"] { - filter: invert(0%) !important; - -webkit-filter: invert(0%) !important; - } -} diff --git a/modules/themes/alucard/config/rofi/appmenu.rasi b/modules/themes/alucard/config/rofi/appmenu.rasi deleted file mode 100644 index a4d62c5c..00000000 --- a/modules/themes/alucard/config/rofi/appmenu.rasi +++ /dev/null @@ -1,10 +0,0 @@ -/* -*- mode: css; -*- */ -@import "config.rasi" - -textbox-icon { - str: "  "; -} - -prompt { - enabled: false; -} diff --git a/modules/themes/alucard/config/rofi/base.cyclemenu.rasi b/modules/themes/alucard/config/rofi/base.cyclemenu.rasi deleted file mode 100644 index 3de4010b..00000000 --- a/modules/themes/alucard/config/rofi/base.cyclemenu.rasi +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- mode: css; -*- */ -@import "config.rasi" - -window { - y-offset: 0; - children: [ listview ]; - width: 500px; -} - -listview { - scrollbar: false; -} - -element { - padding: 30px; - background-color: @bg-light; -} -element.selected { - background-color: @accent; - text-color: @bg; -} diff --git a/modules/themes/alucard/config/rofi/bookmarkmenu.rasi b/modules/themes/alucard/config/rofi/bookmarkmenu.rasi deleted file mode 100644 index 0cb69f97..00000000 --- a/modules/themes/alucard/config/rofi/bookmarkmenu.rasi +++ /dev/null @@ -1,14 +0,0 @@ -/* -*- mode: css; -*- */ -@import "config.rasi" - -listview { - columns: 1; -} - -textbox-icon { - str: "  "; -} - -prompt { - enabled: false; -} diff --git a/modules/themes/alucard/config/rofi/config.rasi b/modules/themes/alucard/config/rofi/config.rasi deleted file mode 100644 index 57f4d5c0..00000000 --- a/modules/themes/alucard/config/rofi/config.rasi +++ /dev/null @@ -1,137 +0,0 @@ -/* -*- mode: css; -*- */ -configuration { - icon-theme: "Paper"; - cycle: true; - disable-history: false; - monitor: "-4"; - - /* Vim-esque C-j/C-k as up/down in rofi */ - kb-accept-entry: "Return,Control+m,KP_Enter"; - kb-row-down: "Down,Control+n,Control+j"; - kb-remove-to-eol: ""; - kb-row-up: "Up,Control+p,Control+k"; -} - -* { - accent: #bd93f9; - bg: #1E2029FA; - bg-light: #1c1c1c; - bg-focus: #282a36; - bg-dark: #181a23; - fg: #bbc2cf; - fg-list: #bbc2cf; - on: #8BD49C; - off: #cc6666; - - magenta: #bd93f9; - blue: #61bfff; - - text-font: "Fira Sans 15"; - text-mono-font: "Fira Code 13"; - /* icon-font: "Hurmit Nerd Font Mono 26"; */ - icon-font: "FontAwesome 20"; - - background-color: transparent; - text-color: @fg-list; - font: @text-font; - border-color: @bg-dark; -} - - -/**** Layout ****/ -window { - width: 1000px; - y-offset: -50px; - anchor: north; - location: center; - border: 1px; - border-radius: 6px 6px 0 0; - children: [ inputbar, listview ]; - -} - -listview { - lines: 12; - fixed-height: false; - /* reverse: true; */ - columns: 2; - scrollbar: true; - spacing: 1px; - /* Remove strange gap between listview and inputbar */ - margin: -2px 0 0; -} - -/* - TODO Not supported in stable branch of rofi - @media only (max-height: 1080px) { - window { - y-offset: -30%; - } - listview { - lines: 14; - } - } -*/ - -scrollbar { - handle-width: 1px; -} -inputbar { - children: [ textbox-icon, prompt, entry ]; - border: 0 0 0; -} -textbox-icon, prompt { - padding: 11px; - expand: false; - border: 0 1px 0 0; - margin: 0 -2px 0 0; -} -textbox-icon { - padding: 7px 4px 0; -} -entry, element { - padding: 10px 13px; -} -textbox { - padding: 24px; - margin: 20px; -} - - -/**** Looks ****/ -scrollbar { - background-color: @bg-dark; - handle-color: @accent; - border-color: @bg-dark; -} -listview, inputbar { - background-color: @bg-dark; -} -textbox-icon, prompt, entry { - text-color: @accent; -} -prompt, entry { - background-color: @bg-focus; -} -textbox-icon, prompt { - background-color: #2f313d; -} -prompt { - background-color: @bg-focus; -} -textbox-icon { - font: @icon-font; -} -entry { - font: @text-font-mono; - text-color: @fg; -} - -element { - background-color: @bg; - text-color: @fg; -} -element selected { - background-color: @bg-dark; - text-color: @accent; -} diff --git a/modules/themes/alucard/config/rofi/filemenu.rasi b/modules/themes/alucard/config/rofi/filemenu.rasi deleted file mode 100644 index 7f2d3209..00000000 --- a/modules/themes/alucard/config/rofi/filemenu.rasi +++ /dev/null @@ -1,11 +0,0 @@ -/* -*- mode: css; -*- */ - -@import "config.rasi" - -textbox-icon { - str: "  "; -} - -prompt { - enabled: true; -} diff --git a/modules/themes/alucard/config/rofi/passmenu.rasi b/modules/themes/alucard/config/rofi/passmenu.rasi deleted file mode 100644 index 901a8c31..00000000 --- a/modules/themes/alucard/config/rofi/passmenu.rasi +++ /dev/null @@ -1,10 +0,0 @@ -/* -*- mode: css; -*- */ -@import "config.rasi" - -listview { - columns: 1; -} - -textbox-icon { - str: "  "; -} diff --git a/modules/themes/alucard/config/rofi/powermenu.rasi b/modules/themes/alucard/config/rofi/powermenu.rasi deleted file mode 100644 index 83681185..00000000 --- a/modules/themes/alucard/config/rofi/powermenu.rasi +++ /dev/null @@ -1,23 +0,0 @@ -/** -*- mode: css; -*- - * This theme is intended for a 5 items wide menu on a 1920x1080 pixels resolution. - * You may have to tweak values such as the window padding if you have a different resolution. - */ -@import "appmenu.rasi" - -window { - children: [ listview ]; - width: 500px; -} - -listview { - scrollbar: false; -} - -element { - padding: 30px; - background-color: @bg-light; -} -element.selected { - background-color: @accent; - text-color: @bg; -} diff --git a/modules/themes/alucard/config/rofi/windowmenu.rasi b/modules/themes/alucard/config/rofi/windowmenu.rasi deleted file mode 100644 index 3003bfb2..00000000 --- a/modules/themes/alucard/config/rofi/windowmenu.rasi +++ /dev/null @@ -1,27 +0,0 @@ -/* -*- mode: css; -*- */ - -@import "config.rasi" - -listview { - columns: 1; -} - -inputbar { - width: 1100px; -} - -textbox-icon { - str: "  "; -} - -prompt { - enabled: false; -} - -/** - * Elements are tab-delimited, which look weird in the default variable-pitch - * font, so use a monospace one. - */ -element { - font: "Fira Code 12"; -} diff --git a/modules/themes/alucard/config/tmux.conf b/modules/themes/alucard/config/tmux.conf deleted file mode 100644 index 2dc3ebb6..00000000 --- a/modules/themes/alucard/config/tmux.conf +++ /dev/null @@ -1,64 +0,0 @@ -# -- THEME ------------------------------- - -# The statusbar -set -g status-position bottom -set -g status-justify centre -set -g status-bg default -set -g status-fg colour15 -set -g status-interval 10 -# set -g status-attr dim -# set -g status-left '#[fg=colour236]_________________________' -set -g status-left '#{prefix_highlight}#[fg=colour236]|―――――――――――――――――――|' -# set -g status-left "#[fg=colour236]#{prefix_highlight} #[fg=colour5] #S #[fg=colour236]──" -# set -g status-right '#[fg=colour236]_________________________' -set -g status-right '#[fg=colour236]|―――――――――――――――――――――――――|' -set -g status-right-length 30 -set -g status-left-length 30 - -# The messages -set -g message-style fg=magenta,bg=colour236 -set -g message-command-style fg=blue,bg=black - -# loud or quiet? -set-option -g visual-activity off -set-option -g visual-bell off -set-option -g visual-silence off -set-window-option -g monitor-activity on -set-option -g bell-action none - -# The modes -setw -g clock-mode-colour colour135 -# setw -g mode-attr bold -# setw -g mode-fg colour196 -# setw -g mode-bg colour238 - -# The panes -set -g pane-border-style fg=colour235 -set -g pane-active-border-style fg=colour5 - -# setw -g window-status-current-fg colour2 -# setw -g window-status-current-bg default -# setw -g window-status-current-attr none -# setw -g window-status-current-format ' #W ' - -# setw -g window-status-fg colour236 -# setw -g window-status-bg default -# setw -g window-status-attr none -# setw -g window-status-format '#[fg=colour8] #I #[fg=default]#W ' -setw -g window-status-format ' #W ' - -# setw -g window-status-activity-bg default -# setw -g window-status-activity-fg colour240 -# setw -g window-status-activity-attr none - -# setw -g window-status-bell-attr bold -# setw -g window-status-bell-fg colour255 -# setw -g window-status-bell-bg colour1 - - -# -- PLUGINS ----------------------------- - -# tmux-prefix-highlight -set -g @prefix_highlight_empty_prompt '-----' -set -g @prefix_highlight_prefix_prompt ' C^c #[bg=colour8]' -set -g @prefix_highlight_show_copy_mode 'on' diff --git a/modules/themes/alucard/config/wallpaper.png b/modules/themes/alucard/config/wallpaper.png deleted file mode 100644 index d558bca28e0728152ee35870bfa956b85cc4a3fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1899366 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�(nt!b|*>0@Tw7{ZY7MQ+P{e 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

s0-e(?2jnV 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

*NapAf0jaz5$<2o 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

GH|9Yt97SYw z7)-@|_lc`>>xi4jxvDV#acbLLBA-RU23RZ~qu>Me4ojdGEMZTuQ&kdmbGpLrhOE+U zsG`#F$gnpq52=G^f+SXR!!wa2;O_BAri6*{1;kFOJEbFnkqUhTlq1HIwx) z#Fh9CnqZ$5=yi6n3LHM8EUlY+st&@e!bzTIr@i8#QdU8kYvj^(UWRf>#qcnB9V*UuE17;+qL8 znoR*e!{aZG(|nKTe-72X2Uc$`;kf7T;_7kDpF{9?E8xDmPxCdr_|v6x`{D7!5BM*j zzyHQt{M&yX^KKz8bFT4|hrSPUAJ>8Wjym=^qgUPr9{;0o=8rBcUwo>-wZYXvRS+T55J8An6)eSKBJBFw(G~P;q$4LuE>%Vu5+98I2T! zT)fV8=XiM7FqZaZgb)_HU~!px&DJPvKiflqhE2+5dEpVd9N9q#z{a3`JLzM@&}wjA zl97#ks2XBi9@bbJknA#DAl+BUSr{r}N}MC#3oC50u=>m%uAeB2tetH(Ghk+T=Mw+2bUbsiiEj3rlW{pklxLXd& ze#)(9e}ew*O%y&nVZx&Hm*+5rww?h(sH8_!FnYS)MCAt)!ksdix@`uU zaic}<3N-vcxOIp8dWtKwkE;9DIvS4$eg0W@Xw0n)Vr~4!(pberw=tr^dLY5RG>CN$ z4jHN@0Nt-6Du%7JlA1dyJ3+vm3>9IV_1aQE<~~g6UIlx!R~mmTvwU0vyfD4h6|<-V zmfcFi6^jWN5Pd0wZbf;PFA<(eWURsx%QK|FC8}4#L5S*ch=^%L{slm<)30YCiyWS= z3M~)#lu>7Bg5eZV7)i<*J8dABnDbY0_E?qgT6Rch7w}qmD>!B#f|%OM@Or{ zBZ4q&PSVA6m-mJ%{}ZLGIcCk$23)mDd4|+2QHQfEtrt_IPcCw}Jj*9C5BuSm_^2n_A<_{}7s)yZadHB@a|4r9c?w z8KRIeX0SST5bF>#a-R!5qYeaY87Ky8BddGK*@|| z#oWT{H#PV7btP(93WP9IGZ*LSFof?B!!WDW!5&T3Qtn08{lL zUa1q4zjdpP_f_UXo#El^3VE1{Uo&s|gB5S~?Cd0dZe4 zS$k^BIQI3=<9`K-%M7A$5e(;gyRbER!%y2O^oq<5K|nJj$H- zeJ6IQ?h%qm7ql?7K^_p6aUwqUfKqS~K| zX3$4+{qGJgqs_s*48!>*76y$y_zHq$PXXJx!H}Lu(*Zg@P5-U;`b1g#Prb!kJR6s!YhGcH=X?3d zi2o1Z`3LM14=eSGj(wJi`#aZ?58sO~c5eI#N0&>o+V;Kvy>Im9g5O{8!*4VX*G_ip z=j-M4eRdzgyEAw*$Z9M0Srfb$QdbQduyTA~F6xJeW@{lv7Wsg3-)X7{i~H+qb50jXfVudT?=ts#uUQ zYsA)Tx2>?(!WShyjl0A1B>>{#dE|o$yEat2DBCQd(_V~{C6uj5o37)|;gBW5=PHHA zG^9A2v8azJ&J22evHiJ^%t5SZQc8@VW*M)c#fnkEN?^Y7bQX|25#i{dRJk-lh;CNI zkY1@O=Dth=i}S1yr)p7kr^h(&hU`5pAo1czz4c}}`M4y!r-t;CGb>~B_S|D3KG0F{k0XKUzQ?5+s zNZm(53$c(~HhDTa9@kVOB{SI!EvCpj%+nmwG&Bu}Y10J1u*@=rF0^RsnujU6BS*Oh zQvfql97F#0QD2{)8HO98bs2@FryH8KyJ1wjVZVDyKrY9iCl21ie55RTXI>}-@vKoy z)Krk5IW;n~)Z?R5pemZq$#H^|6THl?08!@%v(S`JKx(=h2Oqc`*ymKLO{AC!Y;hB` zRaQ>fC(*H~M9i(BoFZdyP;yiS;`FlD77_UA@yqFn;+>k)S^z23drEe65=AhaD&d@7 zn%enA2D_&{rG{L~JC_+MJWD^D#hY_T(puOik0;$I2g+(7xD%-;qIv~?B&ZxAz9Buv zn!o~Se`-QU4$;|yW;5nHt$i7pb2i~Crs;tIh->aXxSWF9v^$?eUUsph{%rokvxZJ| zdn}`V^sdpHMl&r&dxm8t1h4~xk&!&Pa|w0RmvU5LWI0I3Ki5b^9^8kUD_~%j zXy`^E5KZz5Hau$K-r*e_d+&@!I51`Xt%pF0`?9zL#pNUqnIrK~%DX)7U%8IQh_Q2^ zfV9&2?e0sw*ptj+01tG_J-x-}-j0%)_3NCLzrmZa!{Y91+gSB52>s-8`;Yah_sO5G zAHR+yiOX0K#M7`dmU@{@42ovLL<-aL1ov1K9_46+-bbf!iW=mAi1=An2gM^}dBDc5 z)%=aJ@-yIMIiRp|gEOi;%ON%xV|eV?7gy~W^UjIsOA89Re?tjdXIe@?g}bPCs>7|Jzj^a5cQsZgsV-wi>c#;Zt7YKfkymMt z$YnGsi+!1@hV*uB zWAqKbi^t)Q)sfH6n)`tKBU}=nfo6DNL%mPdDYt-8c@f)sN4W3;;=PMyKgm(W&(M3y zEg?6EC>8a0A!KfU~827}Gevk(s z(9?aJe^zT$r0qHLgb2r_&n=Nc3u!|%z;4s)Ce6)QZxd=u}D^OrqU zs6R^nXclB|jS)@wREE!}kAPBC4Py*hEcL>smU|mJlTQ&jYs>O(Wu3XZxC|%7%-kc` zSU5y2B2V3iH_mh=0{VoDH-KLRnH8lfQ|OWluJ(#SMiQ+Muo6{FPzZWJZsyqS$j)yY ze#be=$}BncOyQP>89>!a&Ww2fdB$K_9#bgpLh`WmY-9yznm|ll9Ah?>6d5isF_$yF z)lBFkV3L@3&mj+q$#!b!6!RfY+@N_pHy|xWS5Qr56;wor(29}-v_Qwn26ACsRnOrU z!l*z@z_i{aG|(VsoZ$itQ2K&GN|-7n1FQsltZ%6@L#AZSEf(_}m#<)zY~$HKQ_9J$UW_f*e>_qsp^Y0EkHHf3e7M$3NR=%o=}6kGzUn+ z5d-(ypFK7-kE^teHR_QMZE##uPT74_4r2{+AxCLJq)s#xsuwohV}#xt5V6V^Ufb>F zM^tP&Cq)iZ2{TfbMAq4iN)pK|FnHE!j;RR_V0fzEu9JxxS`HBtQE_*0I@rcWp$m>A z7J(#{-d@S%q&V8i%B+l3GN*dNOAL!wVbkAgSfrxRd52f6l5w}Z_Ae8b$U~e?W+36* z!#5JjqNyfABC}waE)21bwG>5~HoCsFQ7RBMW@2xgZBa1#f8`*DuJ8nV|1XtiN!l{qB!*Rvp>J8t}sAvD>IwM}#7aKp(LS&W)E zn}jYuM-ggkO{@HW<6^c@o5#1E;1AjVX&QI zF&v4XJDtN3iJ-pR$V>f&8S`46HM+(}oPcuP^pe?!f-<(bvN`e8dPc=Xg%2^+Sg2&0 zpVJe3Ziykgk77AMh`5T-bP8k}u%zL5kvqxox!uM+hlro4pbb+N*+V7PvtMM(2u+<= zdmZQbZxg%l+`VV>BTy^jAqKlHfc4?D$O=9gNd`EgMDs;!G&QK7BhCmYc{2CLpa@QE z+S6AfLT$bv?n5CXrI+aJG$@uU_sX?fYtr`#M%+!VZh4ZcWSOxn=1nfSG2BcT?i-C7 z7N{qZ7g(C}Z+lYw0(zv<6 zQE5POS)*g*b8CPQ9*IRkH}q7rN0G-N-Ib>*sjQhhuSK!u0%@EO-ABNefdCh1o+pmM z!s0$$)-5(ePFW;OAaI{)ywjSikJ*qe?ky7}Tc@(Cnl%Ta-w6t$))^NifK_A3;*2Wj z!g0!1DAe1?t?HKex2`L<8wyv~Gb`AD-{M1QjlC3UUm+r63?J@7oNfYx{@whG-Mtv{ zyV|d1IYGok2c4Ik)`Wf)j|08viYpi=eMB`s#W!g6`ko>SwtFg|hn^ zK8|K_g*eF@5c$vjx#D=l11R(!r{i0Y_^ti-8h&?&PQJ&}_!fQS73;-Yz?63Y4mHA; z$2RU}(|NmRd~uEN9Yp<-2!Q>2;X7FGhOhDV_PDuRJ-_J1P``Z=euCy+%g85mTz;Tv zMF*sx!r6}Rq4EoQ!#_Z9KLmGQ>Gt2l-QR+^A1c;=BQux}5HBxa*LTqGGt+@@S1KO( z2oUU1qu)Y$B$QrJRHy3ku64Yfc=6DN^*p3;Z)tXHf%nnaq z7+qa1#ui*z$Y$3*W%r>1!hMARlba_Dt}H}ir*u^Ft__V?L)GYHlk)84wE{A%ibR-M zUmbsT@=6R`A3;Shd<4@qVOmBZp2Sv_gqoOToIkpM94WnW(Bp0#8`E&wsOddm_-RMD|)&lkq$MAK$#t>g}LZ3Qz@@b zucm9od@hToP^cC9>yb9=-sBoh5Oa%8zi!|(H9DtvEX%sFQQ(DPf-9=fqH>p%DyDu@ zxg??Z5PCoDAPE1<{ZY{M+KIncdVq`V9GGn zUYoTXGI!wEORuIb$_1&dLyl>rZj=oOLYgR={?uE{b|!LNh|$O--N-OQX@!xIg{7dF zT!z4w+#Nb+g$PY>-P^n_3QK>x7;-^y6lOso)ID`4lBk#?a6P7v=-}DIRcDqeHoxck zQ|1eECd(<(v*nIg?1XYkmZ{rET7U)y<~5JuR36mKy0Bt*S2Z;w={{u8-RV9;;56-d zp)Ta<2@sy{rO^yAcvuw}Dm@@J`S=f0glg>9n5PhmwY29Pt3u=u{t{t7s{w_Kh&9aP zL+dXJQ)21c#87mmrmTV}4DJMl!D7j1MlmxnC_@;Em4_|BHFgxL@HjEh6a;!va%f7m ztXT~TU%oq7gN$A?%v5fmC%Bu4$FQOv~d zsjG^mX#`J(a5;H)6u>nkM5#=}cG1d$DS2g8FQ}RGAZ0jI%hsA` zSXSfE%o%sEbCNn3+v=n?%J4|>sEm_ju}B#0;1cJttT-3wfP#}I2f@SQh)}JZf`ldm zWC4_iLzV`a>1-VR85!;}k>nDWTO-jI4Zebqsv5UUjwmv9Fm!qym|U9asj4hqDT1=- z`SVOyDVk$z{=K_%XsvO#1}q~y`;VYjp#P~52^YHEKSfnzG<>+7#` zoU#2nAxG(JdoK79YD*_FGPY7?s=3y6M(>?*bO+wq84z%cmM)&nXOtoq#Ilh%8-k_a zGPltOS0=;G+vkHHC`{(=2N9#A0lJ zs6d5m7sw zLp(k_lUtV&K^kIi4rh?E^Yd9M)|uRwL-ovsBx*;%!~UAqvyjJglrxkPZ_#G)l$@jj}`QagMACLd8r2W(;~alaE&(EE*p}ppi5&4@XV{ zZqnRySE8Cq%#nO@KH?E3gklKp%Q)GvJgQ8pc5ta$;`L;aXK)cxU)_>u=U}H91B2q4 zfGK8|WSbB3Vq!&o7rc%D=?7hRN14(G2iuMezvb!&JTc%UlUNkswB6bbj<90ar86^D zxB$y3q)$KBZbrN^;q2}Jlx^g4L*WYYT@$>Aphhe@fAz9W+tR4a9;V?GYK>oZ&E_r= zSfBD14AEx4UAV!^i1;ew>GCs|O{ZU1?>fuH#UXp~!P@9}5ij}HO!N}hjSUa}CQXx# z9l>23*WKoyFxsDC0K1jpCpywDrQTfSKE^cn!9G9og_b*T2zjueeJhN-pf&jk7&uYN~^dMVMK%FQkVF4`TIbEGVWc~c@m z8m7r*z6-sa64>4xx1(>{`WPVD1>VN;zf4P2T~pKO8WQ>$Id9?pIqQEkgP=G~7`rH1 zi|sxnWOE>g!V*_%2cN7l#!^pnk|S9v+@~7Nlzt1 zNks%m^H>=ah?#C4wTnovGjl7Uz8NQ|F{fq>NlbNrBv}Z$%SaDM^lCI#P&6C{j^^j& z;?*axV71Vnd8OxuXhD`~o};)10je?7t_qR}M`VygNN2dbiT(035Dq6zZE$33v=|;; z@S`mPofjvC6tXC$M$|L3Su<`{Mo5zq zN6g84#TE&mbjCC}JT!+3heL(Ka|EMWb8u0in8rNSkSiqyd4V)?3^Z6yM8Rb~&y`)x zV6Nn-ei>t?fuhzb%BI}_pDBdNJeb!<4}>I0M9g&Ol(g}dfGbCUNSuJzNmggyLvPgV zNn2^Ateko=l)RNec3@?R2}w9a%gK3h^siM<%Y&p7U;(PW&EJKgcl2MUk5T!6TuOtq z@SrN{m354+Y>!B-|?2IS4t zpEiTga>^V;lWA4lVk0?i;s9_|>hPc#0cD`G(3~Ps+)_q%B)uy=LZIMqMM^%^)J8rp zfiPCeZz6~D!=urS7{-8H0!beXxA>)l1$a(L?ERWb;cz~H&>g+W;5%af*wUx zA&2~38+HN!aug@$uMW^pfIvF#|ZXo`l3jf z#8j`xk!q^kibn%Y`=9a#Sp1tZ8O_V2MT{LXE#m2(sD`x%v)V%^Ww@Bi#5xE+NB(oC znz}kf^f<;C!YQgwvXlYi6mc2uqWX*B%2M=%AYyS1#b@g3oRL=%=*0(~+DgF$VX7cR z;uPgu3j{6=n2H{Af#syJ$MeGA*Wr zIx|!oeh|sx?l(|@WmnF10E?)K!p0aJsj{7TCz~xq#Slc5clEgIc~V}xkQ!J({|rS! zY5B_KID(DON$w4Amgv$LDs)XU)~u>HlIrB)J%iPYLnw}wwxA^&_oOeaNM~o!&#EHy z$jEkh`Kx=Y23yg{pjc_~_S~V?J-p)UP>Z9TT-ZV9j_$zzGNJGsKF;zC*MQq8f$Rqn zs*J}J!!uYs!o00!Fq>k6tG0_)OD73@CKkl`%*K#!ef$yG6RL^dil(IvV{IPc(2o`E zJY92CJS6CKy!f)Q!Pj39xSuE;wx*R-US=~R$+HR!o5xZF04F62s_vt*;(JO?CJB3T zOr>QzAfu)%^sfPu2PezLMAIobFKph+WC0rK?!IJcMYWC99$a^&j7sn##S9$c@kY8< z{A7bdF@`VrYvElzssK$Q+vOe`Yv0$fc@B~3;)whcKF9-1w&a%Vp<)O?xVTnENwE1n zQmoSwD^Tgm7eFSRtu|uI4ZbO#aK&upR_fe%@x^(%jH}v^xWUa`0nFJJK1{+{)Fy53 z=M#Z{c3Dhfs#nIDwA`^C_;vNSdd7oiLB0)R@jO_*jduHj3<`2nF8724c_nA!=d*6$ z9jJrv1$x92V0yucyQiw`p&NXG`pH`%-YazQQIvOi$;&7I?cihH-f;sv@DdQYfa`sD zz=!30Mac08ezlqMeP+xXCVDITZ;DGif$dMe+kAuF$_r;{c`(Z|j z8_v!>hfbxu?7%F2rho0PKIm_XFlj=kaI_oAQ=GHN7Sz;dlk&)*g_ZFr8<)w`J}R69 z^CE=5YdXa=H;x;!z1)PjpEXcX__$8R4E{)HZFdXQ_|hnUyfJmW0T=&x`ZHQ zKF4aDQCGrGBX7nWL`SeOv~e zQq+t_=S%;$X)VU##lnX;bxsQ%qdE0?q223NWpfEd0#;^PlOVa7eykZyNAi$Tt5{&? z)Ev57w#>OiqV=VSjIsRH=k^m>V&0xdonQ?UE6Bm{pqNu2=MYr^!V23n4^MG`o?|YU zu0A-L$pr&Um;ps^pG0YaKtda^pq!07szRAYf)dJD9T*`1H$ce0FMt@i?zo5wn}XMA znGj8#LAL^D7#OJdaPa^$D*bg5uF0LEF0|BZm$m}MsZoIp&#}uW-v>twuOJrqqX}Y& zq+=Zqn#weC#dTxOO(;XAsa_t4wW~~7MqPLrgSI*Unt)l4 zwMwIl*5s=!F+~PLmJzQ?+Fv(1LX~t-0d&w?`evWhC$Ea>@eLw@OfLt4ITeVJbhzzb zLf)7E8k_$R`<<=RFFpS$5R3`DO+=&wj;8I?;yjGoRLUg)4Av zjclwk@ol~YF_fJ@OAKYH1p&0@qm)m%Q_98=#dpXBFkFOcqK7Hc)c_?wbF$|G&NF=) zh@?m*nMAsXY;pZP5?k|&qPiz`>%5V72dLxGw;=-uPilcp8>-q;4}(S;V9u#k;bCX4Ss*iUTQz}e)(HXYM*1^cL==ar(hrw0MUB-W zFyI*^$1TwaE;Ry{;Y7kB!ZuhM8%DCMJLXJ%R^RjnQQsm>x@uG`%YMiA3due-c4tbzYn)lpv7S z78LRnD#W0Jl?cA-g(~$ZIDio*L*W4ocQ0|DpS3No;%*X)H+Ue7Lz1qSkpi6Fxzjyj zHIOUN{-Ouf+)_dpK8>c}S;^OfGl@^>=pniVjaQrP^TFXQN@{vqG2K~awo91|RnJCu zgNjKY$_UI)Jl(U&W@m-jV*50;D(P_|G*vukei20W?r@(5>(TnD?@)qaxz=WbDUBQ; zgvv3^gwtUtH;R`(I?8Jgf%$YE!f zz}ddD&ooSQZt}DDPrs-r#&W%uL&JzwnHfg7lD(j!(-35toTs6QCOSL(t zmmVVG>Qc&4=AoVhv~n@m&A!b*`bu^Pn<%F^V9LJNMr@5mN>g$3PR0*$n27igSQ;PK ztV)Z)wrdIiFb$sx6vK$(#$K&w%Fw>%1Ul3 zz?lgj{XE)C?)BU~ZQm1QA1rf){1AH%?3OE=vq_;^3j)UO zEvQv)@uoC+n7;P5Xk{X_&!0OQUrE-sIC#jWc`WiKm;F{aD&duTC0`95KS4G2VQ+VE zU>h}0H+g;x-+m14;v?(@um7I!0KNyZzyvqdpAwuK35Ww932Cm2r=fugHS~r zw_v6kw8agx8YnQ7ve2HWTyERL2SSQFuM7zT&vLb0gNdAN#8_bh+EfK~UK*4)b4F0Cx@xw>rrIz)yS?=>{l$5oTXiO2Sk zr}l7n{Y{g$h?Lbi<-*x2`DDrbkfehCw$&@$Y@O0rbUbi{5gUxk`3uTEg2YI`7wn}&Ver^HTQ(RGUrT;`_{HH3fP8@ z4+mGN#FlQdWdctuP2*x2UXFUMx(0o?j9QMp!D6vFaI8nW$*r#a*i`D=s^@i~R-uKf zmCEDiy?DY+mqlL9YWmqn=?buPLrE|vy;7z^FVU8nG?s96Eq8?6KJc1fGjx)18VJP3y z{?q{1>1$F!8}uQ7Go4;vcAQf-ZlSBZ3uz;Q)^GDdGU2 zFb$3r=TVgmN3HUdyahwbN-cr~%V)Bai`TL-YBzOX`V!q|b1l8$$>I&9HP!3)e4!} zHLxUv?dKetn`v@Xa%b=jRl5FXTPCW9WITy?%yHEu0)@^3cy{{j@s}}1MP*ENrUTXu zGh!-XYPmFr>tUfdO{)Vdmm~1efi833^$ISkMRda8h)rxe%i^}KC$5r@(kVvqVk^jp z!dr2J&G1BEDyOfM9-j&G4bFX%c;2`4*9f89)M9u$q-0CRgiN1=wimb8)0HAr#z=ls zM5UE~f0`H7?}l3EG>{-Rhk{(}$6Z|FYxB24=?_95=E7awjBAAWwm#*csd$-oju z3crC!|MV{X^mRU2KdFzYXFIn8S>+BiGq}s=(z?PzB(jqWKP~Vzg*# z0V+&QIb1R$OP%T8%RwA!uz@qJf&n%2;S7Bq;69v=1@C8OBz9w@RK_WK0*$t@Nk$%3 zM-nNRzSNG>$x+lyC=#K+3acn7Z&+0f5i}v!b_ubjmKS6$z=;&z%$+Vx#TP;xQUZ0< z6_v%LL&uxF#-($nGOv&VBUBwynS$$Ml^!%7A5*zzu4C7VtsJ;!Y1W;uz!muh4Iw-o zn&E?j5SVFwIH61r0!2x&^9Cv4PQc83_zbEvfiF)r7<6n~u1~}`fF#E3vy*80hBT>$&_R{o_7y6kyn5uFna~5?)rw@P0Wkg_+N*JN1 zrZOa)Ayj5${nRPso6R|&Ei?kMi4Jgty>rZ|BS6v9u`?a{(~i=sE zEUtx&wbPbfjLpP+?xZuCu~%0UKEt|O=&4|H^O$SqLS$h|Ycdu%9ev#|h41wR=OcY} zIS$oh;6R<)Vi3Vm`5YuHPvXopOAAMcl4a4qi{_`9i(qNEFU~bw4~|nT5y=8xxC>P_ z3SzGZGq}Cs-;0m8?gcB@+~R`Ol!t*ISjI>HCC52E#AARCD+dm!Efjv8DQFDHNvPZn zc_a{~Nli%;_*A@SHQM*9s0P|OpSi^e<`JTL82&zW&eSt*U^obcnJLLJMjD38vh%5I zZQZKs1gb^bfHMjk%E(-Eq~ke-`*40%0(r}@yA)w3?okp4W!lqH6dLvw-hXM&Xhi#%vZ$c;-;n_M4?rw7KYh+a4cC4wI_u~ zK5-mh$MM(rd(5<+Gk4uknI~CjW?EnRN1wZQJaVcSzWju%JuE^**lQ=*;(*0>JkMcj zYU<};r8{@#ZRx=o{``4PS=ztE1Fx6vr5KjehM@0aT<-X-@8gztICDm?BpxSY8EVmm z=N+!4VJ1Eri#Bpo%B*Mw&CcD7m73sv|6a@K%3DKtJ0rqU)HHc(_ei5Mbn?N~pZ2$& zePu03<7zCXkhu=Hu(6s5Zj4lqhYLla5fE&~or96=}FGi)b{6#g|>pbsiM3 z_#_ItSkR1qtvQ2a?KJZiLhn5Fbqd)Y@dV)M8EH|;&=<$1?DpsiBj{s@rAL};WiXFy zLW5V71Q7}QrFfwBHp)<2iZ}9^&g~5&YkSEgW_Ffqi5hr`vvYFULO69h?6)Ci75v3P z5Miu>%|H$hp@V!Fes+cuI$dwN()SGA?ohKnSRW!S71YJhZpQki{Y{AtWQ7Dn!%VxK zITM%K!z%Xn8N5w|*!0TVEb@-JE|S*G{P|*)d?Ci@G%UO5yk(C+y$Hil;^(RTjT$W; zs4w$hc^B}6xy%IXJ0#22dELV49>|IpGTVzu_Bcg8wKD43@75`xseJVaMDNc=M!}Nx6zL~KKmmG;u{4p9^Rg>J{A6nZ-i%D`5H?6 z2|6zS+y(C;(r=jp_(Podw?E}W$n$<@pHRg^{{Q_CzLS&x962U_@*(AKZTGl zYEFCuJ@Q7Yxnq8xIzsdH=lnf@`2#}GD@^ovkY?U$p`U-M$7^-}FgKdlDq8qM$Lu#R z`{|AQY8^7*Dh3Z1Q?C|@oKdOMnRn(pDxWq} zY<7ozwp)W^=}myjvY{idto_icj{Rt+3pgDX_nEES{6d`W2yOw%K|co$JO27Q&%xoY z=OpNsjwEFn>C;6MXe7U$r>iN4EPqz%h*KLKV@_yZg0WoT6r7J7h^qVCCYtK+OHbLr&r(J%M2ykAZgCn3U z5j*{FPv`fr@#J(3jUecf_-pvEni+^q$`Qe3{SrS3^MbHu7k zkj$pJ@rwaL-kdPxo??#9$Gfm@WHd{im?z!y3FdYx|E9(Sw`tUP$0Mf@VH`6jzz78E$naB)s zpI;2N4jMFAY)vbm&BcwC`dLWiI$qHoA$2+^@}}U~om#P<-4}tfVnLqnLqrV6*a{#N zk46@K2T;g}#COz;6CH+JK`tz1gZlvN5IBdQr--Q7c*0e$+CRTY9({6ErEpL%LjO0mVK_bln3wUCSAkIw1XaU^_$G}~1qaYO zordIXv|a7?{%j2&FEcR|&u;gkyw~BF)Z`4gSb-)56mNGF1z^zKIdza8+(B+L`+y-e zn1>{NaPa@|v|pzW)2#?BP3Bd*6`LsC%Vm8sI2jI1v`Ac_--onw7nelgEUP-edI1n7 zLSc>TGAMKz6kA>{G)<82Izd{Et}b8WmK<8eKkhVJsRk7qT;Ot-Qxk% z1>P^K?&^OUCn#R&61L1jj^TudKQKg~GDeb$bZ35F>j7DEeAVZ%OD>pdxUcD(s#h}8 zDmQ(VJhjaI#(;1Bb6K^a+Ob8BAi|f)%$%hA`1{ugb+QW7<}I!;cmxesgEk`cUot!s zUaQg0CK=)*OUJz*4oE4#w+m(bs-7vHmGLmsoIXxIvg+3~=#J!EMnX>=a~eycF=J;R zhp?fV253>unrVBY$bp zIyGr$m!V{2brdCf@qt)L6smv=Ocmf5zC)P(km#We4{NC@a2G|7vfNx2H)X?GnM48Y zz6DM73wf{r$p>0 z;0IU-uYS9Qfn1%bpS7;NA*wW=PkoCo_4aC-p6c)>U44)K%EjsN_vYu1(T5L%?(c^5 zpL_y5F(7U)!cWi}yiW22E|cJ;(q{(sfn*SQa--=O7u z0?RHh_1$&&fhH8+Vb?!}Li*=_zhd}THe0)dwAPp_I%6I>kuUFFX5mNL| zVSfCBmHs2Z@*hS1e{*xf>l@Ffo!~NEzN5ddji9^vu)I#&eH8(F-=q0RF8H7N^XOy( zeD*bg&Ljjz_tXR-yk=r_D3{wfi!Jytlboe>Wppl0HIMqdS0Tv;^eS{&U0zzA{ z&J_df9mWc5l^6m%_|QR#CMv&Qv6* zi^H7;P{fB*Xt)aP69tO#U`C6@E-(NStGrATL@H+m&2ryWO9NC^pIlR3$O;7IrbOEI zUzA02*w3XpYT3x9F`x!;8)1=pxSy#LEuv4}M_8NWXDdWc9qkl8a=BGgAy6HI5V1o! zCI{Sd&$F72yXZ3Wr%3QiN^*yi|4$@%!U+T*I>~T@sY-LqbV2u}2u_?T{Uqb-M^>nh z@k=cD>sMRE*u!H=RXup@>0SnqVTA(+W8N z5>DPXMD?HyxbLD_aD>IGSB|Dltkh%3-$Z>_b84Eg!lc1sL?<3RJjnZczz1z2pCQK1 z5QGrwo3JFo(;JySN9N_RHHY<_lY0oEI;BhN7=o^swjoI{3?qcNJaPb&U~10QPmbc*?aD39xw*nAB2auZff!m`s6jo|FFP zbS%G_(96n#>84_DVR(Wm6%L1o3Q)um>5q`QkMUU!0bP8s91w&jp>AgAmUBW5miRqN z?My*&aq$&>y{Hx<*98Bmq<1g;yPig8MqA)8sqd{vcBDi!J@ z!zk1=fQ_UmsRA%lf%^DG5j8_Sjc}DimW~NZ*$VYNDCZ5mlV1XPs^l*2cjLdiUkgZn4ghc4| z*g9H@gOlK^^&Ccq2G9Jqg#wGIsvQAPi>MyppwiOZKO%32oWD*}tCP*i^+3m`5fi{> zjm;KL8Ll~`Yt;-z&y8XOOT`^)olPv;O&w&Fo4`s4y}6*Kz4m;p`2Z`gM?)&U`k5*; zPyM8hlN4A|n%DFyxxOHI_>-Cd6(LVQex89r*#MD9VVfF`Dx zHFmsnBOLG?1kAK-v2$rbDLzTGn_A45g~*JDW`2Vb|5ajCGKHeh2$moqN&q?-^ll#Z zB?6xRjUt=F)9T}N5$d6Uj&Yt7{T8a3j}b8VVAL%pnNJ}igR~|&&gFEc(Rdneg_*nu zHecbZE9r}IUj{D2cKYN$h(QUW$c0hGS5#29)X7N(hf_s!?jb_}Z^i^OcuRPWk*BgM ziy@SOM#ap*Q6a9}95@6hFPuiKGUcEsWp0wTg;*B{sBw8oSoE`PPNcvvlMatUZC(%d5M^aYPz`qm0n+7zAc4M>m>t%9~Mr&9#pT%%?A!e0#(?etui5SJh zqt4R5CT}=rmV4cKU5L5Dgu@N$Q|wtiVU!Gn&-EeFJAjHJ21S4LIM*Njcu7v zS~=dRy|^p7+{=~cK2OC(4*kN6Q93WKm<^{l;Jc(NU9XD8sk?)|AIf|#6vMWUwvBTo zOYaH6ujR6LrO>0C>BYZ#88*C0f_{z=^BenU-k6d6(9TtsK8cX$Ys07fUHq{al;0wn zza2AtQ&Bw!Y2rKZ{O2Eqe}eq~#?`xjRDOpdeF!uE_6Po_zA1jl3qS{et(a9l zSex%J?){3~UgQxJ2A-3pA9M|P`;o5dw$CtKzI!#i2+Dp@A+N8zX@76N`I{aWPgDx* z`Q+SXbl9dIyg%#hC%dZn)2xBdC9vNC{k!kLjhXe3;K5CN@d&~8tk`>w82PN9e*8xF z{N0OwxBuj>>y^)>y{{}gfZKX_wQTngjqB012>NB?yMg5;SK>A!ONh5rzB5jRJNSVW zTNrHa%R_ecR@iC}t)$tdFO=mjSJ#wHD>{2Als}SG(jO5m@N~djQ_0zbN&4(%TAIIJ z@B80`NsxGwr$Yp)^DCXC$_o0t9YiheC%YY;r2UKw2Elap)DrB@;YIi@^-iQ+k1UiS z2Dq?{ST`t7HnMUwVF17Y3w4TRWqolJZiAX5&60YX9-`1(c(&_NZ&%A64uNou-c1+? z>3ROGW+m|nioL*r!$cv&J)nO;>`9@fkwKCp>~^y(1&%@e{%d~$J7s1jmA zqYoFB5TY>J=o^Ut{O2##umAmj{&&EmDVFZLe}?R!IQ7z%^6Ftt7|4+Wsx%IYnJP$k zKhsHgT7ssL8dNn+m6;Z`n_c7z8>x^t9L%w7Vu{`N($&lLh|P`gLOp>9LdKM{R4gfd z>^X{Dem<69T}y&wKzmv!GRVOk;If6LBy>cID%=^Jq|2aWGT)&J7g6yMTb!<`mgeY9 zM0{i%U<`!;a16$%8dJo%8lTla>t>+3^2pIrq{>N@nDJ8;bh<2V)svbNH^R!Pz98`O zGG!&;9(Ejd{P!GAKlC663Fj$<>OrC4sDk4lDKem5qniPaeA)z1=y80Ja*nXEb>}cUf?yvpXW?+JDn9bQRD!2g*Q?0bc362gXP`9~NEsJfRXE&{@oVKSUhrPh-!TFE8Jib2yi2q?!Y*{ZeLiahn)_U@ zH<+{zG}#CsID?Y`rTeInQB1_X3;|xy&1JZJg&o;Qo`S0Xcc?+c#uzHDIi8D6Mu@P( zyf}~tNL2C_7dTy|KD!cdXF=8L5`=VCMC8!&(9QEAjZahiQj*pXICB0@sz==CwxgFq z2=l6_k&~tnR^?98)Ko#|@DT@%iRIbKz*#&6@v+-_jw}ON;qbbN{Od3Z#~H&-k}_g% zGy9Kz{r&fUox`Ai>DL+diD@_K6oT|KSU4z%+C&KTgsTZoEENz2C1!bvD<4@npBercQRrp&a2#L5hmd0o7@`hPgoox3`uO`7Ov|G=P53pQk78qq(1fBe!p0BDi{r z!U!slBz$Qtys7C!dKUufSI^>f*;1R(%&W)6O3$nwfgowVj%yTwltosY<6B0j0xlXR^?C3UaZu@6 z|7AEuz(A0o7>sh3ZJ0s?MsS4@WasH#`~em7Y;V(JCO8@SU=rz@p3Iw!MOO$#51Uwc zTEAqFL(yFm#B1|8&Vy3!j;aMiW{ylSPICSbCfigIP3+tqA|6~w)0A&&Jzpj=Mm?Y5 zH^D(hP_9!rh6s+Z*-uY3@!2<5(sN}z#gG9MI)~!OZ!3gaJaMsmGOe>CEZ$o(0t!()sjRi(NgzL~V~lh;$ppMF1a_u`qow+>;WZst$%_mO$ciDr8VC z2TH>UA6{`7>6KKpLCjO7^aNE)perLdLH^qy8q+ALPPGYzE}(XwQnDhhL}UyWgObzkkU9zS{X=k3f9G zhWPdqUhJourWQ}o;)Cjv55Kx$_4oiirM!F?AY08No1TgC8h_+#An);BJ}No+@+RWF zgqklU-LKSk{f8GJ!$aU_~Dnllt;bxBTSCB7ZbN- z!560I+qSsl;&}by?H~sl;)@qF0q%sZN6yUeTG)RB2EV>9Qrvzb&b=Q@hVXG@P zs_el!Q-BX~%i9e$h)6_Q#uzk1Y+X3%o{@l3vmG_zpetgg?!owvv7rl;qYT)rCDE;E z3DSSjXCztGui>X2YJa;2 z7aM94>9P3%jpB4Q5Oi^~zu?C4U*WIZ%~P#O)u2e29sle2`hWfR@4v&K3an8$q0j?% zazIRlJpC8_ki%3d^wUG?G2FinMd5IA=-2TD!8lKjQ%HQ7s!|ZNdKHYYDHA_`c|2vN zRuE6Oo6GTQz^4$Xnv456)^ZF;ItKz!glYGbM@U&|)jiW`2bfrCDC{6Id`z3i=$O?o zo%m3TGpxFS@C=M)Q~k&E$f}v8im2I;U-Y4ckT{8wTTDa6N#af?K;bxj1)7%28JEp^ zB_+iuCy{SoJNoDvyCmg!(>*ZIAW@%*j=5q{f(b1rLZUj?8pw_|>&^nGk)kyqe#!_@ zf~t-4R2T%#0buyZfwzcIPCv~AqzXBP+7W}c5wh!;FKUdYPT|l94o=O{*BChd`a%dS zoH7OklrupFq{@mFES)3q;UElVU&r6$@8LAaU;p`w!@Ux=%?^NmIt);ifEB{Ukr7@Q z7mDXO0%23LxcH&Pbqt{!th!(Kj9sJx3L9aKH`&0`v$zz1r29@dLglIliIY+9Em1JmtE%x~uX{kWXf*(*#X$d%U*IdP4#$isI zfyxp#m`~YowNspv`11Po{5Yc64Oe*`UF0qmDoTXEuC8E&u-TSeaA^_AET;^IbIezF zGVu9e?0A}UGX{=6JVxsD3X^ux;}Gb1{<5&3JWM*DOp{4ad%K7;q&am-DEZkr)peG- zy_9=S)D!8Yk9|0|C1r|?c#V{+0Ss1+8qQxcA2Gsf4I099X|dwNholLOLg$AE06mH* zR>Q?W$9+%+)iA~x3DyBGnb#3kHcO!SOXeQ;X7iW3w+J?t)k6n`%RK*maejMS~MlRm-_#h{R|YKTK_1Q(=A zAk7TU#T2OmSA{~KU{y0L+3S!l>?*Zwg?h|bgc4^36cuDD9|IN{>DirDB(sVPh*CKQ zVXE{oGV4B$5fPvM#Gq11|CJxj633@X#C$9#;4hJ(2mj;p%jw}W3lX!w3_4`|`ZW;I zGf_GygfImhV>pK#Utg*izdWi!CG_j7;s*kJ5(s3thAj|9U``K0jATYYm8^Pb20U{n zQO@lvjY@PGW<}S8V2#T1m5Cj8p1oY2r3heqN(U!PVE!kXMs~P^5~UpymeNQcr#n3* z^%HXma}?4cG()+lSoraP0A&b(FF9G?&v-JT1Oz&Mo#7my7CeALRa}A=!6izL#vj4N zRf`TczoNt)Q5CJomEmf(%t3)5PEE(~>4-krQQ=IU3GiImNurVjyP%1Cri2=B&cGiC zV8`(#azgYRza%q>AU>k!a(4whw)7|(BMyEHz}%Uvpg0A@L8^&SguhUzq7NTYW~m*mMhg-&D58}$%)zE?go?S4WB3?qrUo+$=7g!L+T?h~ znu}5agxTSsk5l!4i2Io#of*GVGX+corr2dO34$dPU?vDG3+gp9(RxI3FFZ3?gBiWT znePpo?8r8mOAmIYr-G`&N0$afRF2O8weTMIj3!Cn1b3Qh+)!0O!|MwT!A%|r(rBt8 z49Mx0(qV=Q*rrSkad2iPSG9KFXkGn==}EP3I;7;>X{$5JV{A<(({oNLBwUhO!NC#N zc3>fg2)~4MX^Iq&dgeX#8Gb-T%Bx}_k(oul@^stZ9 zrC!x?76dx3!fnFO-6pzYv?vr`l~wYQv6O;qxI&$Beno6Bd{MP_!|CgPKQJj4qt-m}<#@t0P=y3V3!ve3lC0N$dFNqk0K|zt|VOf@}CzMS1r` zeDyncg5mI;9P)ehCZ4e8+vmXB7vhUwcyzs8sn!j8conUD(Nf|<0^Dy5FR1@}nJD(% zhc9mcp0Ig&jaXBj0K_*J{1LkPz0lZKn6bQekbbj3KQtEKU-sY00OtSPi#&5h?sm9O z8rfIxMZUhxkE9OXFkRl3AfF`8d;)Q?tCr>UQuubK+>g5FRl;|)3vL)N-vhn!kx%ju z{`L)!{QW<~clOtxuY`*q2m%L5Eq%3b4dzZ^7jaGeslrU=Y^%YX z?NY{IInCsHxq~KU*`5fe%TB6xuruq7)8@2=Dc7_+yPA|vi8ke~r>g17PMkKL4Q*QR z?dY#QYgr5R8?{-K1dQwRwip7R({<$Y|6%UWmLo}aY*7#kP$whz-Ze;D7EF|v{V~sK7vm2 zIY)ZZ3Puf)i@?KDFqW1sBTI)=QFTAm$!!hd%uF;^#w3oj0=F0UE*9xG4VQ>`LF>}rEKv4? zK#2SAULB23R3!&q5n*Zpet-K_`+LUxCEK73;+XcNB-BP)-c3zKkr_h*cZZ0TphE!- zy3m_`V_p{1oI>OXWMcdpD$~STY+4Z>QfWm*kXnSKnMc3dtsRzQj*fIrXoe|tO((&N z1D`s#F3q2osamV)p@-Ut|5X`wuNBJ#OI$Od$EF#-cHrrZkS0|ZW4uccqA*yn49Yjl zDLFcBrl)*C*(#>WPEpv+7<6~dw|sO>uavBME+7(gYO}+V=V4z>Yy%^IdZPz%>X~y= zyH1#qkA?Eq)QwOg221g-M@WRh7-Oi*G^Hm-%0ZQ9ohf0W>}T8TUq024u-T)@9rKnXe)S6Z)$gU00s?3 z^e%)pKvY$vVGzmb?yZ^GtEstn$Svm+o$n%0y-m+U7J_IoV+pg&3{QbSB?BOFu*^M- z7CbY@axo9HJ&xGtxxxzvDt+%c*>OKSD{y%*3DP@p`QC<4%Su{dW}IUx0M<+(5rKmt z2EzsFAUTx_J7$4;xt|0fY(*?e3)D z_KFCRdub!e1>_ATl<4n0k}zRbLbQyDteL!qgg7cpt`}o27*L524>y4&gg?vym8ww0 z(1)PjUkU%xO~cDeV2GT`#nHpVT~%`km9(B3Im;d`N8r$qC=MP$7+)-edkkSIXZxVw z(aQE@G>NOJ2pHX&7=D4CJ-03fbx5P5OvXbYtn@@TwHxevek7F&$W9Z~(s@b*)zoZd ztEbt6L@*qp$p(Pcpo=|VD;-2OMgr5+pdD0jq$jl^O>R9WrXz=9T*zUE!9%96KmZeV zEVoe0!K|4@raBi}L`9U+M+`ThEyNMJbNEVOCX&y7EDcM}-%n2g9#yg((zl7Wa| z-cl1GGTc3c^gD4+8cpGw$)S*#MR3uX36j0^wZpJB%I%lQTPZUVRq@dBRnJnc`{!K&Dk z61nPIjCxpx!AUWi1|n72FYwJPU#A@fk0pJkSr08y!o4DZblD)lBwI*?M_#SW^i@*@ z++%cIL!&mzHYmc0a--!CpB_8t<*7Xa!bib83U$mJURyiBGz*v{(gUv<%jaN@(=iT? znZ263m_CrO@%r-me*d0+_yS2q_SpEw`cq{jp(Y2^X2#io=`i1ph?)IBwDjX;FH#Xe z7EB*%I^4KE-_Ru*)5-mLX834y+3 zlqMRUq&cYSdJ2-hmYUz4Dr8Wq2E;J<)2I@w=yGai?(T&Z0itT~F7AZIz_QQdnLSH; z4M$=LPBB8VBdpiIs-NF6Ni zE}@xCP(UWrgn#l-R75hgBE+lX)^ekn;k&ipiFpzTLQJ5D5HXmS{Jl)7b(WLfJSZB0 zJ5o@cwgoZZR3`D*ySOHHDW+oBK>fj%$?XB8sMgbFY9bbqblT1sgA)&+jl|ZvbRkq# zi6o(vvs{J-6d^2zb;CmC>WCV6GFJHfX+l>4&2y|UPBK}>-c!xYplBrRyJlpy!^&t< zD1sR_OrdHMQrrhIG=wM`Rn!COo<3;O6sq9y@!OOeP@UNztY$Ng9Hm*UNkZ{t?9q6| zp*WJv^u$2#b-yeboK1KTE3#P(P0bTwKn(+xl`26%O1LRG;XE`57aHKXQGZpyL->|5iaDdGX>#q(QO!|!G9HpK@EW@)f7gRa1)Hh9_lC)3Fq7K+r=YX3S8m90=BDV8{A z5+AHphR<#Z85axhuoI+;Ox(Ao>7mw`_9jEHDSGYMU)<3VQ4`w*-k!*~SgPkWpE@UG z6mkXML!wNRoage;vehfG&P6rM{fRi3%h|SJ92TG?n57b)(#hByX_2zX2$XV7LN^;g zVNQ}rYO|bOSo$}cS<{dRckkVz7P?C?{p#E;V6Z#iDP5o=yYOfQTQE$YZJ$*{6C>D~ ziHN)Bgo2{M$h00)sF|v9OgHH)4uYx#@Ao%WxU;%PW-%%#C4-wcl-bm0O5;qD%DKog z_al?X9c{!zE-Y7M0lg20-h8wa2=X}raXv3OC1VY+)7SK&NvQ5ETinL0hGMc`Il|;% zGK8ECwX&y8Zh?D@@a44&>G+41rN3@I2wUWPes5)jM8DHzbxEq%lD9>^oDAhMlL#i z2(*mDIs8=5Jjt4CVEd#4sD*ByMndqteW=zSF4K9EEg7@Z=j)}$k&vY{v!${hBVl|tg7Dk9p-iPAzs=#*v{(hOxv zg=}QBRvbk->6ICS-AssZm!J=QjEqppp^F-I6sHftn#z^_>{y+}HY{7>)Q8Bm)6G5I z^!#P?wM^vMv<+viDgyBhKBxKLvDI1F(# z=$jSxLEASCXVVo{p#qJ#M|#zp4I6Ew3RbmMa&YwxgIO-IVPADL5^PPqr_*ww*UlK^ z@|EEwLd2-@$VgMF8fLJJ^am6g5)wV2nbDJOF*>0 zW-q~R+DbYs)^6&IF$Jo@2*Zg;ACXEk7`z8YjMfqoTN>0JA2!d!trOTD2iZ7LCj(nv zFLhl&2L?yFzA!3@x&1Kh8ziCmA*R=nky`}Zh^VC)j9CukXPcJ)1;lO+j$7Mt=wXYA z71Pv3pb#IA_n}MW=6XB))+Od+z|9EgoP{QE$!zVVSjhiefZcMM5`%3P56QOC{k)DG z3>39UPUnaLF-;&Uk?b)na44*Yl|K%U+N>!{hr7HG@d;K}d@elrI`V1q}|Kh|kkN z_Cwh65-q`1q4q4n7DwDoKK0=JF%av^`0Ee7BEEtcUvF6aL?QNSKZol`RqX5QFeT<(AL;lzn_=Dy3 z#EJW9Eb$3BmJi`rJ_nxp>?!#Z&f9#lnon;7$9&x3@5ToNdJ3O@ZqNE>fV)5TYR~vK z$FSZ%gIiCW;vt}Srb(7U=DWmz~=zD)KUkWX9#N|H+)JiW$iOq4d<dGKV%!A8-c~UKP&^5Yg`uJx0=|%RPMjn;_(66dl=) z8KT0k)AA^DX+0JIXbHoY{Y&!AVv}(%GKfU#w8vVD z3M8~~(^WG|YosY>0B~Y2I2kI9q(qoVuj?7*UpHSIDJyHH5!3KFSh%GKhAjYOxWkTA z#gP{}DEwT$e6=POZGec+IszDm)*hT`W4aOCW7j2*HL<vYzxDQV!Q#gF;pMy$jM- zm}3@$C=pvs;SPimt}vy(=u2mWf6o|3B*xHt#sepvAP~V|Dz^-Z1_v_}OEjjt!Ds>I z|6_UbDZrrLI}K$v4FNJCJ4(!yR;>}8Oh3mls?m}+vBs74$Te-#5-nAS(9G@g?O_;} z_$3%goJ=eU0+XdxzV$f8_2kG0yZ@~Owk0~OOQwrD4eHq87F30GAqU~ghV|uEbeZ)wH`!d@Y z%#Ul{*BbP%3qy)(li?l53MsEhR33=`FtgkzA;_rXaG&K9%Pc*WNQhB~XvV(}4Wp@+ zW27WXMc&_HED~lCaQBk>q{JK|)`TLwk8^&6Sxm`Q2I-N64ZqAhM=e1&Z8m}nmA<@` zm4t+j*hS_lv*9s21cla&lyJ9tz%9ZtWHFoL>mF~qPmvZ`dITvUpYoM}wN;H%Co!La zH0ypGY>nM(FFAN{k&R8X0*oSNhE`Kh@M!U#RnvfC{xLun7XzQPk5;Y)qr}!>LCf!i>j#VPFN~h&j$3WMkHuI%5usH zcAO~T>Wx{t#>706VP?BqK(3gHK^}15!-gY^V!Ab78^vc7@DKss@9&J#pkof{$xY~o z81Wncda4PL^cAis&?u}mQ>ty{6H6cXOJoo)1L8!z5JW^8(DDf-VsumlAZE4F1n%9S zXic2q(M;ubTd9&+e#AJobUs2lXnZ=dQ8{9gtK*vX*y*rL_KKgZTvgc|dTFSt~zaBiVkIm2zgLlzWRBw1F~W zOnC+@=Ks%K)XbW>BVzauOJ!>K0CC+pypJ_TqqhFC)Vj|o2ZpstjZs5X zq_*A~#2GGXuvFmE6ghx&63?Es^)jE%T^xa zT3Gg+?W6|PMb$=$I9OE-$#~zbdrDO`~VD}f8-)>7}wwSbdw?F zs}AUL)MxAz;bqr1V5HM${}A`zAgP1=CWB!HGEbRwRaS+ia=m4P~9fn_kgQFG>+&lprx z!z1HctT@WMZM^cFpnc7UiUUyrg(Ox8A9LgUWk!d=#EOQMsh?k$YSPdJq8LFw24|3jBEGhwyHe|xoFcuq`u z#Gp(XtC2}n^G044Wb(e>(4JCiO(WlQGri0bV{Eu8ca;NE*7h-30n?=I0S z#0}z%hz?EM6g?szGvw)+Q%|pu$X_EqNuuM;sx0$+DYxebu09F`id}vuvc{EL z_r5lGZsf9I?TFwe1cN9nqfduQtm0ca%poE?_gw?}&b#suRVLz-Ybm9VhRf5QGeO$} z!%%mM_7BsUp+egyF|82x9bx{?=?Fb;$B;qit3)ISXsxjf z_39pYI3T7i!Z(1BDC8vVNXx!nRqx?4yq#kRKy6(7T*azFm&nj}CW=-tjv!=eunx5Z z2PI2FXsRU_OBL9RZ8Js)prOI?aGo#{rp_?q=%yWIxYzl<2>+1j8$1TYwom+z_jHRZ zJCI7T3D8}iLkWZvf7YGN$_Rn&1jZR#p8m_CTT>AMCK&Lb=K(kOwLMl(79?zA$GH8>uqbmZw{W4j|03C>&GxNld< zl~~1Z{!@lZ(aUi_#if>%8KkF5YvWCNzB5C2J{MAe3;rFs@Fp^P)Iq{ z5+s|J$TGyoyMytPOCHbO!Le8a*CKoAk+rLjIaODGlFF9&d0e;}X0efLTs7bP<}xvu z9J?)IL1pC!%ScD!qZ?xc55Sn5>A!g1!0(M`vk*&2HXr2ae?Ck&d~^;niG3do ztm`5kpB*eCY0Rgm3}a@!9Tb(v$cW`57R(S+oq5LCJKcQ2>mg_^^l)zI4JmtDnpfE? zI#df~8TnD03~ubL+iA9F%@Q&Hp)OF~3T$v1GRasrQrl9xAFKEJmdU6dZ^Lk$8?30q z3zJGJ%zF>-F~?ZJNFSP7U^>sN+`U0!hSUr~k&aP^hUUdI7*Q%#gZ8uI%8bK^KdLutloz4TwO9{ydW@7!e#i_7T-=2v>6Z(z% zzab7Q;jhL3NOiLy*)Du0AjI~56gWY@M;sp~Q|FCzA%)4x6p(uR`t1mnONBJpK`4v&`<>&bn zzxyConqRvhr^ESAf>U1y|9|N2J-g-)7rFffi}Fw6xPJxWjnjwZlNH9l=m~u6iTK$< zf5xZaXAtkBR97BU@y8{_Bb$ZWjyyN+Wo&|nH}fO6@)Gg;XCS+mg57xnk=GE{g&Q&d z)YJPhF>2-_JOG_n^M@z+@v|fOSqUm~DKGw9Reqgfj*TnL$3fE5H85s|r>tg?2Zgyj zpnvCE8{9H-#;8{gF3lGi#=ZMD>Rp09#k;YKP-by?vaFDjzkovZ z1HPeUhoo~dw*2;1dwfxxaf>gV9!PXCJBFgkWQcCxs~1IT&ZmcHZ@Rd1F`@%vWD>fa zFbwNpUBt!;c;lE~rxa>mDOhCBEf8gqyU9h%UEf@tbfUHc*)b9Eeore}sa#_P2&h2; ziL|g5WX6`MxePg-Im1mHaSwDchWNkO%m4ZMkN@|#e-V++_P-c$Z<(Ij0y3h$6g0)l|8B2$%jThx*>V8ZK3l-RE=0)XHwwSHpIN!P3Zc7aZh@ z;uU%M@I6z0q+94*>{#zKQPxQ!ISnK;<&+zxC>KqT2r)}eb$A3lM%+`H%T-#KLWwea zE0^#K+qjKvQIT-7L0=Iy%aRPplxR-k#xU8&^z2XjP%ZP?{Xh)THm^zMH$WMab#0`R zDjp(KZK*yPX-YX&G%$pkGa52i{2N8u?Nu1=A(4@W(cOnexO@1`;@?gG&0hcY_OHLR zS4RBD{r>;^{`PW3n=mkNfZaj~M|29Zu@7XoG~=@ARS zOiI=n1{>t-Wnb)(zSd|1`4f(xO%G&2hGb9FQneD9pczvcK|rl!3Ut{-Uc+``^PwG> zPvsyUN9Ra0*KMYf$A>dysD6(I8E5Cr9C?l7c)-0@dcU;c7A{Ik`3S6ZV1X*MNpxv> z@*v|4ML1RUPYNWQ(y$8H=7OP0-XJr@7}J1Zqbpb8rzqJY5EA{jf-sB||#6`|6E-i3E1Tlfp` zYWT-Xdu^{O7WBLK|Lkx7mnx`eS$8FhcNYoro|Agj2IitwNYkN;fi?+&m??(n6d6yL z;5Ag?V~f@l#B`{9q$91~OCi4g}r+%UKN!uc1Uu+2OXrk8`PlW4(Che8dNjS6fY zF)|%Hrtx4NVKHX>T0)jp;2<)uS7*RH+7jC_I5IM}$4iDzW|SEasYe%tVG%2aJ0Q8$ zQ;S2IVYE8ZNoAtcdqrMB5rgqK9DEC(PCz|Vpi|=)1Vv?-GwKL2ARWW}m@zHTn@pzy z(Tqi`c+7Om7pok|C@RQciG`q{xFv+PLSJ&1AzQn(c4N9@dj?X(Oxjk4lM7WIr>&~p z82>N4yxgdky1RIb`0dSq3%Y%?mrCCC_dBCY#ubOu$hTnWM4BR~O8Pw@Z)?_G>7p78 zYgWh+(5z7c!U$oQrlgGL*&@Hx+GiX+7i*7*$SuJDrE!@)p_AK{>q7849U8obg zBScZ~gc4M>-1KshR}%Ad`Z=(XDu#Zrk2703CSsS~EqCQ8B?3ZvsPh-aH)}8LHIKM^ z@4x!{Z{nh=+L8k0_a5;!ssae^xkwzi>EH4e+K`(DsZfQwhgqFMs;VOHceSS4NJjUU z*H<#U-vt@O3GZ(uIx`Iq37^+3zd?o*hH&8rJh+O@e33;^;J)I4BcT_5RJ%%0E&Y}_ zQnxdzVaDR3Et{yLH>s0G54UU(3ZxeZi`9%0dZ#~8W+6nvzOfYi3XNn}Db%tB8+JI= zd2*PV@BS-Sv!U3{c)0svPd)NH^#tGwtU8Gcu_alp3)y?up(;*-A(GgTZ6vdnuzs~yZ2v{sB<%GO#%__y^H_8Mn&{-_6G&-8Kw(U0yH(#_J04~dr$(} zgcTZXc5Ati1gf~--yu+KK_B3~nKox9%WWc!f86_tP%G;UjgtS$&N3UD&7MDWs4@@i znAM13(w>;n(tao zrDxvOAm0e5?K8_A8oHaoDa3by!Lpz|*@SJJ8Va%d)Fe$x4|aj(LMt|N zcUBF%4N0as&T9A1oU4sB`Dvivm%afH@b)q1g%5*eobtyW;fm9(#xpnp`{KHuOrMCO zALdd%1s3rf8N7lG|GWPA&@GuyP&hpQXcwdS=fLEpIPv0*J$Ni%(?$3L@bz4j3Jz-{(%h;ln^ zq}Zu;*n+RlQi-ekvlZYgYGeY9tboty35!FOI!E3z{VcI@=y-gOD+YxJPTb;^Pu26t z7m40)|*z*Q??|n8QL4_<$#4K2c zh-Ob=7}qIeS5l3MhajeH&ze%Ws3)3>4Idz;q;s5}VPm@3!DD}jbTxGkNZ9RWfCLmE zO%M>JL}uRR;)(E)>vb;1p@xtgE|1YkhTohfODD&5>?)muhDMjh>hzV--cM&J9)_wb zX>a5XMa+RZb_x~tcT!%~g9ETNI^*w=>}*&j4|7KAr8Q;k5GWDw2>MmibI*e{Ro@29 z2b@n;Yv46ff2M7HM$(quUy0>0;EF?*8%hO>!^aFyc&VP9;Vp0@o zLt$b$Jy&fK5xt@iVG5QxTq1h~VgWty*6^Fjck%B2Yk&WPp?LY_@Bg^{@+}yl|Ji?c z;tqRRV%AJ-ttnqsiA<*5I2Q}g@~wVNI=Z2C5q=!;!R;BmgX#d@W2WaK`&{Y zP}G`;gb!I;4c~Q*H;+!aq`148VP)@)TYw$Zuf@qd*n8{9bF)qv9sFgO&jH8vK z8}K;I&PFb~&==qa42+MadVFN2@1TaF4jPyAl*G*J2A3XuD!ak=oxnveK zW42^DfR#Z{5f2H(7*44eU=6MDF5mmxck<sE#UCDW_*-sj1)Z#^p%gP4#a{gwpbN7Ij!n zh31wmfP~IO0JDTw>$0dB!-E1k#OBu3?3N}W6!!wv9KcMkEx0fr-dZjYMQDKHAX;n9 zDqh*U+(qd6YA?ThQ$>HjgS@{7GLvEPAXU{OXlh#Y6a_T8LjW@@F%7VWpqW#@S&Xmo z|6sLXaYwjs)?+bD2BBp9fbI>c$^#6=}Ch_`*xW9qFi0} z-fBIA5L^yraX@J{6nMW{)|g~k$jt3jC~S(jhT%sV=MVS?n^n7MD~4+bC15J1(pSiR zk_d0bni6M)XsgoDUfS(%FE?!(?!W8XOUOG#<<@R5x0e?R-`;-z{#~NKYx>zPH|Jsx zG_~?|AX`@GrFSjLE<~Y%(5(G}ghW&Gkj^xDPP`|{C=7Q-VDttV>QX{}EYk}-Xt;() z#-T$rGp8R0H!LLrs$9VBUJAy^#Dpeo*ufH@f@E-B&`@6l}?e+HZ`r2N;k@UB>?~ssJaVZ|x@IxB8u9S$- z2zPDh-bJL@E&th)azhtr1mFCPr0Ok?LbDbkU@P|smiU9h+u3j z54rO2aC#&IqA<`I_Yg>Xd5MTJn~B_@WQA`pDXTD; zu4IEzQ9M41Xi!WgBudpzg)%TQbGM>eD|C4@`gkI!+#C3r|2#}qjSq&eM8h!$x{yIc> zylWTU;M)y_Nc&t#|6>l~&llPgES4W5;rtq+e0h|8(U|&EkA&wcXYvU={HW{Yb4lg{ zG!Doi4sqA_aZ;hS69*4G3!WwXE6spAA6_n@o@MPTPwe1-5VQRAI4-aAXD?*3A49y) zg6ls5B@cut4CB@%r2aZU`%pUYSsF1O0Q(Cg=mQr43pLq#qx0uFn_%s`Vj-@;2Eel5 zjWzt);MQ5?;E38(;?uSZ4U)#iXE-`epUgultCGcauY#>oeQKZ?vraodS6p@BXnQuG zg-Ck;h!8u!!n9=BtN(S-KC}%sc#-*?mXzI*^y1P}cN+s}ixO+jPE!VOrQ?dtOqj_W z)=4Uu=Eq}g+@wa`;JR5ROx+a^LIPbhdGyW)UA$nYqZ;jVa$O3CKgRF*_w@j_K3L~Pi-N+Ajogz2#GE(ntm5HYh1(jC)(E{5+`=8l_wwu(A! z(3~z#HU6w&9~2TjVmLP^lQpIY%BHPPbWct`g$lEq(eLgZDsjID@6P+({}A!)PDS{B z@BjDr-%4B#RWZfQzTaQj%qFG@XcJI@@KS+Mp<)Kh6w-9(Eqkm82+Uggu(8vc3FZF% z4S==g-p!h|*6(-TnO(GpXF6J%ZK|3geIrFpBc$CdBEr3l^I}U4pM2`9Hq=UZG%c#i zY<$bsT72OcfsWbgaahA;iwCF{4s$|()7$E#s>u*Cj~)FTB1BB2d0^=<1@j`;CSN1j z0MklLV(aTds6!qnKnC6ICIf;Dr^+c!$~X(SJOa$8gQSM|!XZT+X3;Veold;$Wvid@ zWI&B9liogT!3Ku|$Qw6~hY&G}3lk>@VNXexHS_L;j!fq77$$4803z6$Q5X>oD!1Ev zzf)+|!abZSVz-yf0QLy-{p}v_l>htw`~6o>_eDih{igP}S88_&A?+sZmfAA!Zl(>* z;i7~zQ&TZO6Am*VHOGvADMaZJ(o6o79u0!DL{u?F;x8s*B;VfN%$ln9o)*+d^Kemx zLPOo}c1r*_*C5>Ea0=8dN~u8+l~N4D@Ml%Hj*%3oA)ZzYvANfJOuYG|nq&$)bPOA& zgCzjcW9(LI{};lbR0%0(a;9l06UNC&f6YpO%8VPjUI6S4QvsMLxN7M{Ar#OQ#G8W@EIJ7^vTFm9#BT4!(wBPpbNz$dUW~j^yv8htEwQtyT>2>y$hPW z-oD98NvTZ4pf?c}Hnm}92vso%RYK9sOe*4ChO{?`%%GIq7)6vJs)j7q#9nBT2eq@h40k zI)li4u%{^8J)bNyER++lG!O8eagS2Y26RE{%JOYnvl$Am5NpDF?|CNwCx87T(t13y zUi&@hc+t4O-_2CrdyhyHhx9JaVK0VBjX|v}QWb?Bn&AemZ4H5BNGKF)5fRbLdxL<` z-OJyAl?SO>`#H%$6D)|GF>M1jymsUz7a#6QEWx?9W3>c_8E5rTaU8_+48CsR4D=AC zh^eA7HKzZJB4d>Y3Jfpl=-lM62)F{IK$Db^NUB!FwRnh%NNXCb`{`MpMumu99)N4A|@C` zm1tygbGv!J&k?$!sSQ`^2qd>HhGx)Of@JNrb?@mVkR3vzpW0vqJ2Q3%Y9v7q_7LeB zzu)h?$9wPh@bBz*{9+9V;Ev)_qUEqn1S%#o5Fi3V1)8`}*#i^anJ9PwHb>FQRc#I%p&K49* zg{TRGxpD7B4m9qbx3a(YjD&z$Yb_$e!?ckkA|2P0`De`n)9cn5R27A}6CzEa3Ug9G zD0!E7M<{6bJ4yEN`}g;tNVl%RxQmLr(}RiJ5lAPJN>*CgDJ2I70J!(t?OXJ_YRev5 zE$OF;u(K+f@xbQUop65l_mOy$0Sit?dub4v=`%ynS&G;R%x{);wT$*i;PD{jV5hpt zv5a-{a>_o3z2N)WU~B)Jw$Cf(w#?=LQ)@T&dp)XU_?BiOEM|{{)H2Ru03$++A}GRf zGR*eHkk{U~;XMSJBKT~PFi3TqRU%~fCZ|_7OmHV5;c7f78=Rg1b`!W@v$t4=>mgJ` z5Skg)gQ^`ehhsrj z_=r!uJtt*PM@IXuXf7(2%DI=PPzM5yqf};h$2pJkWp}1K_}ed@rEFE}##|I`*5ABx zn#9V1IgibspJIy_BWOI=dC3yEk!K>nH7+?Zf6A9&RQ{k2 z^UsJj@u3Cn>BHb_uY6K0VozYkg;bIs17x^BEpcQDihQCNeu}mp|FR3v`Khh+a}X1| z=#dXrxIClU=geb#72@T`5@-1gmgW~gYh2%mi~ksRvwd|X{u%KlfA(MhT5$f7T!Iht zfbj|Z`ShNhe3kh%1bWY@#YglNUT&FVCX2^C@A6_CKN?R=HvH-P{v`zT2Y&DoYQ6M- zeg>(21rol5hmYUDRfrq{L_hiQNAr+p1gjJ1E1!8mgKO0smcy1G%mLKx5xEbhES&5< z9Gy*u5@FZmZVG1ZfiK6BNKRDUgKtQdOE_=Fa`bVOjLE}^&sY_sEJ`95T6#8_7Ujf= z1#--S;yy{--*WloWzYzBHQw+lJe0qVP{FahnA+3FX9<(L`ap?Ue8bt9tPG(QYY5F` z;-pTJ56Q*HwRGb3;efcS<$(CWiao8*0-dH*n1Jn;y^W09=|p<*IyRK3qy&jsi-spIDOJyU_WQC)X{I=QH;QQxIZ zGoW`ko?1g%KaYkup-H3O5>8V!&?ug%u1>EpB?FX}T}e3M!8`BY-Tx3V70sdO7*D4v z0Hm0rncnopa7%SX-4m7DiU1@OmO~{_)l{KsnQX-j!qd7nDrPMOSpu<$aPi48xV2j( z=$r{sFaskS)1nus01?iSs#Q&;Oyc=MH;)+n6!^}yQp9?48FJ3RZP~rm1Y??5uBJ2b zYi=npUGCG+l6kmF4_WHm+PvN6fqN|BwmHSN-PO<{*Evau4Tl9amG1W%RX`ysh)Si55uM~E z(jZ`>syFxUpo&tPjp*t3c#AiG4@3ktK!#Im+Q*2uknX?!j^A|3om6k(p1-%dlYD76 zP;c#KdIK6GQ^@nOmpmFUZK(KR4-uFtV5#N|aaB{u!mdIhVw#gz3^CGwQJQIl^`48i zd<8emGO5`z(1NliLup_g+u@|!;-Eytw1O+dMJPyjH%`49pejCKiQ$AHyN@_G4tb^g za^h+UN0b$PtP?o$i9YQbrsrwotul2u!wur|_zCB@t`W-Wu*btp3T1&7Jb5YBOv z4oVUi?PKoOYvWDwRis3Z2b|#0=q!6@UR0f%*K6V!Q8vJl9EkMoPyUejJ<8W1r1!ho zO;t@9<#2#iS0ETrv;FuMdofc}xv6x1|L$=9@t^*#(#s26HPlGb|MQRk{PhnNh*cap ztb|c>-Wi0UiQV+YZY@1>Ib6ysE4rg_+rR{pzQWxf?#{x9hKT6P@+24Z=X4vW!Xo4~vnpc~a zvooVnbHpYB%_v!6`P_4;n@7+Z()i+BaOrnrAP=Ty)^x? zKv%H}=F9p zCGWG90lv0b?Kgc5c@szE4y!86)Y*|ym_9I_PJb71cb5pSa9~jp-1!#o-`~cfaz#_S zMM#oS^5*37Z7^%ia7&W_p)`8|(`97XILk;q_fS=8ThvV8Fsvr?BhTG*@BsFGh7WYK zX(GKLv{|!rB}GFOfWO}v0fm|MNIX&(@9@Bv0KxDW8L!vvC>cHu4aI!JAVDG_)LzBft@Z9gK$>EfPXUT*>-W1* zw5h78Gsyxo>UCj44JyzOy{QP@?fYGRjqmUGkbAO0*%_ULdiYy^Ym;Uw!>Xrvc0~!L7sxFPOkWqEAmH`t1gnK$0*Rid{Oy@20=V~^$ zWzN~Sm6L+PBQgsl=Gz@> z71La00s!OZmm$QcU3H2GR3vmVWKlGiVmnc^Jj@t;e}CJY^g!oS!P`- zO4{*I=!1eYho4cMhpyt8^n+9W$uzG#G3HA2&2FcD{TAwb*b;UljRM27GAvKAx;~-O z1a!KIj-V_WOc-7ybxbGcrYa&n$0p;Z8I&1?BXFVR`0J?8Ib%deSoGPzcZxi)U547P zvtxq}H>JY}b4O;DCZ@8QhebHoqAA(Ow2GOj1ZyLkpzdKlz=%!rAA&T5DAF%<@hTsq z?zaGP-6sR<2fRG1ol3~ zKzg1Fq1+CsziS`MdmVCE-J)5kGYeuR!be6l(tO|L2lTz<_sPX^h*=CoWeaRl2EA% zL${A@g%faI%|sIPfwQy>5jTx=)PRaI;@PAUYA-gVa^Bgl*|983(dGak;yhbVzpe_! zG%-voy4bLcoNdUKICF-qJ_<3IU+{6gr+#KkCbuNNQLYvxLm!@|!{`CJxm52AlE*@Z zTLHKn$POv)k_--z2ps?8A_1BrRWn+7w+u2e$ooKg~1>t4oS^>W5|^cRj?2^L7GL89`+=TTqS% zwnUuJO6q#7!SR?2G@kbpU1RK;rNLIYLYhT{p_?}J0J{eP(M*pfd+#}W(=-gPnUPIX zzBFiHk?n=Vy+@Hsl)^xIh|w~FnxYBS#F)lHM74!v5L^h~K>$r)ikI9h6(YfiXsTu! zJs%2FScn%V0tSRjKv0Rlsi!qVd9y=cO)aqmsfkU98co4t^IUX&ad&~X)&z-jr<&>{ zMU{sIHW(O`2iw~c&kc*0L<{`1=(igOiFK`HIF=4PDzVYxR~)hpAp%SJ^ixTv zv>a^JlpuoTBRV%)QWz`yZ%)CW!vf-bhVsl4ALE8CZ*Un<4-9xs{Zlp_$B%!md?<@j zbivg=m9^t#%i>qkEzntTKS1)K(Im(3<~=3aJXUTUtPu8=gsmfygxSBp^T< zZcr1l+hMepyyYi7lEqmniAepR)(7FpV zpksE1yfui3Xu-6xhTzB`#JmIvcr3475(y7`^Z>hBn@5QEs ziZn$ugY@@1*{PkK!EgqhK!b%lG(_%Fb~4#cylPFLHIr!}$9;`(*m}z)I_^K!$j_?rS?bd?fMd^6x zMIYsR*f*8hg0=Y12dlX4b{s?mX-lxEw}H~h2AKHwtW^x))*A+c5#j{`87jnqBlcRe zK2hS3jKN8YSq7oRpE6g*uNN!!tNy zFHqv}Kkn{;Ga@3Kf`%q4a*yhJ0%FK?dDT3u6}iVprRR{&fM|Gk zyfihaYROp%ARku0x#C@+)C>})d8&TGLJzq z!lb~TgWMj9(jgS)F!tdRI|#!g$%0V0hfag3jpcS6%oKksX;&*NJw&Wn1-X;Ph`lL3 z-2Q9N!kDE8%}fR2AaCOqUsgOA!Nr_ps1Z(6Kdeb~apg=@E$jJ;?ujuXqnvWkuuHG} zK(m+Fkur=dyXZtbOHnq4O_grJ2{~XoZ_1nOYeCH+Fec>UCpLr)2-+(8H!N-e*XTS7+m1Xv&2Kt9? zBA>nJ{^|JPuf~sG>Q7k!f61lz!h33e?#2Gs-`-EIR*5h-RBjE$jvO8|EwkP;nDKdZ~h8${OQ{Oz5?7rgomJqA5RoMx5JOW zlzZQD`95(#uC}Sg84$tw(8Ez;{wS)(b+p+u3;^`W=iNzbyUzIZA~QblYM}f0K4p_l z4Og5~R>bsI8-6|)goUdUVUX!Dx^6svn(~v{QovSwkSab5455U=BI3vSL;*b`IPr9X zk1z6YnFYth?w|~XTuPbe2N35hwI8;_qi0<)UUd`a9JGd!nZAd>=DjgavSqPVU1%py zyyXy?K;uY7D`&xtOnYAb#ctl-KlipNfHu8?m#GboE&dis9VhzM@s8mNUZ-L|2LFSwK!oJVj`CkC+u8^C|kZF9M` zA0F(f-&tZ<0Jixo9W!qZS;7h7&u3~+13ETzoQdDVU7a)kZ!11iRXgKn7oMtme9x%d zzGW`DGG!kOiw+-Qw{QBO)G5`cU`l61W;|f5Ip3L0RT*vyH7KnN=P>%r91KC#T7#Oq zYYO-V7kOB}x@i+J!iB05%t5W)M4JF1Ia!T*%5~(#1tEl{vOfTooZz5#R{)mS7m;4X zIiAqLg3e@XRofI7X4VvNXC4u%8X9yC>F0ocCoYv?dmc0H)T7^Sw_LBlA^&4zQdd&& z@yOY|0N0i(NAs>DlFGwieZ=L;?h^a{Ei3_X3j)N zgvc$FfT)DCGkSjF1{D$SP7zfbXci@9ViZUdm_Sk2!${E?5ItlA*msI_eUygE0L)cr zL@NDiP

R5U;meUJ8${s;b)TrDnce6Gw;;2-I%lNO#%jc}H^L+=>pB@n&jQe3Zww z%}E?5vW7;6ccv8dV(I}T5S5gf=^xH1d(`1M3oy!$WRk^7!=0W08&7N(4J6>Dk^``UDG92zSJT$Tgq%BA8kIyX4<$SM zZ#@X8HPf__ph$#L>qM&c*lPF;%*$W`g(lfE@`^IljFb`mm_?JerV#W_Q>bEuLIa{@ zy}3v?mC6~hGHjE!kTi%qhOk6Bm$p4|O_Zh-7T#2**qw)#VO1$R(4%63 z@Z>`c)mDz6T)|MKg5OZ1{X;O9C#P4B4vtR@H-T8^)1lw--{}UA0-W@bY;Up(QpTst{BW45HbzfyAVHPrp-nY|Q5clUseouipZP&R10;Mhf2SG9z#%5J z>#=z{#5hs;V82^YU$(b>#)PkhcO$rHuI$o*w?Hz4P8| zM$k)(StKMiQ}=)p0{74ifS`+Lc%^n=N~i^9w=!D^D%4E7S~A<9rcee$Regl){)68J1 zw>(i5s#acB5WVvbXj2VH_g+k+EtDs(bw&%Zd~0HxkgWAKA&sLk!5|Y5i-A>4%8JAp zdAXFN0*qMe^c~>A%x@dH=sMh&lsx8^Kca#y#q1WbSUfODjJS*m`Hd1eeH_XMp_H>_ zi-0+6(n@8E(af&PHHdo@X(|zOXu`)i^VP)q@ssG=!>3EC8A{52K=<*?-u6;ox*PxV$;2BQd4`{k*^gf#GmQMan)uN?_Cp}- znSkzz02OlK;(Uo=9Oj&VEoylQ?fn_O>!(qrc{BzoB6@p_*BJv z2^G&b`2pm7{aMxz;^8Uf^}FIj6$JdSy#&u&AF+RcV^r>g70D0Z+1LXoF+tvGfOv@P zTKw@RrwT=O+v=?G2XAsoFv{vlMI@Hoc{!^9ML@d0%(^OsS2fl)eL27^k=Ct&|Wiy|88;R5a40QyK9~4Jo0WQ7gA4mcs$fUGYMri@?m_yvOhI59_Iq#+< zTut>%@(ZG%MQk;A^{692Z&)~z>w}`M)VluZ3ieTrd%a;@STNLOQ)y8=c%lU|4NWZ+=@XuC857rJS~rgAsz?m^ zZDud!;B}XJ1RZN6{fSk=rK8b_3-!3FkDk)!ZFTR=Crq)tXmKJ>?3A0~>V=2aZ~K5# z2Dknb*BuBZS$MY7Lk;|4L0vNG4HaH|2F7y}AjaA4{&3P+O0g#FkqxZcLO2TF8!wP{ z4-ZcH`w2+s= zMI3@=t&Hztc$$y+(277CSgjrd;B&;DDB6sji%3P3GU(wVs28u$?$d~TORPH8QGCJ? zoCilHv<(sbxOwcF=5o;sua zjknfF_PgJ1re^ndH?#aoZl!2Kmt%qeAm;R`rpjkTq0%fO+=JqZRd$51!ai4|z!0RO z&RzL#_YbCMf%`o^Z-|?0p^KYZt-)R_u=H=K$%ztNv-oO zT5cGk=R>F)hhxO2Y%UiM@8wud zHftV1($vB|JVa?`b4EF(&mx`~rG<;k08WOaK6s$~L8dm0bh?<8k#HHF)WculpB`bV zS88f9#Rb$qbHs zUrGjw$M~JPMH21{wfJLWDgnr<%qg4yBM$R>98`DbUH?3YFXxg$RwIwjXhqps>^eCM zj9ENCmJs~*(j;Wdv#5vVcDpg8_Q0v9uRT-*B|w~}8UypGQ&dH>+-9@-cW2a5l1|)n z=40vTklvui-MRu2INonHYvsC>QP$-(lxp^jstBd7Vk5{-wzOZ?=-Gqm$ob8>!qZTf zTi!_bz~>ve@OUsu?;F!c7t)wvC?WE{K~Bp4`gNT704lDr5sWgA)>JT z?bMyon_vTJU24V#RO;C4l}M&4dd8w#{z=Oc&lQnW<650zu<}+;IKR?0siV# z7Q3Yio80Pyl+ZdLNH((w2?>99yqc;G=1@Z1Hn*T*xs>frBjfIGtjCeHGav=KwZ*6o z{3|uzF@wnqO9dk)H83CJTIZZVQ&jr0=TqF17D2Xlt6gwNY)g(%$6u3*u8E6;HOSQj zjWchDyD3^s0;imFd}4==WOB|<-&UleONwsUkDm$pg$YZczbDELmpD1w7;b%~QU`dd z2TR|)k-5W1>abNpARZ9$ILLnv&ppl>fbH)g2kdb{p8Ii?Hbb-iXGLHz?ZtJhlHqLv zE%`(}^dWw^DaFb-mVm^$fdEhbZ_jW;2>1m+W6UPj>O3o=crbr{%#$7Y-D_gYL!A9# zC^5sT=Tp4@Yi#jr2gB|yl4iM7^0Ca=BZ0RuCNJmPkA==Q700tKFgL;o?(>;vHv+gi zY`(1G!Vi6U`z)X54`xk(2KLJqkEBG-#ntA`kd&Oc={nc>WgdU0jAd9Lsi5%ZD3{tzzk}?D89HBP z1iJ`e;v~@Qc3vYcTo!Ml!0XFP_n2;Pny$EM^4v)V;-0yrKu$W30g6Hj&2ED7yQ{uG z{h{j#ZV)vXnZn1M=8f^V34`Gx2JabAXC)x$6*QGLfULO!ZZEGM&LB5+BlA5oB$$MH z?_SACn#wF89Wv(#F*CW!Jr&!meKvDzqB&fIafZzHxzc(J$=yM8&l0{Eutu!oZ8XfB zvc#BkpmZ`K_P}ov<%+2h99U1LmO_q@9&^rh(mHGk{L z!eJdKieaQ5!#nXAK}omnadQ$PL}esFrpuf((_z3iqoqU*kOe;kg$zYEYtA<^1OW|* zFdWo0WDaqWuBLtN2-K3JrX{1K@pz~>_#0rbSF|S1D2H6BpwbAjnU^I{6Nu;yb;q^* zjYU%ZkWs-ZO3=9yrYG)Inu+c?2h7K;9uSE5XrgmJjk&GfOFmv~N5TM|N!G!VP7@W;sn9afic;wNM;JWQwH3 zx?QSD$-HNnnfD$M1RFA1FC)%NQic+Epiipj=AKm3TQAgwYpgwSz-gGVw5B#h|zl}mT^K2- z7Ib{gVeC>r30y+DhoBlpc!V5iecKAjB4?%`7Oc-DwnBmTLE%DYmwJ8_gwwB&E4_GF zwe0I^k$f&b4kpZiW9E9*Z&(baTFhsRY@Ha#!ZM(`KVIWpQ<0H`cs_k(#{Mog>e zz}N;8;_~h~6IwBDaprnL=(Ww7DTVB4`jQ*bOUbBvjgq<+hTJkNKQP zLJ{eb;X#V`+si+S=?Ds~ZgcXAR10#honaibtdVgF^UWlJ@ArE?!)Dgw9;8-`DrG9Y zWS2yb@C7M<(NnD<6Lk5?ux7;9W1pvzJN@SjJj?ETGGcBHdGpxi_Q;U0rro2e@CYQMPOHI=o= zFN5?5K${v&gwnf<2oZ$SGpC-~lysL6IwW+U&_N0;BA07t-UWMEyLBEZVi`{iF|CO5 zi6Ckvm_P(*?FPWTtCo!_Sy)bCun~jQf(K6=l>-&hR4wt;h!GE8XnOFYJUtY&#G}dU zk@Hocd97D)MPKhh4+~+%P~{G*=cFa5(^XE%JsGx>tgIu~lXb zj$zoEH`62nfQO?@6e#HmUQAr=-P0fnYS{^D4uR?Q8)hDB+M6&vyTP0G$P`-@xiy0c z-rwJfF$U=tJVyfjux$tD;5%;~!9$K09 z%h_jt0pbt=CYAv{?y?A`he3@lhvzs>zOeP#83UZL@rz|LfA(ZHF+)3W@D~`W?~y2v zQ-yli3YS^))@O0&ggs6xAC=3G+?RtEWruR7O_9!1U2N}UB-EO^i-vHQQ7^4pvR-vFP=EVev1A+{Wt#A z;^j}Rv_Hc~@uT|g$CT2a0D<@T??3rrKfe3C&eQ$m6(C>!*3WR_KYv@t9cn*{Gk<w^R6dLApW@XD!08D&@3_yr0}uSJN2rg-^Mj8j4aW=na~{k8 zRP^_!cn_bvt7n)ljuhBWd9+{n)YuA!ZQbEw(eSdg-JFGGbA;aX8wHYV_RbGGC%)*g zjlHOt_K|#o0blJClx+&YOPbMinc9a1F>&JoB`)7o8DqX6k5d~QkC)A+403csJvead z2Zht>OY3L#R9H$G8*(~DC1uy@LPHCs#;MksPOo@4WR5~lojffH9$?*La`5rt<#AiX zu)vM&r}j-?7T<_Nr8;VVW$Ca-{}Upr5<-co7{>6jI!Lf}#FGNlJpeG_NpMbM$E_I6 zo*ai7c)ofE2Dy*))^3>AROj@YGM77e5N+I;9Gnd-GlHs%0h)tO5vs`xUb=Tro8@*3 zzBAxV;IIZ&rmf5)H^Utn34*MiymCuZLYtyP(@6+WED!KXs~Uj!@=UF7g5AO0^>>9tTt?-|DZDpbtK-0`I6iBTiQ*hii&Slt_$escr0KB;MCETC zNGQ{wlBqAnhILI%+FGR%a?TCnrYz;g!#%fonV7{dctQ>9%frMg!Zp+HDg{qO#63sG zm9>qbb7BNcNhWPS)x+T+jf2Z?+QRSQcScZM^~J&(?4H=t(n{B9po-qP4~S(Xaxw~3 zfVL*q&@#Al42R}nQ5Pvy#UaCmR45QL^j>DhDu5xpn^{H% zraxh7g0ILYkfSi4bBuBo`?MiAhd`#e)JM9~<^2R#IA~QS!5}$-|H8Op8pa{0;XwY?YFW^1c*)aRf}^90Jxmuc9*tYDm{ypCw=oM7P}S?VGQub3?YSnxr;!|G*b;k#CwopO(kQ|DW*oasX`@OoZFt9 zSi=C686&*54i6_qZD`VUV1bWGW4WMqs;WSGn2R*KDFmH5M$_Sm;aM}g z_ukZ8JWZj?G96p>0#Rs9=L;etLY67_B#4{|emUfw&aeBbD7i?nQij-QD0!ArJdeJ@ zo3GN&v6+|_a-f=G?^O>Z*sDV*Wv0*w&&e=K;e%iraEJ~YW7s%=e0lec(R_)~%V%W@ z1m}ryL4yK z%ZPUcUT)vs@86-)&@_WQoy3UC9;!!E4T{jAH-*A(!9ZOvh(ZD}Y)D6x9wSibpz1JE zVXoSGb_+UHDc}RaFe?#1i*HxB&9H}ns-{`7sm(1Gu<-YZspncEr%TaZE}ppu!!>r! zcH=1(cGd(Oeju|ID%@jMs)yj1Q*}OVb@$aXxi3@Cw}q`fOg_1@S~tF9!U%hmilSoR z(*cASA?sXoc7t&97>ccdNH5Ra0IW7`2IDxM7aiA6_t?dxqJ4FAGKIae+4E#+aSAUO z>L}Z$YM@*B=*=N=Xgq_%0p+^y;bg97Tu}hmE=tol32|-gF zr!Xs8D8I>?aoN$xf%+3yI93JDBuAmRQ^^C=iL=JwCR$}Dakw6k3LOUivzU(cRwHVv zyRJpl5-&3Fm>nsKkjOQctD%p|JQ{eiLFEWR8s6JSEBG0*J~8)!>LrHVog%bx_BT;N zd{A<)rtpiTQBRjLJc6OH^_)G-Z#CnDi!1zizT}BC4A9ntc#txmZH`%P1(3Z&=Y{Bs zN0a9eB5QIM+fq)kWwN(OM}+V&1DTZuia2tX(LQqDv2i*#S-+4^B`puais`$~=a4WT zhA#X7>OwVkTae#2Z26&C{-y8nb8Ps4HeZnXPGjuDjkr+8or}5+=)Ed&@Nu^BSJ1#O z;+OJM3A4{^YQb}?AU{PwKlQDC{I4IyQx2;Bp9Fe8x@6B#*dyG=k1sc$zL5(}7JlgV z|5@Yj_W5n&hY;r1ErS24xxx>4?Niw3r4lc15&mONY>@!L0Pu{e@;?<^U%V_RR>RdD2G9%@bH@VSw_u6taANfK~PY;9-t8gh@eeik4YQdo_X8X$y|c zjNt5ZvYoY&h6qYX2pX6{q|N;8JtC3Q8XS}zbdZW>--2&K`Qx`gn%T?CKkogzNT>Ah zH^qzlf}KjhP8(fQlslOQ=|sf>Ra@BwEvL{(0(FxX;61v@&CJZjQ*$FUF)a}@l_sj~ zb|b^3GeXg0BM?XC*w0q!Y`Gugtqk5ugP_O5mU?^oT;b zB%Qnj#7?s5;Hp+yi95)O))_1-HrG(t_9ehbm=Z)W2DezTjRF>q@yz5fA`o4t@O*4-IFQBh0i z^A_x#9(0Wg_*4~_cOga1(>J3)s&OC;3;&zmfLFy!W9F#3sD=c4zv=DPUWMXh(C_!( zL|$+0)xC>KQ_cI-dk>HI2rZpk6>YCCzl6uVzp0}4-kMFrUZ+P7XoQDqYwa~WJVV@d zC0I|labWHYi+3dt>5_x6m$!Hyw^Sx`5efyH&v)wN??9`=9`~ zVJ7aCjGT9Pj7){gLSmtGx?+l@v^%+|E72gor)jd9V(0P5MpwcT{H~&LN5@m=u~p6m z16Q)^NR?-$EFNOoCu0!9%6{Z@PCHW_7L4hnB28zzf!3_)&As36-*vhmkoiwz-x^4U z1tLtm_usq!Vyyu!ygOQm2{a%9zEK1>mCoqSfx-f+MVO$7!rVm-tp>Urb`Ml3Yf}-G z5ok?u0Tc~{nyEC8yNL82kVt^PR*6FO)uc!CyrPyC_u&a&s$zCTlIpu4($c@KtjaQR z#Sxsxe z`z)lK-c+sGdw75%(d zs14hC_Ic;hJtf3pVRjRJ0luZ1gz#M?yvjbyW+&ragYjZ7p`pTC)B8ODgM^}-Ku0>g zF-S43q-^@#)51pzmP1p^RhZ$&?mkTr2UGSp zVhSh}mEwMd-&Mp^LkhtTFTO}VI12S}%WXlzOv{By6^eFyp|E>KR3kl!B%}w_T6_8S z_Wm7o<-5nd43@P`cSjV{wnDV%!Xb zn892jn@^b>a|`sKW&-c`9s->W(cq7gVv?s7we%IJmU_%YqqZXvfqPMYMcANTO%x1j z5?~rWb`}l4(}tM2_tG29a(fg)NM4&5LH@Id*j6XrDL1&9&Q9SGWYP z<6%$EN7{NzOxBKUiZa>4|&Pg+$s%`l| zh^$=M*z`oJPb&6X2;zJ)9atMPQQ7jhpkZz$INFM9cZ9`8+7v`|Gz(B+_R;$yZli_npvS0cnr&&a`N90MxJmg!`#y@R4t z(K5$V^5AP%R!EGqeFlXZ2u_fDTV5VD9;y_wvMA)t3N7$BCw@vYhYf2{<|~|Ic2C8MKr=wE@rpp-c__lQe;WIMQD|rQNERf+Bbr&- zw5jd-!m8KI(f%TrNWPE;^Cv5Q@(iV*PI{ z@dp%$LF844s<;b-PO-7=>r_yeJ?v}(L&OvkqL-(-ZW1{iRE?nM#ey7zgJIv8gEr0$ zX%&w%L~u-pi()d#5Ne4~y=zBfejN!lE{iNe%?Rzv1Ynlz1&7j3QC-GlD0 zw?a3P9uMyd6R7*WylydOf|f%vRVc-iYhbpK+@TbjswTM|5`=^Y2v5kWqAzu**@mlm z4iQVdzmZT5fcXzwrDrH+&noc}Xyc~Qylj?zE3p*due0G$2?olxd2d%|} z13fW4@MkMpY`2`R1%orBa!kfleL%()8eQ6MQMJn7f-+tDf(f81Y+A^@-`^v6yBV~- zzxQB-z{(gl-`hJq3hW4x!Y0hy-s6gGlr{%#s9mvlf)_ z4#M;o)n?X`6*p-Cq$t!{S;SgtN8;`Mdmi!m@&Dt5B$aRd@G4AM}! z$r*_r5j80#%#7ipVz`BORlWCqV3^7DWmR!*-Xz?*lMqqzC<(zhVdo~svH6tG zyqe zLzReOT8-Jh0zFEjzsadLDHl#-4000YlKi1_MaTs5%F8)l{XB#je3%fYJ%5szn6d%~T-Y z-@Y^C_4eB1-c(I*Z|{GoqL~H5?|04m6RL6(K|r!btYb19Xo0_=A zHjY(9+G`C>s_dBKAS-M;dBquw;OY^REI2fLc{}A0W4zVm+mr28=47?N;ps8n(ipyM zLna<((A?0|oCd}??58{l4OA;Gc3w9m%ce6IVQ++jI}r>|Q0LmAi+PQj%QF+P-5 z{^fsu^fiAX0Qk!9nh)V$*dhk-EP3|A9T``k>`@FMSIG~MqruJD0RBM)eUZzzLB*#r z0WMI?3!OSXQdjZ`UWqGNAms`JmLIuKKLj%VoNMf{$iY!f5oHr?9P24 z55>yI`3q2CJjZk&Z^l=2-~8+nogViOzUL8QzcQb|39-Hc|3A3YU(G!JiF^Ccv3

R~7S3yTn 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Μ=($RT|h_>)VO)o3Z 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%0AxXyJinO8088 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�F(MQY1k3phbXpGZa^Ra$u7X3xCT@Uo1 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