From 38bab29776950ac2364ed64195b89887717c33de Mon Sep 17 00:00:00 2001 From: Azat Bahawi Date: Thu, 1 Jan 1970 03:00:00 +0300 Subject: chore: init --- LICENSE | 14 + ack/.ackrc | 52 ++ ack/@install | 7 + aria2/.local/etc/aria2/aria2.conf | 18 + aria2/@install | 10 + aspell/.aspell.conf | 2 + aspell/@install | 7 + bash/.bash.d/10_options.bash | 14 + bash/.bash.d/20_history.bash | 10 + bash/.bash.d/30_completion.bash | 3 + bash/.bash.d/60_prompt.bash | 3 + bash/.bash_logout | 6 + bash/.bash_profile | 11 + bash/.bashrc | 11 + bash/@install | 10 + bat/.local/etc/bat/config | 4 + bat/@install | 10 + beets/.local/etc/beets/config.yaml | 22 + beets/@install | 10 + brittany/.local/etc/brittany/config.yaml | 49 ++ brittany/@install | 10 + ccache/.ccache/ccache.conf | 1 + ccache/@install | 10 + clang-format/.clang-format | 80 ++ clang-format/@install | 7 + cmake-format/.cmake-format | 18 + cmake-format/@install | 7 + cppman/.local/etc/cppman/cppman.cfg | 5 + cppman/@install | 10 + ctags/.ctags | 4 + ctags/@install | 7 + curl/.curlrc | 5 + curl/@install | 7 + dhex/.dhexrc | 43 + dhex/@install | 7 + dig/.digrc | 3 + dig/@install | 7 + editorconfig/.editorconfig | 89 ++ editorconfig/@install | 7 + fish/.local/etc/fish/conf.d/00_language.fish | 1 + fish/.local/etc/fish/conf.d/10_xdg.fish | 36 + fish/.local/etc/fish/conf.d/30_path.fish | 12 + fish/.local/etc/fish/conf.d/50_browser.fish | 21 + fish/.local/etc/fish/conf.d/50_diff.fish | 16 + fish/.local/etc/fish/conf.d/50_editor.fish | 16 + fish/.local/etc/fish/conf.d/50_pager.fish | 18 + fish/.local/etc/fish/conf.d/bear.fish | 22 + fish/.local/etc/fish/conf.d/beet.fish | 9 + fish/.local/etc/fish/conf.d/ccache.fish | 11 + fish/.local/etc/fish/conf.d/doom.fish | 7 + fish/.local/etc/fish/conf.d/dotnet.fish | 14 + fish/.local/etc/fish/conf.d/fzf.fish | 4 + fish/.local/etc/fish/conf.d/git.fish | 7 + fish/.local/etc/fish/conf.d/gnupg.fish | 3 + fish/.local/etc/fish/config.fish | 0 fish/.local/etc/fish/fish_variables | 32 + fish/.local/etc/fish/functions/ag.fish | 3 + fish/.local/etc/fish/functions/disk.fish | 5 + fish/.local/etc/fish/functions/ram.fish | 5 + fish/.local/etc/fish/functions/sudo.fish | 5 + fish/@install | 19 + fontconfig/.local/etc/fontconfig/fonts.conf | 257 ++++++ fontconfig/@install | 10 + gdb/.gdbinit | 43 + gdb/@install | 7 + ghc/.ghc/ghci.conf | 39 + ghc/@install | 10 + git/.gitconfig | 84 ++ git/.gitignore | 37 + git/@install | 7 + gnupg/.gnupg/dirmngr.conf | 1 + gnupg/.gnupg/gpg-agent.conf | 6 + gnupg/.gnupg/gpg.conf | 38 + gnupg/@install | 10 + gtk/.local/etc/gtk-2.0/settings.ini | 19 + gtk/.local/etc/gtk-3.0/settings.ini | 19 + gtk/@install | 12 + hackport/.hackport/repositories | 4 + hackport/@install | 10 + haskeline/.haskeline | 3 + haskeline/@install | 7 + htop/.local/etc/htop/htoprc | 40 + htop/@install | 10 + httpie/.httpie/config.json | 7 + httpie/@install | 10 + imv/.local/etc/imv/config | 3 + imv/@install | 10 + lftp/.local/etc/lftp/rc | 14 + lftp/@install | 10 + lldb/.lldbinit | 1 + lldb/@install | 7 + mksh/.mkshrc | 17 + mksh/@install | 9 + mpd/.local/etc/mpd/mpd.conf | 54 ++ mpd/@install | 20 + mpv/.local/etc/mpv/input.conf | 16 + mpv/.local/etc/mpv/mpv.conf | 100 +++ mpv/.local/etc/mpv/scripts/autoload.lua | 129 +++ mpv/.local/etc/mpv/scripts/autosub.lua | 27 + mpv/@install | 12 + ncmpcpp/.local/etc/ncmpcpp/bindings | 393 +++++++++ ncmpcpp/.local/etc/ncmpcpp/config | 124 +++ ncmpcpp/@install | 14 + nix/.local/etc/nixpkgs/home.nix | 577 ++++++++++++ nix/.nix-channels | 2 + nix/@install | 10 + nuget/.nuget/NuGet/NuGet.Config | 6 + nuget/@install | 10 + picom/.local/etc/picom.conf | 80 ++ picom/@install | 10 + pip/.local/etc/pip/pip.conf | 2 + pip/@install | 10 + postgres/.psqlrc | 16 + postgres/@install | 7 + profile/.profile | 26 + profile/.profile.d/00_lang.sh | 4 + profile/.profile.d/10_xdg.sh | 39 + profile/.profile.d/20_history.sh | 4 + profile/.profile.d/30_manpath.sh | 17 + profile/.profile.d/30_path.sh | 19 + profile/.profile.d/40_nix.sh | 19 + profile/.profile.d/50_browser.sh | 28 + profile/.profile.d/50_diff.sh | 22 + profile/.profile.d/50_editor.sh | 26 + profile/.profile.d/50_pager.sh | 24 + profile/.profile.d/60_devtoolset.sh | 5 + profile/.profile.d/60_dotnet.sh | 16 + profile/.profile.d/60_go.sh | 8 + profile/.profile.d/60_haskell.sh | 5 + profile/.profile.d/60_java.sh | 12 + profile/.profile.d/60_lisp.sh | 25 + profile/.profile.d/60_ocaml.sh | 8 + profile/.profile.d/60_python.sh | 19 + profile/.profile.d/60_rust.sh | 8 + profile/.profile.d/90_alias.sh | 34 + profile/.profile.d/90_functions.sh | 57 ++ profile/.profile.d/ag.sh | 5 + profile/.profile.d/bat.sh | 9 + profile/.profile.d/bear.sh | 23 + profile/.profile.d/beet.sh | 13 + profile/.profile.d/ccache.sh | 10 + profile/.profile.d/df.sh | 5 + profile/.profile.d/docker.sh | 12 + profile/.profile.d/doom.sh | 5 + profile/.profile.d/free.sh | 5 + profile/.profile.d/fzf.sh | 6 + profile/.profile.d/git.sh | 12 + profile/.profile.d/gnupg.sh | 20 + profile/.profile.d/grep.sh | 17 + profile/.profile.d/hledger.sh | 5 + profile/.profile.d/jot.sh | 7 + profile/.profile.d/less.sh | 6 + profile/.profile.d/llvm.sh | 12 + profile/.profile.d/ls.sh | 25 + profile/.profile.d/man.sh | 7 + profile/.profile.d/mpd.sh | 5 + profile/.profile.d/nnn.sh | 18 + profile/.profile.d/open.sh | 19 + profile/.profile.d/pass.sh | 16 + profile/.profile.d/rsync.sh | 12 + profile/.profile.d/shellcheck.sh | 5 + profile/.profile.d/svn.sh | 5 + profile/.profile.d/torrentinfo.sh | 5 + profile/.profile.d/uim.sh | 12 + profile/.profile.d/units.sh | 6 + profile/.profile.d/urxvt.sh | 6 + profile/.profile.d/vi.sh | 17 + profile/.profile.d/wakatime.sh | 8 + profile/.profile.d/wget.sh | 6 + profile/.profile.d/wine.sh | 13 + profile/@install | 10 + pulseaudio/.local/etc/pulse/client.conf | 37 + pulseaudio/.local/etc/pulse/daemon.conf | 89 ++ pulseaudio/.local/etc/pulse/default.pa | 130 +++ pulseaudio/@install | 10 + pylint/.pylintrc | 570 ++++++++++++ pylint/@install | 7 + python/.pystartup | 128 +++ python/@install | 7 + qutebrowser/.local/etc/qutebrowser/config.py | 1225 ++++++++++++++++++++++++++ qutebrowser/@install | 10 + r/.Rprofile | 71 ++ r/@install | 7 + radare2/.radare2rc | 3 + radare2/@install | 7 + readline/.inputrc | 65 ++ readline/@install | 7 + readme.org | 2 + rhash/.rhashrc | 2 + rhash/@install | 7 + ripgrep/.rgrc | 50 ++ ripgrep/@install | 7 + sbcl/.sbclrc | 15 + sbcl/@install | 7 + sqlite/.sqliterc | 3 + sqlite/@install | 7 + ssh/.ssh/config | 17 + ssh/@install | 10 + stack/.stack/config.yaml | 6 + stack/.stack/global-project/stack.yaml | 2 + stack/@install | 10 + stow/.stow-global-ignore | 2 + stow/@install | 7 + streamlink/.local/etc/streamlink/config | 3 + streamlink/@install | 10 + subversion/.subversion/config | 175 ++++ subversion/@install | 10 + sx/.local/etc/sx/sxrc | 74 ++ sx/@install | 10 + tmux/.tmux.conf | 66 ++ tmux/@install | 10 + uim/.uim | 143 +++ uim/@install | 12 + vim/.vim/vimrc | 236 +++++ vim/@install | 16 + wget/.wgetrc | 13 + wget/@install | 7 + xbindkeys/.xbindkeysrc | 69 ++ xbindkeys/@install | 7 + xdg/.local/etc/user-dirs.conf | 2 + xdg/.local/etc/user-dirs.dirs | 12 + xdg/.local/etc/user-dirs.locale | 1 + xdg/@install | 10 + xresources/.Xresources | 4 + xresources/.Xresources.d/color | 38 + xresources/.Xresources.d/font | 6 + xresources/.Xresources.d/xcursor | 5 + xresources/.Xresources.d/xft | 9 + xresources/@install | 10 + youtube-dl/.local/etc/youtube-dl/config | 15 + youtube-dl/@install | 10 + zsh/.zlogin | 28 + zsh/.zlogout | 12 + zsh/.zprofile | 6 + zsh/.zsh.d/00_terminfo.zsh | 16 + zsh/.zsh.d/10_options.zsh | 17 + zsh/.zsh.d/20_history.zsh | 20 + zsh/.zsh.d/30_completion.zsh | 77 ++ zsh/.zsh.d/40_keybindings.zsh | 3 + zsh/.zsh.d/50_colors.zsh | 3 + zsh/.zsh.d/60_prompt.zsh | 6 + zsh/.zsh.d/80_plugins.zsh | 32 + zsh/.zsh.d/90_external.zsh | 6 + zsh/.zshenv | 18 + zsh/.zshrc | 12 + zsh/@install | 10 + 246 files changed, 7814 insertions(+) create mode 100644 LICENSE create mode 100644 ack/.ackrc create mode 100755 ack/@install create mode 100644 aria2/.local/etc/aria2/aria2.conf create mode 100755 aria2/@install create mode 100644 aspell/.aspell.conf create mode 100755 aspell/@install create mode 100644 bash/.bash.d/10_options.bash create mode 100644 bash/.bash.d/20_history.bash create mode 100644 bash/.bash.d/30_completion.bash create mode 100644 bash/.bash.d/60_prompt.bash create mode 100644 bash/.bash_logout create mode 100644 bash/.bash_profile create mode 100644 bash/.bashrc create mode 100755 bash/@install create mode 100644 bat/.local/etc/bat/config create mode 100755 bat/@install create mode 100644 beets/.local/etc/beets/config.yaml create mode 100755 beets/@install create mode 100644 brittany/.local/etc/brittany/config.yaml create mode 100755 brittany/@install create mode 100644 ccache/.ccache/ccache.conf create mode 100755 ccache/@install create mode 100644 clang-format/.clang-format create mode 100755 clang-format/@install create mode 100644 cmake-format/.cmake-format create mode 100755 cmake-format/@install create mode 100644 cppman/.local/etc/cppman/cppman.cfg create mode 100755 cppman/@install create mode 100644 ctags/.ctags create mode 100755 ctags/@install create mode 100644 curl/.curlrc create mode 100755 curl/@install create mode 100644 dhex/.dhexrc create mode 100755 dhex/@install create mode 100644 dig/.digrc create mode 100755 dig/@install create mode 100644 editorconfig/.editorconfig create mode 100755 editorconfig/@install create mode 100644 fish/.local/etc/fish/conf.d/00_language.fish create mode 100644 fish/.local/etc/fish/conf.d/10_xdg.fish create mode 100644 fish/.local/etc/fish/conf.d/30_path.fish create mode 100644 fish/.local/etc/fish/conf.d/50_browser.fish create mode 100644 fish/.local/etc/fish/conf.d/50_diff.fish create mode 100644 fish/.local/etc/fish/conf.d/50_editor.fish create mode 100644 fish/.local/etc/fish/conf.d/50_pager.fish create mode 100644 fish/.local/etc/fish/conf.d/bear.fish create mode 100644 fish/.local/etc/fish/conf.d/beet.fish create mode 100644 fish/.local/etc/fish/conf.d/ccache.fish create mode 100644 fish/.local/etc/fish/conf.d/doom.fish create mode 100644 fish/.local/etc/fish/conf.d/dotnet.fish create mode 100644 fish/.local/etc/fish/conf.d/fzf.fish create mode 100644 fish/.local/etc/fish/conf.d/git.fish create mode 100644 fish/.local/etc/fish/conf.d/gnupg.fish create mode 100644 fish/.local/etc/fish/config.fish create mode 100644 fish/.local/etc/fish/fish_variables create mode 100644 fish/.local/etc/fish/functions/ag.fish create mode 100644 fish/.local/etc/fish/functions/disk.fish create mode 100644 fish/.local/etc/fish/functions/ram.fish create mode 100644 fish/.local/etc/fish/functions/sudo.fish create mode 100755 fish/@install create mode 100644 fontconfig/.local/etc/fontconfig/fonts.conf create mode 100755 fontconfig/@install create mode 100644 gdb/.gdbinit create mode 100755 gdb/@install create mode 100644 ghc/.ghc/ghci.conf create mode 100755 ghc/@install create mode 100644 git/.gitconfig create mode 100644 git/.gitignore create mode 100755 git/@install create mode 100644 gnupg/.gnupg/dirmngr.conf create mode 100644 gnupg/.gnupg/gpg-agent.conf create mode 100644 gnupg/.gnupg/gpg.conf create mode 100755 gnupg/@install create mode 100644 gtk/.local/etc/gtk-2.0/settings.ini create mode 100644 gtk/.local/etc/gtk-3.0/settings.ini create mode 100755 gtk/@install create mode 100644 hackport/.hackport/repositories create mode 100755 hackport/@install create mode 100644 haskeline/.haskeline create mode 100755 haskeline/@install create mode 100644 htop/.local/etc/htop/htoprc create mode 100755 htop/@install create mode 100644 httpie/.httpie/config.json create mode 100755 httpie/@install create mode 100644 imv/.local/etc/imv/config create mode 100755 imv/@install create mode 100644 lftp/.local/etc/lftp/rc create mode 100755 lftp/@install create mode 100644 lldb/.lldbinit create mode 100755 lldb/@install create mode 100644 mksh/.mkshrc create mode 100755 mksh/@install create mode 100644 mpd/.local/etc/mpd/mpd.conf create mode 100755 mpd/@install create mode 100644 mpv/.local/etc/mpv/input.conf create mode 100644 mpv/.local/etc/mpv/mpv.conf create mode 100644 mpv/.local/etc/mpv/scripts/autoload.lua create mode 100644 mpv/.local/etc/mpv/scripts/autosub.lua create mode 100755 mpv/@install create mode 100644 ncmpcpp/.local/etc/ncmpcpp/bindings create mode 100644 ncmpcpp/.local/etc/ncmpcpp/config create mode 100755 ncmpcpp/@install create mode 100644 nix/.local/etc/nixpkgs/home.nix create mode 100644 nix/.nix-channels create mode 100755 nix/@install create mode 100644 nuget/.nuget/NuGet/NuGet.Config create mode 100755 nuget/@install create mode 100644 picom/.local/etc/picom.conf create mode 100755 picom/@install create mode 100644 pip/.local/etc/pip/pip.conf create mode 100755 pip/@install create mode 100644 postgres/.psqlrc create mode 100755 postgres/@install create mode 100644 profile/.profile create mode 100644 profile/.profile.d/00_lang.sh create mode 100644 profile/.profile.d/10_xdg.sh create mode 100644 profile/.profile.d/20_history.sh create mode 100644 profile/.profile.d/30_manpath.sh create mode 100644 profile/.profile.d/30_path.sh create mode 100644 profile/.profile.d/40_nix.sh create mode 100644 profile/.profile.d/50_browser.sh create mode 100644 profile/.profile.d/50_diff.sh create mode 100644 profile/.profile.d/50_editor.sh create mode 100644 profile/.profile.d/50_pager.sh create mode 100644 profile/.profile.d/60_devtoolset.sh create mode 100644 profile/.profile.d/60_dotnet.sh create mode 100644 profile/.profile.d/60_go.sh create mode 100644 profile/.profile.d/60_haskell.sh create mode 100644 profile/.profile.d/60_java.sh create mode 100644 profile/.profile.d/60_lisp.sh create mode 100644 profile/.profile.d/60_ocaml.sh create mode 100644 profile/.profile.d/60_python.sh create mode 100644 profile/.profile.d/60_rust.sh create mode 100644 profile/.profile.d/90_alias.sh create mode 100644 profile/.profile.d/90_functions.sh create mode 100644 profile/.profile.d/ag.sh create mode 100644 profile/.profile.d/bat.sh create mode 100644 profile/.profile.d/bear.sh create mode 100644 profile/.profile.d/beet.sh create mode 100644 profile/.profile.d/ccache.sh create mode 100644 profile/.profile.d/df.sh create mode 100644 profile/.profile.d/docker.sh create mode 100644 profile/.profile.d/doom.sh create mode 100644 profile/.profile.d/free.sh create mode 100644 profile/.profile.d/fzf.sh create mode 100644 profile/.profile.d/git.sh create mode 100644 profile/.profile.d/gnupg.sh create mode 100644 profile/.profile.d/grep.sh create mode 100644 profile/.profile.d/hledger.sh create mode 100644 profile/.profile.d/jot.sh create mode 100644 profile/.profile.d/less.sh create mode 100644 profile/.profile.d/llvm.sh create mode 100644 profile/.profile.d/ls.sh create mode 100644 profile/.profile.d/man.sh create mode 100644 profile/.profile.d/mpd.sh create mode 100644 profile/.profile.d/nnn.sh create mode 100644 profile/.profile.d/open.sh create mode 100644 profile/.profile.d/pass.sh create mode 100644 profile/.profile.d/rsync.sh create mode 100644 profile/.profile.d/shellcheck.sh create mode 100644 profile/.profile.d/svn.sh create mode 100644 profile/.profile.d/torrentinfo.sh create mode 100644 profile/.profile.d/uim.sh create mode 100644 profile/.profile.d/units.sh create mode 100644 profile/.profile.d/urxvt.sh create mode 100644 profile/.profile.d/vi.sh create mode 100644 profile/.profile.d/wakatime.sh create mode 100644 profile/.profile.d/wget.sh create mode 100644 profile/.profile.d/wine.sh create mode 100755 profile/@install create mode 100644 pulseaudio/.local/etc/pulse/client.conf create mode 100644 pulseaudio/.local/etc/pulse/daemon.conf create mode 100644 pulseaudio/.local/etc/pulse/default.pa create mode 100755 pulseaudio/@install create mode 100644 pylint/.pylintrc create mode 100755 pylint/@install create mode 100644 python/.pystartup create mode 100755 python/@install create mode 100644 qutebrowser/.local/etc/qutebrowser/config.py create mode 100755 qutebrowser/@install create mode 100644 r/.Rprofile create mode 100755 r/@install create mode 100644 radare2/.radare2rc create mode 100755 radare2/@install create mode 100644 readline/.inputrc create mode 100755 readline/@install create mode 100644 readme.org create mode 100644 rhash/.rhashrc create mode 100755 rhash/@install create mode 100644 ripgrep/.rgrc create mode 100755 ripgrep/@install create mode 100644 sbcl/.sbclrc create mode 100755 sbcl/@install create mode 100644 sqlite/.sqliterc create mode 100755 sqlite/@install create mode 100644 ssh/.ssh/config create mode 100755 ssh/@install create mode 100644 stack/.stack/config.yaml create mode 100644 stack/.stack/global-project/stack.yaml create mode 100755 stack/@install create mode 100644 stow/.stow-global-ignore create mode 100755 stow/@install create mode 100644 streamlink/.local/etc/streamlink/config create mode 100755 streamlink/@install create mode 100644 subversion/.subversion/config create mode 100755 subversion/@install create mode 100755 sx/.local/etc/sx/sxrc create mode 100755 sx/@install create mode 100644 tmux/.tmux.conf create mode 100755 tmux/@install create mode 100644 uim/.uim create mode 100755 uim/@install create mode 100644 vim/.vim/vimrc create mode 100755 vim/@install create mode 100644 wget/.wgetrc create mode 100755 wget/@install create mode 100644 xbindkeys/.xbindkeysrc create mode 100755 xbindkeys/@install create mode 100644 xdg/.local/etc/user-dirs.conf create mode 100644 xdg/.local/etc/user-dirs.dirs create mode 100644 xdg/.local/etc/user-dirs.locale create mode 100755 xdg/@install create mode 100644 xresources/.Xresources create mode 100644 xresources/.Xresources.d/color create mode 100644 xresources/.Xresources.d/font create mode 100644 xresources/.Xresources.d/xcursor create mode 100644 xresources/.Xresources.d/xft create mode 100755 xresources/@install create mode 100644 youtube-dl/.local/etc/youtube-dl/config create mode 100755 youtube-dl/@install create mode 100644 zsh/.zlogin create mode 100644 zsh/.zlogout create mode 100644 zsh/.zprofile create mode 100644 zsh/.zsh.d/00_terminfo.zsh create mode 100644 zsh/.zsh.d/10_options.zsh create mode 100644 zsh/.zsh.d/20_history.zsh create mode 100644 zsh/.zsh.d/30_completion.zsh create mode 100644 zsh/.zsh.d/40_keybindings.zsh create mode 100644 zsh/.zsh.d/50_colors.zsh create mode 100644 zsh/.zsh.d/60_prompt.zsh create mode 100644 zsh/.zsh.d/80_plugins.zsh create mode 100644 zsh/.zsh.d/90_external.zsh create mode 100644 zsh/.zshenv create mode 100644 zsh/.zshrc create mode 100755 zsh/@install diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ee7d6a5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/ack/.ackrc b/ack/.ackrc new file mode 100644 index 0000000..4ef2413 --- /dev/null +++ b/ack/.ackrc @@ -0,0 +1,52 @@ +--color +--flush +--follow +--ignore-directory=is:.bzr +--ignore-directory=is:.cabal-sandbox +--ignore-directory=is:.ccls-cache +--ignore-directory=is:.git +--ignore-directory=is:.github +--ignore-directory=is:.hg +--ignore-directory=is:.idea +--ignore-directory=is:.stack-work +--ignore-directory=is:.svn +--ignore-directory=is:.vs +--ignore-directory=is:.vscode +--ignore-directory=is:CMakeFiles +--ignore-directory=is:__pycache__ +--ignore-directory=is:autom4te.cache +--ignore-directory=is:bin/Debug +--ignore-directory=is:bin/Release +--ignore-directory=is:build +--ignore-directory=is:dist +--ignore-directory=is:dist-newstyle +--ignore-directory=is:obj +--ignore-file=ext:P +--ignore-file=ext:Po +--ignore-file=ext:crt +--ignore-file=ext:d +--ignore-file=ext:in +--ignore-file=ext:log +--ignore-file=ext:m4 +--ignore-file=ext:pem +--ignore-file=is:.clang-format +--ignore-file=is:.gdb_history +--ignore-file=is:.nupkg.metadata +--ignore-file=is:.sublime-settings +--ignore-file=is:CMakeCache.txt +--ignore-file=is:CODE_OF_CONDUCT.md +--ignore-file=is:LICENSE +--ignore-file=is:cmake_install.cmake +--ignore-file=is:compile_commands.json +--ignore-file=is:config.status +--ignore-file=is:configure +--ignore-file=is:depcomp +--ignore-file=is:install-sh +--ignore-file=is:ltmain.sh +--ignore-file=is:missing +--ignore-file=is:stamp-h1 +--ignore-file=match:/\.ghc\.environment\..*/ +--ignore-file=match:/cabal\.project\..*/ +--nobreak +--smart-case +--sort-files diff --git a/ack/@install b/ack/@install new file mode 100755 index 0000000..8eb8e02 --- /dev/null +++ b/ack/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + ack diff --git a/aria2/.local/etc/aria2/aria2.conf b/aria2/.local/etc/aria2/aria2.conf new file mode 100644 index 0000000..7e15303 --- /dev/null +++ b/aria2/.local/etc/aria2/aria2.conf @@ -0,0 +1,18 @@ +bt-max-peers=128 +bt-save-metadata=true +continue=true +disable-ipv6=true +enable-dht=true +enable-peer-exchange=true +enable-rpc=false +follow-torrent=true +log-level=info +max-connection-per-server=16 +max-overall-upload-limit=1K +max-tries=5 +max-upload-limit=1K +min-split-size=1M +seed-ratio=0.1 +seed-time=0.1 +stream-piece-selector=default +timeout=60 diff --git a/aria2/@install b/aria2/@install new file mode 100755 index 0000000..4e3a8bb --- /dev/null +++ b/aria2/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/aria2" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/aria2" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + aria2 diff --git a/aspell/.aspell.conf b/aspell/.aspell.conf new file mode 100644 index 0000000..a6cbe6c --- /dev/null +++ b/aspell/.aspell.conf @@ -0,0 +1,2 @@ +personal /dev/null +repl /dev/null diff --git a/aspell/@install b/aspell/@install new file mode 100755 index 0000000..d8880b7 --- /dev/null +++ b/aspell/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + aspell diff --git a/bash/.bash.d/10_options.bash b/bash/.bash.d/10_options.bash new file mode 100644 index 0000000..fac4943 --- /dev/null +++ b/bash/.bash.d/10_options.bash @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +[[ $- == *i* ]] && stty -ixon + +set -b +H + +set -o notify + +shopt -s extglob +shopt -s globstar + +shopt -s autocd 2>/dev/null +shopt -s dirspell 2>/dev/null +shopt -s cdspell 2>/dev/null diff --git a/bash/.bash.d/20_history.bash b/bash/.bash.d/20_history.bash new file mode 100644 index 0000000..942b884 --- /dev/null +++ b/bash/.bash.d/20_history.bash @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +shopt -s histappend +shopt -s histreedit +shopt -s histverify + +[[ ${HISTFILE} =~ (_bash)+$ ]] && HISTFILE="${HISTFILE}_bash" +HISTCONTROL=erasedups:ignorespace +HISTFILESIZE=$HISTSIZE +HISTTIMEFORMAT="[%F %T] " diff --git a/bash/.bash.d/30_completion.bash b/bash/.bash.d/30_completion.bash new file mode 100644 index 0000000..9ea2fb0 --- /dev/null +++ b/bash/.bash.d/30_completion.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +complete -A directory cd diff --git a/bash/.bash.d/60_prompt.bash b/bash/.bash.d/60_prompt.bash new file mode 100644 index 0000000..c404206 --- /dev/null +++ b/bash/.bash.d/60_prompt.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +PS1="\[\033[0;32m\]\w\[\033[0m\] \[\033[0;33m\]λ\[\033[0m\] " diff --git a/bash/.bash_logout b/bash/.bash_logout new file mode 100644 index 0000000..4ad2227 --- /dev/null +++ b/bash/.bash_logout @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +if [ -f "${HOME}/.bin/logout-hook" ]; then + # shellcheck disable=SC1091 + source "${HOME}/.bin/logout-hook" +fi diff --git a/bash/.bash_profile b/bash/.bash_profile new file mode 100644 index 0000000..2691445 --- /dev/null +++ b/bash/.bash_profile @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +if [ -z "${PROFILE_SOURCED}" ] && [ -f "${HOME}"/.profile ]; then + # shellcheck disable=SC1091 + source "${HOME}/.profile" +fi + +if [ -f "${HOME}/.bashrc" ]; then + # shellcheck disable=SC1091 + source "${HOME}/.bashrc" +fi diff --git a/bash/.bashrc b/bash/.bashrc new file mode 100644 index 0000000..2a5ac92 --- /dev/null +++ b/bash/.bashrc @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +if [ -z "${PROFILE_SOURCED}" ] && [ -f "${HOME}"/.profile ]; then + # shellcheck disable=SC1091 + source "${HOME}/.profile" +fi + +for i in "${HOME}"/.bash.d/*.bash; do + # shellcheck disable=SC1090 + [[ -r "${i}" ]] && source "${i}" +done diff --git a/bash/@install b/bash/@install new file mode 100755 index 0000000..4b99750 --- /dev/null +++ b/bash/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${HOME}/.bash.d" ] && + mkdir -p "${HOME}/.bash.d" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + bash diff --git a/bat/.local/etc/bat/config b/bat/.local/etc/bat/config new file mode 100644 index 0000000..60365dd --- /dev/null +++ b/bat/.local/etc/bat/config @@ -0,0 +1,4 @@ +--style=plain +--tabs=4 +--theme=base16 +--wrap=never diff --git a/bat/@install b/bat/@install new file mode 100755 index 0000000..40c83a4 --- /dev/null +++ b/bat/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/bat" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/bat" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + bat diff --git a/beets/.local/etc/beets/config.yaml b/beets/.local/etc/beets/config.yaml new file mode 100644 index 0000000..63a51a5 --- /dev/null +++ b/beets/.local/etc/beets/config.yaml @@ -0,0 +1,22 @@ +--- +library: ~/.local/var/lib/beets/library.db +directory: ~/music +plugins: badfiles edit fetchart info mbsync scrub +import: + write: yes + copy: yes + move: no + bell: yes +match: + preferred: + countries: [ 'JP', 'GB|UK', 'AU', 'US', 'RU', 'XE' ] +edit: + albumfields: album artist albumartist + itemfields: track title album artist albumartist day month year genre +fetchart: + auto: yes + cautious: yes + cover_names: cover Cover folder Folder art Art album Album front Front + sources: filesystem coverart itunes amazon albumart wikipedia +scrub: + auto: yes diff --git a/beets/@install b/beets/@install new file mode 100755 index 0000000..f3d0c78 --- /dev/null +++ b/beets/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/beets" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/beets" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + beets diff --git a/brittany/.local/etc/brittany/config.yaml b/brittany/.local/etc/brittany/config.yaml new file mode 100644 index 0000000..1750ae1 --- /dev/null +++ b/brittany/.local/etc/brittany/config.yaml @@ -0,0 +1,49 @@ +conf_disable_formatting: false +conf_debug: + dconf_roundtrip_exactprint_only: false + dconf_dump_bridoc_simpl_par: false + dconf_dump_ast_unknown: false + dconf_dump_bridoc_simpl_floating: false + dconf_dump_config: true + dconf_dump_bridoc_raw: false + dconf_dump_bridoc_final: false + dconf_dump_bridoc_simpl_alt: false + dconf_dump_bridoc_simpl_indent: false + dconf_dump_annotations: false + dconf_dump_bridoc_simpl_columns: false + dconf_dump_ast_full: false +conf_forward: + options_ghc: [] +conf_errorHandling: + econf_ExactPrintFallback: ExactPrintFallbackModeInline + econf_Werror: false + econf_omit_output_valid_check: false + econf_produceOutputOnErrors: false +conf_preprocessor: + ppconf_CPPMode: CPPModeAbort + ppconf_hackAroundIncludes: false +conf_obfuscate: false +conf_roundtrip_exactprint_only: false +conf_version: 1 +conf_layout: + lconfig_reformatModulePreamble: true + lconfig_altChooser: + tag: AltChooserBoundedSearch + contents: 3 + lconfig_allowSingleLineExportList: false + lconfig_importColumn: 50 + lconfig_hangingTypeSignature: false + lconfig_importAsColumn: 50 + lconfig_alignmentLimit: 30 + lconfig_allowHangingQuasiQuotes: true + lconfig_indentListSpecial: true + lconfig_indentAmount: 2 + lconfig_alignmentBreakOnMultiline: true + lconfig_experimentalSemicolonNewlines: false + lconfig_cols: 80 + lconfig_indentPolicy: IndentPolicyFree + lconfig_indentWhereSpecial: true + lconfig_columnAlignMode: + tag: ColumnAlignModeMajority + contents: 0.7 + diff --git a/brittany/@install b/brittany/@install new file mode 100755 index 0000000..eb27905 --- /dev/null +++ b/brittany/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/brittany" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/brittany" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + brittany diff --git a/ccache/.ccache/ccache.conf b/ccache/.ccache/ccache.conf new file mode 100644 index 0000000..41ceb8d --- /dev/null +++ b/ccache/.ccache/ccache.conf @@ -0,0 +1 @@ +max_size = 4.0G diff --git a/ccache/@install b/ccache/@install new file mode 100755 index 0000000..4c90d4f --- /dev/null +++ b/ccache/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${HOME}/.ccache" ] && \ + mkdir -p "${HOME}/.ccache" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + ccache diff --git a/clang-format/.clang-format b/clang-format/.clang-format new file mode 100644 index 0000000..05ceba4 --- /dev/null +++ b/clang-format/.clang-format @@ -0,0 +1,80 @@ +--- +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: Consecutive +AlignConsecutiveBitFields: Consecutive +AlignConsecutiveDeclarations: Consecutive +AlignConsecutiveMacros: Consecutive +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: false +AllowAllArgumentsOnNextLine: false +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: Inline +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: All +AlwaysBreakAfterReturnType: AllDefinitions +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: false +BinPackParameters: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Allman +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeComma +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: false +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +IncludeBlocks: Regroup +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: NoIndent +IndentGotoLabels: false +IndentPPDirectives: None +IndentWidth: 4 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: false +Language: Cpp +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +PointerAlignment: Left +ReflowComments: false +SortIncludes: CaseSensitive +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInContainerLiterals: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Latest +TabWidth: 4 +UseTab: Always +... diff --git a/clang-format/@install b/clang-format/@install new file mode 100755 index 0000000..26e0182 --- /dev/null +++ b/clang-format/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + clang-format diff --git a/cmake-format/.cmake-format b/cmake-format/.cmake-format new file mode 100644 index 0000000..c3a5c9b --- /dev/null +++ b/cmake-format/.cmake-format @@ -0,0 +1,18 @@ +--- +format: + disable: false + line_width: 80 + tab_size: 4 + use_tabchars: false + fractional_tab_policy: use-space + separate_ctrl_name_with_space: false + separate_fn_name_with_space: false + dangle_parens: false + dangle_align: prefix + line_ending: unix + command_case: lower + keyword_case: upper + enable_sort: true + autosort: false +... +# vim: filetype=yaml diff --git a/cmake-format/@install b/cmake-format/@install new file mode 100755 index 0000000..d3b4820 --- /dev/null +++ b/cmake-format/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + cmake-format diff --git a/cppman/.local/etc/cppman/cppman.cfg b/cppman/.local/etc/cppman/cppman.cfg new file mode 100644 index 0000000..c47ee76 --- /dev/null +++ b/cppman/.local/etc/cppman/cppman.cfg @@ -0,0 +1,5 @@ +[Settings] +source = cppreference.com +updatemanpath = true +pager = system + diff --git a/cppman/@install b/cppman/@install new file mode 100755 index 0000000..9e76255 --- /dev/null +++ b/cppman/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/cppman" ] && + mkdir -p "${XDG_CONFIG_HOME}/cppman" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + cppman diff --git a/ctags/.ctags b/ctags/.ctags new file mode 100644 index 0000000..e6c8d82 --- /dev/null +++ b/ctags/.ctags @@ -0,0 +1,4 @@ +--exclude=.* +--recurse=yes +--tag-relative=yes +--totals=yes diff --git a/ctags/@install b/ctags/@install new file mode 100755 index 0000000..ebb447d --- /dev/null +++ b/ctags/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + ctags diff --git a/curl/.curlrc b/curl/.curlrc new file mode 100644 index 0000000..9df54c4 --- /dev/null +++ b/curl/.curlrc @@ -0,0 +1,5 @@ +connect-timeout = 60 +progress-bar +referer = ";auto" +remote-time +show-error diff --git a/curl/@install b/curl/@install new file mode 100755 index 0000000..1bcb15a --- /dev/null +++ b/curl/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + curl diff --git a/dhex/.dhexrc b/dhex/.dhexrc new file mode 100644 index 0000000..c7209c0 --- /dev/null +++ b/dhex/.dhexrc @@ -0,0 +1,43 @@ +#DHEXCOLORSCHEME +#VERSION 0 +#possible colors are: BLACK,RED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,WHITE +#possible extra flags are: UNDERLINE,REVERSE,BLINK,DIM,BOLD + +BRACKETS: FG=BLACK,BG=BLACK,BOLD +HEXFIELD: FG=WHITE,BG=BLACK +INPUT: FG=WHITE,BG=RED,BOLD +CURSOR: FG=WHITE,BG=BLACK +TEXT: FG=LIGHTCYAN,BG=BLACK,BOLD +MENU_NORMAL: FG=LIGHTBLUE,BG=BLACK +MENU_HIGHLIGHT: FG=LIGHTBLUE,BG=BLUE +MENU_HOTKEY: FG=CYAN,BG=BLACK +MENU_HOTKEY_HI: FG=CYAN,BG=BLUE +FRAME: FG=BLUE,BG=BLACK +NORMAL_DIFF: FG=YELLOW,BG=BLACK,BOLD +CURSOR_DIFF: FG=YELLOW,BG=WHITE,BOLD +HEADLINE: FG=BLUE,BG=BLACK +HEADER: FG=BLACK,BG=CYAN + +KEYESC:1b +KEYF1:1b 4f 50 +KEYF2:1b 4f 51 +KEYF3:1b 4f 52 +KEYF4:1b 4f 53 +KEYF5:1b 5b 31 35 7e +KEYF6:1b 5b 31 37 7e +KEYF7:1b 5b 31 38 7e +KEYF8:1b 5b 31 39 7e +KEYF9:1b 5b 32 30 7e +KEYF10:1b 5b 32 31 7e +KEYBACKSPACE:7f +KEYDEL:1b 5b 50 +KEYENTER:0a +KEYTAB:09 +KEYUP:1b 5b 41 +KEYDOWN:1b 5b 42 +KEYRIGHT:1b 5b 43 +KEYLEFT:1b 5b 44 +KEYPGUP:1b 5b 35 7e +KEYPGDOWN:1b 5b 36 7e +KEYHOME:1b 5b 48 +KEYEND:1b 5b 34 7e diff --git a/dhex/@install b/dhex/@install new file mode 100755 index 0000000..83bc7f9 --- /dev/null +++ b/dhex/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + dhex diff --git a/dig/.digrc b/dig/.digrc new file mode 100644 index 0000000..7bb28ce --- /dev/null +++ b/dig/.digrc @@ -0,0 +1,3 @@ ++answer ++multiline ++recurse diff --git a/dig/@install b/dig/@install new file mode 100755 index 0000000..5af6092 --- /dev/null +++ b/dig/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + dig diff --git a/editorconfig/.editorconfig b/editorconfig/.editorconfig new file mode 100644 index 0000000..0bb0c6e --- /dev/null +++ b/editorconfig/.editorconfig @@ -0,0 +1,89 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +# Assembly +[*.{asm,s,S}] +indent_style = tab + +# C/C++ +[*.{c,h,cc,hh,cpp,hpp,cxx,hxx}] +indent_style = tab +max_line_length = 80 +trim_trailing_whitespace = false +insert_final_newline = false + +# C# +[*.cs] +indent_style = tab + +# Go +[*.go] +indent_style = tab + +# Python +[*.py] +max_line_length = 80 + +# Haskell +[*.{hs,lhs}] +indent_size = 2 + +# Emacs Lisp +[*.el] +indent_size = 2 + +# Common Lisp +[*.{lisp,cl}] +indent_size = 2 + +# Scheme +[*.scm] +indent_size = 2 + +# Make +[{Makefile,*.mk}] +indent_style = tab + +# CMake +[{CMakeLists.txt,*.cmake}] +indent_style = tab + +# Autotools +[*.{ac,am}] +indent_style = tab + +# Shell +[*.{sh,bash}] +indent_style = tab +insert_final_newline = false +trim_trailing_whitespace = false + +# Gentoo +[*.ebuild] +indent_style = tab + +# RPM Spec +[*.spec] +insert_final_newline = false +trim_trailing_whitespace = false + +# Nix +[*.nix] +indent_size = 2 + +# XML +[*.xml] +indent_style = tab +insert_final_newline = false +trim_trailing_whitespace = false + +# Git +[*.git*] +indent_style = tab diff --git a/editorconfig/@install b/editorconfig/@install new file mode 100755 index 0000000..8c0622f --- /dev/null +++ b/editorconfig/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + editorconfig diff --git a/fish/.local/etc/fish/conf.d/00_language.fish b/fish/.local/etc/fish/conf.d/00_language.fish new file mode 100644 index 0000000..5779887 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/00_language.fish @@ -0,0 +1 @@ +set -x LC_COLLATE C diff --git a/fish/.local/etc/fish/conf.d/10_xdg.fish b/fish/.local/etc/fish/conf.d/10_xdg.fish new file mode 100644 index 0000000..dfe4125 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/10_xdg.fish @@ -0,0 +1,36 @@ +#!/bin/fish + +set -x XDG_CACHE_HOME "$HOME/.local/var/cache" +set -x XDG_CONFIG_HOME "$HOME/.local/etc" +set -x XDG_DATA_HOME "$HOME/.local/var/lib" +set -x XDG_DESKTOP_DIR "$HOME/documents" +set -x XDG_DOCUMENTS_DIR "$HOME/documents" +set -x XDG_DOWNLOAD_DIR "$HOME/downloads" +set -x XDG_MUSIC_DIR "$HOME/music" +set -x XDG_PICTURES_DIR "$HOME/pictures" +set -x XDG_PUBLICSHARE_DIR "$HOME/documents" +set -x XDG_RUNTIME_DIR "$HOME/.local/var/run" +set -x XDG_TEMPLATES_DIR "$HOME/documents" +set -x XDG_VIDEOS_DIR "$HOME/videos" + +set xdg_dirs +set -a xdg_dirs $XDG_CACHE_HOME +set -a xdg_dirs $XDG_CONFIG_HOME +set -a xdg_dirs $XDG_DATA_HOME +set -a xdg_dirs $XDG_DESKTOP_DIR +set -a xdg_dirs $XDG_DOCUMENTS_DIR +set -a xdg_dirs $XDG_DOWNLOAD_DIR +set -a xdg_dirs $XDG_MUSIC_DIR +set -a xdg_dirs $XDG_PICTURES_DIR +set -a xdg_dirs $XDG_PUBLICSHARE_DIR +set -a xdg_dirs $XDG_RUNTIME_DIR +set -a xdg_dirs $XDG_TEMPLATES_DIR +set -a xdg_dirs $XDG_VIDEOS_DIR + +for i in $xdg_dirs + if ! test -d $i + mkdir -p $i + end +end + +set -e xdg_dirs diff --git a/fish/.local/etc/fish/conf.d/30_path.fish b/fish/.local/etc/fish/conf.d/30_path.fish new file mode 100644 index 0000000..b8b6bfa --- /dev/null +++ b/fish/.local/etc/fish/conf.d/30_path.fish @@ -0,0 +1,12 @@ +set -e PATH + +set PATH +set -a PATH "/sbin" +set -a PATH "/bin" +set -a PATH "/usr/sbin" +set -a PATH "/usr/bin" +set -a PATH "/usr/local/bin" +set -a PATH "$HOME/.bin" +set -a PATH "$HOME/.local/bin" + +set -x PATH diff --git a/fish/.local/etc/fish/conf.d/50_browser.fish b/fish/.local/etc/fish/conf.d/50_browser.fish new file mode 100644 index 0000000..0e79ba6 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/50_browser.fish @@ -0,0 +1,21 @@ +set alts +set -a alts qutebrowser +set -a alts librewolf +set -a alts firefox +set -a alts chromium +set -a alts chromium-browser +set -a alts surf +set -a alts w3m +set -a alts lynx +set -a alts elinks +set -a alts links + +for i in $alts + if command -s $i &>/dev/null + set -x BROWSER $i + alias b $i + break + end +end + +set -e alts diff --git a/fish/.local/etc/fish/conf.d/50_diff.fish b/fish/.local/etc/fish/conf.d/50_diff.fish new file mode 100644 index 0000000..000c93b --- /dev/null +++ b/fish/.local/etc/fish/conf.d/50_diff.fish @@ -0,0 +1,16 @@ +set alts +set -a alts batdiff +set -a alts colordiff +set -a alts cwdiff +set -a alts wdiff +set -a alts diff + +for i in $alts + if command -s $i &>/dev/null + set -x DIFF $i + alias d $i + break + end +end + +set -e alts diff --git a/fish/.local/etc/fish/conf.d/50_editor.fish b/fish/.local/etc/fish/conf.d/50_editor.fish new file mode 100644 index 0000000..a240123 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/50_editor.fish @@ -0,0 +1,16 @@ +set alts +set -a alts nvim +set -a alts vim +set -a alts vi +set -a alts nano +set -a alts ed + +for i in $alts + if command -s $i &>/dev/null + set -x EDITOR $i + alias e $i + break + end +end + +set -e alts diff --git a/fish/.local/etc/fish/conf.d/50_pager.fish b/fish/.local/etc/fish/conf.d/50_pager.fish new file mode 100644 index 0000000..dd643b5 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/50_pager.fish @@ -0,0 +1,18 @@ +set alts +set -a alts +set -a alts slit +set -a alts moar +set -a alts most +set -a alts less +set -a alts more +set -a alts cat + +for i in $alts + if command -s $i &>/dev/null + set -x PAGER $i + alias p $i + break + end +end + +set -e alts diff --git a/fish/.local/etc/fish/conf.d/bear.fish b/fish/.local/etc/fish/conf.d/bear.fish new file mode 100644 index 0000000..096ba44 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/bear.fish @@ -0,0 +1,22 @@ +if command -s bear &>/dev/null + set alts + set -a remake + set -a make + + for i in $alts + if command -s $i &>/dev/null + set bear_base="bear --include=./include --include=../include $i" + if command -s nproc &>/dev/null + alias m "$bear_base --jobs=(math (nproc) + 1)" + else + alias m "$bear_base" + end + set -e bear_base + + alias mc "m clean" + + break + end + end + set -e alts +end diff --git a/fish/.local/etc/fish/conf.d/beet.fish b/fish/.local/etc/fish/conf.d/beet.fish new file mode 100644 index 0000000..0882aba --- /dev/null +++ b/fish/.local/etc/fish/conf.d/beet.fish @@ -0,0 +1,9 @@ +if command -s beet &>/dev/null + set -x BEETSDIR $XDG_DATA_HOME/beets + + set beets_config $XDG_CONFIG_HOME/beets/config.yaml + if test -e $beets_config + alias beet "beet -c $beets_config" + end + set -e beets_config +end diff --git a/fish/.local/etc/fish/conf.d/ccache.fish b/fish/.local/etc/fish/conf.d/ccache.fish new file mode 100644 index 0000000..d973e03 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/ccache.fish @@ -0,0 +1,11 @@ +if command -s ccache &>/dev/null + set -x CCACHE_DIR $HOME/.ccache + + set ccache_bin "/usr/lib/ccache/bin" + if test -d $ccache_bin + set -x CCACHE_PATH $ccache_bin:$PATH + else + set -x CCACHE_PATH $PATH + end + set -e ccache_bin +end diff --git a/fish/.local/etc/fish/conf.d/doom.fish b/fish/.local/etc/fish/conf.d/doom.fish new file mode 100644 index 0000000..44cb0c8 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/doom.fish @@ -0,0 +1,7 @@ +set doom_bin $HOME/.emacs.d/bin + +if test -x $doom_bin/doom + set -a PATH $doom_bin +end + +set -e doom_bin diff --git a/fish/.local/etc/fish/conf.d/dotnet.fish b/fish/.local/etc/fish/conf.d/dotnet.fish new file mode 100644 index 0000000..282aa60 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/dotnet.fish @@ -0,0 +1,14 @@ +if command -s dotnet &>/dev/null + set -a PATH $HOME/.dotnet/tools + + set -x DOTNET_CLI_TELEMETRY_OPTOUT 1 + set -x DOTNET_SKIP_FIRST_TIME_EXPERIENCE 1 + + if command -s nuget &>/dev/null + set -x NUGET_CERT_REVOCATION_MODE online + set -x NUGET_PERSIST_DG false + set -x NUGET_RESTORE_MSBUILD_VERBOSITY normal + set -x NUGET_SHOW_STACK true + set -x NUGET_XMLDOC_MODE skip + end +end diff --git a/fish/.local/etc/fish/conf.d/fzf.fish b/fish/.local/etc/fish/conf.d/fzf.fish new file mode 100644 index 0000000..5f11499 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/fzf.fish @@ -0,0 +1,4 @@ +if command -s fzf &>/dev/null + set -x FZF_DEFAULT_COMMAND + set -x FZF_DEFAULT_OPTS "--height 20% --reverse --border" +end diff --git a/fish/.local/etc/fish/conf.d/git.fish b/fish/.local/etc/fish/conf.d/git.fish new file mode 100644 index 0000000..f3c33f5 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/git.fish @@ -0,0 +1,7 @@ +if command -s git &>/dev/null + if command -s hub &>/dev/null + alias git hub + end + + alias g git +end diff --git a/fish/.local/etc/fish/conf.d/gnupg.fish b/fish/.local/etc/fish/conf.d/gnupg.fish new file mode 100644 index 0000000..ccf9205 --- /dev/null +++ b/fish/.local/etc/fish/conf.d/gnupg.fish @@ -0,0 +1,3 @@ +if command -s gpg &>/dev/null + set -x GPG_TTY (tty) +end diff --git a/fish/.local/etc/fish/config.fish b/fish/.local/etc/fish/config.fish new file mode 100644 index 0000000..e69de29 diff --git a/fish/.local/etc/fish/fish_variables b/fish/.local/etc/fish/fish_variables new file mode 100644 index 0000000..8fec0ec --- /dev/null +++ b/fish/.local/etc/fish/fish_variables @@ -0,0 +1,32 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3100 +SETUVAR fish_color_autosuggestion:555\x1ebrblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:005fd7 +SETUVAR fish_color_comment:990000 +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:009900 +SETUVAR fish_color_error:ff0000 +SETUVAR fish_color_escape:00a6b2 +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:00a6b2 +SETUVAR fish_color_param:00afff +SETUVAR fish_color_quote:999900 +SETUVAR fish_color_redirection:00afff +SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_greeting:\x1d +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:\x1d +SETUVAR fish_pager_color_description:B3A06D\x1eyellow +SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan diff --git a/fish/.local/etc/fish/functions/ag.fish b/fish/.local/etc/fish/functions/ag.fish new file mode 100644 index 0000000..6c76e6b --- /dev/null +++ b/fish/.local/etc/fish/functions/ag.fish @@ -0,0 +1,3 @@ +if command -s ag &>/dev/null + alias ag "ag --color --smart-case" +end diff --git a/fish/.local/etc/fish/functions/disk.fish b/fish/.local/etc/fish/functions/disk.fish new file mode 100644 index 0000000..ae91056 --- /dev/null +++ b/fish/.local/etc/fish/functions/disk.fish @@ -0,0 +1,5 @@ +if command -v df &>/dev/null + function disk -w df + df --human-readable --exclude-type=tmpfs --exclude-type=devtmpfs $argv + end +end diff --git a/fish/.local/etc/fish/functions/ram.fish b/fish/.local/etc/fish/functions/ram.fish new file mode 100644 index 0000000..720328f --- /dev/null +++ b/fish/.local/etc/fish/functions/ram.fish @@ -0,0 +1,5 @@ +if command -v free &>/dev/null + function ram -w free + free --human --wide + end +end diff --git a/fish/.local/etc/fish/functions/sudo.fish b/fish/.local/etc/fish/functions/sudo.fish new file mode 100644 index 0000000..ad84a67 --- /dev/null +++ b/fish/.local/etc/fish/functions/sudo.fish @@ -0,0 +1,5 @@ +if command -v doas &>/dev/null and not command -s sudo &>/dev/null + function sudo -w doas + doas $argv + end +end diff --git a/fish/@install b/fish/@install new file mode 100755 index 0000000..63c8393 --- /dev/null +++ b/fish/@install @@ -0,0 +1,19 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/fish" ] && + mkdir -p "${XDG_CONFIG_HOME}/fish" + +[ ! -d "${XDG_CONFIG_HOME}/fish/completions" ] && + mkdir -p "${XDG_CONFIG_HOME}/fish/completions" + +[ ! -d "${XDG_CONFIG_HOME}/fish/conf.d" ] && + mkdir -p "${XDG_CONFIG_HOME}/fish/conf.d" + +[ ! -d "${XDG_CONFIG_HOME}/fish/functions" ] && + mkdir -p "${XDG_CONFIG_HOME}/fish/functions" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + fish diff --git a/fontconfig/.local/etc/fontconfig/fonts.conf b/fontconfig/.local/etc/fontconfig/fonts.conf new file mode 100644 index 0000000..2dd0378 --- /dev/null +++ b/fontconfig/.local/etc/fontconfig/fonts.conf @@ -0,0 +1,257 @@ + + + + + Source Sans Pro + + sans-serif + + + + Source Code Pro + + monospace + + + + Source Han Sans JP + + sans-serif + + + + Source Han Sans KR + + sans-serif + + + + Source Han Sans CN + + sans-serif + + + + Source Han Sans TW + + sans-serif + + + + M+ 2p + + serif + + + + M+ 2c + + serif + + + + M+ 2m + + serif + + + + M+ 1p + + sans-serif + + + + M+ 1c + + sans-serif + + + + M+ 1m + + sans-serif + + + + M+ 1mn + + monospace + + + + M+ 2mn + + monospace + + + + UW Ttyp0 + + monospace + + + + + Efont Biwidth + + monospace + + + + + Efont Fixed + + monospace + + + + + Misc Batang Wide + + monospace + + + + + Misc Gulim Wide + + monospace + + + + + + sans-serif + + + monospace + + + + + + serif + + + monospace + + + + + sans-serif + + Source Sans Pro + Source Han Sans CN + Source Han Sans JP + Source Han Sans KR + IPA Pゴシック + IPAGothic + 백묵 돋움 + Bakemuk Dotum + DejaVu Sans + Droid Sans + Noto Sans + + + + serif + + Source Serif Pro + Source Han Sans CN + Source Han Sans JP + Source Han Sans KR + IPA明朝 + IPAMincho + 백묵 돋움 + Bakemuk Dotum + DejaVu Serif + Droid Serif + Noto Serif + + + + monospace + + Source Code Pro + IPA Pゴシック + IPAGothic + 백묵 돋움 + Bakemuk Dotum + DejaVu Sans Mono + Droid Mono + Noto Mono + + + + + UW Ttyp0 + + + Efont Biwidth + Efont Fixed + Bakemuk Gulim + Bakemuk Batang + + + diff --git a/fontconfig/@install b/fontconfig/@install new file mode 100755 index 0000000..bbfb862 --- /dev/null +++ b/fontconfig/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/fontconfig" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/fontconfig" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + fontconfig diff --git a/gdb/.gdbinit b/gdb/.gdbinit new file mode 100644 index 0000000..f739e8d --- /dev/null +++ b/gdb/.gdbinit @@ -0,0 +1,43 @@ +set confirm off +set verbose off +set editing off + +set history expansion on + +set height 0 +set width 0 + +handle SIGALRM nostop print nopass +handle SIGBUS stop print nopass +handle SIGPIPE nostop print nopass +handle SIGSEGV stop print nopass + +set python print-stack full + +set print address on +set print elements 0 +set print object on +set print pretty on +set print repeats 0 +set print static-members on +set print vtbl on + +set output-radix 10 + +set demangle-style gnu-v3 + +set disassembly-flavor intel + +alias iv=info variables + +alias da=disassemble + +define fs + finish + step +end + +define btc + backtrace + continue +end diff --git a/gdb/@install b/gdb/@install new file mode 100755 index 0000000..621a7dc --- /dev/null +++ b/gdb/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + gdb diff --git a/ghc/.ghc/ghci.conf b/ghc/.ghc/ghci.conf new file mode 100644 index 0000000..9cfcad1 --- /dev/null +++ b/ghc/.ghc/ghci.conf @@ -0,0 +1,39 @@ +:set -XBinaryLiterals +:set -XFlexibleContexts +:set -XNoMonomorphismRestriction + +:seti -XConstraintKinds +:seti -XDataKinds +:seti -XDeriveFunctor +:seti -XFlexibleInstances +:seti -XFunctionalDependencies +:seti -XGADTs +:seti -XLambdaCase +:seti -XMagicHash +:seti -XMultiParamTypeClasses +:seti -XMultiWayIf +:seti -XOverloadedLabels +:seti -XPackageImports +:seti -XPolyKinds +:seti -XRankNTypes +:seti -XScopedTypeVariables +:seti -XStandaloneDeriving +:seti -XTupleSections +:seti -XTypeFamilies +:seti -XTypeOperators +:seti -XUndecidableInstances + +:set +c +:set +m +:set +r +:set +s +:set +t + +:set prompt "\ESC[1;34mλ\ESC[m\STX \ESC[1;37m>\ESC[m\STX " +:set prompt-cont "\ESC[1;34m …\ESC[m\STX \ESC[1;37m>\ESC[m\STX " + +:def clear \_ -> pure (":!clear") +:def hoogle \x -> pure (":!hoogle --color --count=10 \"" ++ x ++ "\"") +:def hinfo \x -> pure (":!hoogle --color --info \"" ++ x ++ "\"") + +-- vim: filetype=haskell diff --git a/ghc/@install b/ghc/@install new file mode 100755 index 0000000..1ae2a70 --- /dev/null +++ b/ghc/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${HOME}/.ghc" ] && \ + mkdir -p "${HOME}/.ghc" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + ghc diff --git a/git/.gitconfig b/git/.gitconfig new file mode 100644 index 0000000..0394754 --- /dev/null +++ b/git/.gitconfig @@ -0,0 +1,84 @@ +[user] + name = Azat Bahawi + email = azahi@teknik.io + signingkey = 0xB40FCB6608BBE3B6 +[core] + attributesfile = ~/.gitattributes + excludesfile = ~/.gitignore + whitespace = trailing-space +[init] + defaultbranch = master +[commit] + gpgsign = true +[diff] + mnemonicprefix = true + renames = copies + submodule = log +[branch] + autosetupmerge = always + autosetuprebase = always +[merge] + conflictstyle = diff3 + stat = true +[rebase] + autosquash = true + autostash = true +[fetch] + prune = true +[push] + default = current + followtags = true +[pull] + ff = only + rebase = true +[status] + submodulesummary = true +[rerere] + enabled = true +[advice] + detachedhead = false + pushnonfastforwards = false + statushints = false +[color] + ui = true +[github] + user = azahi +[alias] + ad = add + ada = add --all + al = config --get-regexp alias + br = branch --all + ch = checkout + cho = checkout --orphan + ci = commit + cia = commit --amend + cias = commit --amend --signoff + cl = clone + clr = clone --recurse-submodules + cls = clone --depth=1 + cp = cherry-pick + di = !"git diff-index --quiet HEAD ; git diff --patch-with-stat" + dis = !"git diff-index --quiet HEAD ; git diff --patch-with-stat --staged" + fe = fetch + fer = fetch --all --recurse-submodules + fuck = reset --hard + gud = commit --message=\"git gud\" + hist = log --all --decorate --abbrev-commit --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' + lo = log + ls = ls-files + me = merge + mei = merge --interactive + pl = pull + plr = pull --all --recurse-submodules + ps = push + rb = rebase + rbi = rebase --interactive + re = reset HEAD + ree = reset HEAD^ + reee = reset HEAD^^ + setup = !"git init && git commit --allow-empty -m Initial" + st = status --short + ui = update-index --assume-unchanged + uiu = update-index --un-assume-unchanged + wc = whatchanged -p --abbrev-commit --pretty=medium + wtc = !"curl -s whatthecommit.com/index.txt | git commit --file -" diff --git a/git/.gitignore b/git/.gitignore new file mode 100644 index 0000000..eefa962 --- /dev/null +++ b/git/.gitignore @@ -0,0 +1,37 @@ +# Vim +.netrwhist +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Emacs +*~ +.dir-locals.el +\#*\# + +# JetBrains +.idea/ +cmake-build-*/ + +# VSCode +.vscode/ + +# Tags +.[Tt][Aa][Gg][Ss] +[Tt][Aa][Gg][Ss] +![Tt][Aa][Gg][Ss]/ + +# Misc +*.bak +*.tmp +.ccls-cache/ +.clangd/ +.gdb_history +.svn/ +.wakatime-project +a.out +compile_commands.json +cscope.* +vgcore.* diff --git a/git/@install b/git/@install new file mode 100755 index 0000000..677a6ab --- /dev/null +++ b/git/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + git diff --git a/gnupg/.gnupg/dirmngr.conf b/gnupg/.gnupg/dirmngr.conf new file mode 100644 index 0000000..f000ca5 --- /dev/null +++ b/gnupg/.gnupg/dirmngr.conf @@ -0,0 +1 @@ +hkp-cacert /usr/share/gnupg/sks-keyservers.netCA.pem diff --git a/gnupg/.gnupg/gpg-agent.conf b/gnupg/.gnupg/gpg-agent.conf new file mode 100644 index 0000000..c3b7562 --- /dev/null +++ b/gnupg/.gnupg/gpg-agent.conf @@ -0,0 +1,6 @@ +enable-ssh-support + +default-cache-ttl 999999 +default-cache-ttl-ssh 999999 +max-cache-ttl 999999 +max-cache-ttl-ssh 999999 diff --git a/gnupg/.gnupg/gpg.conf b/gnupg/.gnupg/gpg.conf new file mode 100644 index 0000000..77a0bfb --- /dev/null +++ b/gnupg/.gnupg/gpg.conf @@ -0,0 +1,38 @@ +display-charset utf-8 +enable-progress-filter +fixed-list-mode +keyid-format 0xlong +no-comments +no-emit-version +no-greeting +with-fingerprint + +armor + +use-agent + +list-options show-uid-validity show-usage +verify-options show-uid-validity + +default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed + +personal-cipher-preferences AES256 AES192 AES +s2k-cipher-algo AES256 + +personal-digest-preferences SHA512 SHA384 SHA256 SHA224 +digest-algo SHA512 +cert-digest-algo SHA512 +s2k-digest-algo SHA512 + +personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed + +no-random-seed-file + +keyserver hkps://hkps.pool.sks-keyservers.net +keyserver hkps://keys.gnupg.net +keyserver hkps://keys.openpgp.org +keyserver hkps://pgp.mit.edu + +keyserver-options auto-key-retrieve +keyserver-options no-include-revoked +keyserver-options no-honor-keyserver-url diff --git a/gnupg/@install b/gnupg/@install new file mode 100755 index 0000000..16c43a8 --- /dev/null +++ b/gnupg/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${HOME}/.gnupg" ] && \ + mkdir -p "${HOME}/.gnupg" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + gnupg diff --git a/gtk/.local/etc/gtk-2.0/settings.ini b/gtk/.local/etc/gtk-2.0/settings.ini new file mode 100644 index 0000000..ff8e840 --- /dev/null +++ b/gtk/.local/etc/gtk-2.0/settings.ini @@ -0,0 +1,19 @@ +[Settings] +gtk-application-prefer-dark-theme = true +gtk-button-images = 0 +gtk-cursor-theme-name = default +gtk-cursor-theme-size = 0 +gtk-enable-event-sounds = 0 +gtk-enable-input-feedback-sounds = 0 +gtk-font-name = Source Sans Pro +gtk-icon-theme-name = Adwaita +gtk-menu-images = 0 +gtk-recent-files-enabled = 0 +gtk-recent-files-enabled = 0 +gtk-theme-name = "Adwaita" +gtk-toolbar-icon-size = GTK_ICON_SIZE_MENU +gtk-toolbar-style = GTK_TOOLBAR_TEXT +gtk-xft-antialias = 1 +gtk-xft-hinting = 1 +gtk-xft-hintstyle = hintslight +gtk-xft-rgba = rgb diff --git a/gtk/.local/etc/gtk-3.0/settings.ini b/gtk/.local/etc/gtk-3.0/settings.ini new file mode 100644 index 0000000..5a26c09 --- /dev/null +++ b/gtk/.local/etc/gtk-3.0/settings.ini @@ -0,0 +1,19 @@ +[Settings] +gtk-application-prefer-dark-theme = true +gtk-button-images = 0 +gtk-cursor-theme-name = default +gtk-cursor-theme-size = 0 +gtk-enable-event-sounds = 0 +gtk-enable-input-feedback-sounds = 0 +gtk-font-name = Source Sans Pro +gtk-icon-theme-name = Adwaita +gtk-menu-images = 0 +gtk-recent-files-enabled = 0 +gtk-recent-files-enabled = 0 +gtk-theme-name = Adwaita +gtk-toolbar-icon-size = GTK_ICON_SIZE_MENU +gtk-toolbar-style = GTK_TOOLBAR_TEXT +gtk-xft-antialias = 1 +gtk-xft-hinting = 1 +gtk-xft-hintstyle = hintslight +gtk-xft-rgba = rgb diff --git a/gtk/@install b/gtk/@install new file mode 100755 index 0000000..6b3e26e --- /dev/null +++ b/gtk/@install @@ -0,0 +1,12 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/gtk-2.0" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/gtk-2.0" +[ ! -d "${XDG_CONFIG_HOME}/gtk-3.0" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/gtk-3.0" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + gtk diff --git a/hackport/.hackport/repositories b/hackport/.hackport/repositories new file mode 100644 index 0000000..a4a4df2 --- /dev/null +++ b/hackport/.hackport/repositories @@ -0,0 +1,4 @@ +Just LocalInfo { distfiles_dir = "/var/cache/distfiles" + , overlay_list = [ "/home/azahi/src/gentoo-haskell" ] + , portage_dir = "/var/db/repos/gentoo" + } diff --git a/hackport/@install b/hackport/@install new file mode 100755 index 0000000..e1fa1ff --- /dev/null +++ b/hackport/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${HOME}/.hackport" ] && \ + mkdir -p "${HOME}/.hackport" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + hackport diff --git a/haskeline/.haskeline b/haskeline/.haskeline new file mode 100644 index 0000000..e13e210 --- /dev/null +++ b/haskeline/.haskeline @@ -0,0 +1,3 @@ +completionPaging: False +editMode: Vi +maxHistorySize: Nothing diff --git a/haskeline/@install b/haskeline/@install new file mode 100755 index 0000000..abfc135 --- /dev/null +++ b/haskeline/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + haskeline diff --git a/htop/.local/etc/htop/htoprc b/htop/.local/etc/htop/htoprc new file mode 100644 index 0000000..124b34c --- /dev/null +++ b/htop/.local/etc/htop/htoprc @@ -0,0 +1,40 @@ +# Beware! This file is rewritten by htop when settings are changed in the interface. +# The parser is also very primitive, and not human-friendly. +fields=0 48 6 17 18 38 39 40 2 46 47 49 1 +sort_key=47 +sort_direction=1 +tree_sort_key=0 +tree_sort_direction=1 +hide_kernel_threads=1 +hide_userland_threads=1 +shadow_other_users=1 +show_thread_names=1 +show_program_path=0 +highlight_base_name=1 +highlight_megabytes=1 +highlight_threads=1 +highlight_changes=1 +highlight_changes_delay_secs=1 +find_comm_in_cmdline=0 +strip_exe_from_cmdline=0 +show_merged_command=0 +tree_view=1 +tree_view_always_by_pid=1 +header_margin=1 +detailed_cpu_time=1 +cpu_count_from_one=0 +show_cpu_usage=1 +show_cpu_frequency=1 +show_cpu_temperature=1 +degree_fahrenheit=0 +update_process_names=1 +account_guest_in_cpu_meter=1 +color_scheme=0 +enable_mouse=0 +delay=10 +left_meters=AllCPUs Memory Swap +left_meter_modes=1 1 1 +right_meters=Hostname Clock Uptime Tasks LoadAverage Battery +right_meter_modes=2 2 2 2 2 2 +hide_function_bar=0 +topology_affinity=1 diff --git a/htop/@install b/htop/@install new file mode 100755 index 0000000..974ac80 --- /dev/null +++ b/htop/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/htop" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/htop" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + htop diff --git a/httpie/.httpie/config.json b/httpie/.httpie/config.json new file mode 100644 index 0000000..4ce0345 --- /dev/null +++ b/httpie/.httpie/config.json @@ -0,0 +1,7 @@ +{ + "default_options": [ + "--style=default", + "--pretty=all", + "--sorted" + ] +} diff --git a/httpie/@install b/httpie/@install new file mode 100755 index 0000000..503f1d7 --- /dev/null +++ b/httpie/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${HOME}/.httpie" ] && \ + mkdir -p "${HOME}/.httpie" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + httpie diff --git a/imv/.local/etc/imv/config b/imv/.local/etc/imv/config new file mode 100644 index 0000000..29f576c --- /dev/null +++ b/imv/.local/etc/imv/config @@ -0,0 +1,3 @@ +[options] +background = 161719 +overlay = false diff --git a/imv/@install b/imv/@install new file mode 100755 index 0000000..38e2d0a --- /dev/null +++ b/imv/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/imv" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/imv" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + imv diff --git a/lftp/.local/etc/lftp/rc b/lftp/.local/etc/lftp/rc new file mode 100644 index 0000000..482fb6a --- /dev/null +++ b/lftp/.local/etc/lftp/rc @@ -0,0 +1,14 @@ +set bmk:save-passwords false + +set cache:cache-empty-listings false +set cache:enable true + +set cmd:prompt "\[\e[34m\]\u\[\e[0;34m\]\@\[\e[1m\]\h\[\e[1;30m\]:\[\e[1;34m\]\w\[\e[1;30m\] > \[\e[0m\]" +set cmd:remote-completion true +set cmd:save-cwd-history false +set cmd:save-rl-history false + +set color:use-color auto + +set ftp:ssl-allow true +set ftp:ssl-force true diff --git a/lftp/@install b/lftp/@install new file mode 100755 index 0000000..3e0ee65 --- /dev/null +++ b/lftp/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/lftp" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/lftp" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + lftp diff --git a/lldb/.lldbinit b/lldb/.lldbinit new file mode 100644 index 0000000..73f3e67 --- /dev/null +++ b/lldb/.lldbinit @@ -0,0 +1 @@ +settings set target.x86-disassembly-flavor intel diff --git a/lldb/@install b/lldb/@install new file mode 100755 index 0000000..d29177d --- /dev/null +++ b/lldb/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + lldb diff --git a/mksh/.mkshrc b/mksh/.mkshrc new file mode 100644 index 0000000..ecf7cb2 --- /dev/null +++ b/mksh/.mkshrc @@ -0,0 +1,17 @@ +set -o vi + +HOSTNAME="$(builtin print -r -- "$(hostname 2>/dev/null)")" +builtin export HOSTNAME + +USER="$(id -un 2>/dev/null)" +builtin export USER + +MKSH="$(builtin whence -p mksh)" +builtin export SHELL="$MKSH" + +if [ -d "$HOME/.shell.d" ] +then + builtin source "$HOME/.shell.d/"*.sh +fi + +# vim: filetype=sh diff --git a/mksh/@install b/mksh/@install new file mode 100755 index 0000000..7b589a4 --- /dev/null +++ b/mksh/@install @@ -0,0 +1,9 @@ +#!/bin/sh + +# Depends on "shell". + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + mksh diff --git a/mpd/.local/etc/mpd/mpd.conf b/mpd/.local/etc/mpd/mpd.conf new file mode 100644 index 0000000..ca77d4f --- /dev/null +++ b/mpd/.local/etc/mpd/mpd.conf @@ -0,0 +1,54 @@ +music_directory "~/music" + +playlist_directory "~/.local/var/cache" + +log_file "/dev/null" +log_level "default" + +pid_file "~/.local/run/mpd.pid" + +state_file "~/.local/var/mpd/state" +state_file_interval "60" + +sticker_file "~/.local/var/mpd/sticker.db" + +restore_paused "yes" + +auto_update "no" + +follow_outside_symlinks "yes" +follow_inside_symlinks "yes" + +replaygain "album" +replaygain_preamp "0" +replaygain_limit "yes" + +volume_normalization "no" + +filesystem_charset "UTF-8" + +bind_to_address "localhost" +port "6600" + +connection_timeout "10" +max_connections "10" +max_playlist_length "2048" +max_command_list_size "2048" +max_output_buffer_size "8192" + +zeroconf_enabled "no" + +database { + plugin "simple" + path "~/.local/var/mpd/database.gz" + compress "yes" +} + +audio_output { + type "alsa" + name "ALSA" + mixer_type "software" + mixer_control "PCM" +} + +# vim:filetype=conf diff --git a/mpd/@install b/mpd/@install new file mode 100755 index 0000000..c4240a3 --- /dev/null +++ b/mpd/@install @@ -0,0 +1,20 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/mpd" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/mpd" +[ ! -d "${XDG_DATA_HOME}/mpd" ] && \ + mkdir -p "${XDG_DATA_HOME}/mpd" +[ ! -d "${XDG_DATA_HOME}/mpd/playlists" ] && \ + mkdir -p "${XDG_DATA_HOME}/mpd/playlists" +[ ! -f "${XDG_DATA_HOME}/mpd/state" ] && \ + touch "${XDG_DATA_HOME}/mpd/state" +[ ! -f "${XDG_DATA_HOME}/mpd/database.gz" ] && \ + touch "${XDG_DATA_HOME}/mpd/database.gz" +[ ! -f "${XDG_DATA_HOME}/mpd/sticker.db" ] && \ + touch "${XDG_DATA_HOME}/mpd/sticker.db" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + mpd diff --git a/mpv/.local/etc/mpv/input.conf b/mpv/.local/etc/mpv/input.conf new file mode 100644 index 0000000..ed0a2de --- /dev/null +++ b/mpv/.local/etc/mpv/input.conf @@ -0,0 +1,16 @@ +RIGHT seek 10 +LEFT seek -10 +UP seek 60 +DOWN seek -60 + +Shift+RIGHT no-osd seek 1 exact +Shift+LEFT no-osd seek -1 exact +Shift+UP no-osd seek 5 exact +Shift+DOWN no-osd seek -5 exact + +ALT+k add sub-scale +0.1 +ALT+j add sub-scale -0.1 + +B cycle-values background "#000000" "#ffffff" + +# vim:filetype=config diff --git a/mpv/.local/etc/mpv/mpv.conf b/mpv/.local/etc/mpv/mpv.conf new file mode 100644 index 0000000..f365d0b --- /dev/null +++ b/mpv/.local/etc/mpv/mpv.conf @@ -0,0 +1,100 @@ +### General ### + +audio-display=no +autofit-larger=100%x95% +cursor-autohide=1000 +force-seekable=no +fullscreen=yes +load-unsafe-playlists=yes +msg-color=yes +msg-module=yes +prefetch-playlist=yes +save-position-on-quit=no +screenshot-format=jpg +screenshot-template="%F [%p]" +stop-screensaver=yes +term-osd-bar=yes +use-filedir-conf=yes + +### OSD ### + +osd-bar-align-y=0 +osd-bar-h=2 +osd-bar-w=60 +osd-border-color="#FF262626" +osd-border-size=2.5 +osd-color="#FFFFFFFF" +osd-duration=2500 +osd-font-size=40 +osd-fractions=yes +osd-level=1 +osd-shadow-color="#33000000" +osd-status-msg='${time-pos} / ${duration}${?percent-pos: (${percent-pos}%)}${?frame-drop-count:${!frame-drop-count==0: Dropped: ${frame-drop-count}}}\n${?chapter:Chapter: ${chapter}}' + +### OSC ### + +no-osc + +### Subtitles ### + +sub-auto=fuzzy +sub-file-paths-append=ass +sub-file-paths-append=srt + +sub-ass-force-margins=yes +sub-ass-force-style=Kerning=yes +sub-fix-timing=yes +sub-use-margins=yes + +sub-font-size=40 +sub-color="#FFFFFFFF" +sub-border-color="#FF262626" +sub-border-size=2.5 +sub-shadow-offset=1 +sub-shadow-color="#33000000" +sub-spacing=0.5 + +### Languages ### + +alang=japanese,jp,jpn,jaJP,ja-JP,english,en,eng,enUS,en-US,russian,ru,rus,ruRU,ru-RU +slang=japanese,jp,jpn,jaJP,ja-JP,english,en,eng,enUS,en-US,russian,ru,rus,ruRU,ru-RU + +### youtube-dl ### + +ytdl=yes +ytdl-raw-options=sub-lang="jp,jpn,jaJP,ja-JP,en,eng,enUS,en-US,ru,rus,ruRU,ru-RU",write-sub= +ytdl-format=(bestvideo[height<=?1080][fps<=?30][protocol!=http_dash_segments])+(bestaudio[acodec=opus]/bestaudio)/best + +### Audio ### + +audio-file-auto=fuzzy + +volume=100 +volume-max=200 + +### Video ### + +blend-subtitles=yes + +### Extensions ### + +[extension.webm] +cache=no +loop-file=inf + +[extension.gif] +profile=extension.webm + +### Protocols ### + +[protocol.http] +force-window=immediate + +[protocol.https] +force-window=immediate + +### Default ### + +[default] + +# vim:filetype=cfg diff --git a/mpv/.local/etc/mpv/scripts/autoload.lua b/mpv/.local/etc/mpv/scripts/autoload.lua new file mode 100644 index 0000000..2d0a12e --- /dev/null +++ b/mpv/.local/etc/mpv/scripts/autoload.lua @@ -0,0 +1,129 @@ +MAXENTRIES = 30 + +function Set (t) + local set = {} + for _, v in pairs(t) do set[v] = true end + return set +end + +EXTENSIONS = Set { + '3gp', + 'avi', + 'flac', + 'flv', + 'm4a', + 'm4v', + 'mkv', + 'mp3', + 'mp4', + 'mpeg', + 'mpg', + 'ogv', + 'ogv', + 'rmvb', + 'wav', + 'webm', + 'wma', + 'wmv', +} + +mputils = require 'mp.utils' + +function add_files_at(index, files) + index = index - 1 + local oldcount = mp.get_property_number("playlist-count", 1) + for i = 1, #files do + mp.commandv("loadfile", files[i], "append") + mp.commandv("playlist_move", oldcount + i - 1, index + i - 1) + end +end + +function get_extension(path) + match = string.match(path, "%.([^%.]+)$" ) + if match == nil then + return "nomatch" + else + return match + end +end + +table.filter = function(t, iter) + for i = #t, 1, -1 do + if not iter(t[i]) then + table.remove(t, i) + end + end +end + +function find_and_add_entries() + local path = mp.get_property("path", "") + local dir, filename = mputils.split_path(path) + if #dir == 0 then + return + end + + local files = mputils.readdir(dir, "files") + if files == nil then + return + end + table.filter(files, function (v, k) + local ext = get_extension(v) + if ext == nil then + return false + end + return EXTENSIONS[string.lower(ext)] + end) + table.sort(files, function (a, b) + return string.lower(a) < string.lower(b) + end) + + if dir == "." then + dir = "" + end + + local pl = mp.get_property_native("playlist", {}) + local pl_current = mp.get_property_number("playlist-pos", 0) + 1 + local current + for i = 1, #files do + if files[i] == filename then + current = i + break + end + end + if current == nil then + return + end + + local append = {[-1] = {}, [1] = {}} + for direction = -1, 1, 2 do + for i = 1, MAXENTRIES do + local file = files[current + i * direction] + local pl_e = pl[pl_current + i * direction] + if file == nil or file[1] == "." then + break + end + + local filepath = dir .. file + if pl_e then + if pl_e.filename == filepath then + break + end + end + + if direction == -1 then + if pl_current == 1 then + mp.msg.info("Prepending " .. file) + table.insert(append[-1], 1, filepath) + end + else + mp.msg.info("Adding " .. file) + table.insert(append[1], filepath) + end + end + end + + add_files_at(pl_current + 1, append[1]) + add_files_at(pl_current, append[-1]) +end + +mp.register_event("start-file", find_and_add_entries) diff --git a/mpv/.local/etc/mpv/scripts/autosub.lua b/mpv/.local/etc/mpv/scripts/autosub.lua new file mode 100644 index 0000000..a44564e --- /dev/null +++ b/mpv/.local/etc/mpv/scripts/autosub.lua @@ -0,0 +1,27 @@ +local utils = require 'mp.utils' + +function display_error() + mp.msg.warn("Subtitle download failed: ") + mp.osd_message("Subtitle download failed") +end + +function load_sub_fn() + path = mp.get_property("path") + srt_path = string.gsub(path, "%.%w+$", ".srt") + t = { args = { "subliminal", "download", "-s", "-f", "-l", "en", path } } + + mp.osd_message("Searching subtitle") + res = utils.subprocess(t) + if res.error == nil then + if mp.commandv("sub_add", srt_path) then + mp.msg.warn("Subtitle download succeeded") + mp.osd_message("Subtitle '" .. srt_path .. "' download succeeded") + else + display_error() + end + else + display_error() + end +end + +mp.add_key_binding("b", "auto_load_subs", load_sub_fn) diff --git a/mpv/@install b/mpv/@install new file mode 100755 index 0000000..f90ac62 --- /dev/null +++ b/mpv/@install @@ -0,0 +1,12 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/mpv" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/mpv" +[ ! -d "${XDG_CONFIG_HOME}/mpv/script-opts" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/mpv/script-opts" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + mpv diff --git a/ncmpcpp/.local/etc/ncmpcpp/bindings b/ncmpcpp/.local/etc/ncmpcpp/bindings new file mode 100644 index 0000000..e7e3327 --- /dev/null +++ b/ncmpcpp/.local/etc/ncmpcpp/bindings @@ -0,0 +1,393 @@ +# +#def_key "mouse" +# mouse_event +# +def_key "k" + scroll_up +# +def_key "K" + select_item + scroll_up +# +def_key "j" + scroll_down +# +def_key "J" + 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 "g" + move_home +# +def_key "G" + 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 "d" + delete_playlist_items +# +def_key "d" + delete_browser_items +# +def_key "d" + delete_stored_playlist +# +def_key "l" + next_column +# +def_key "l" + slave_screen +# +def_key "l" + volume_up +# +#def_key "+" +# volume_up +# +def_key "h" + previous_column +# +def_key "h" + master_screen +# +def_key "h" + 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-f" +# apply_filter +# +#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 "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 "H" + toggle_lyrics_fetcher +# +#def_key "F" +# fetch_lyrics_in_background +# +#def_key "alt-l" +# 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/ncmpcpp/.local/etc/ncmpcpp/config b/ncmpcpp/.local/etc/ncmpcpp/config new file mode 100644 index 0000000..3197663 --- /dev/null +++ b/ncmpcpp/.local/etc/ncmpcpp/config @@ -0,0 +1,124 @@ +ncmpcpp_directory = "~/.local/var/lib/ncmpcpp" +lyrics_directory = "~/.local/var/lib/ncmpcpp/lyrics" + +mpd_host = "/var/lib/mpd/mpd.socket" +#mpd_host = "localhost" +#mpd_port = "6600" +mpd_connection_timeout = "10" +mpd_music_dir = "/media/marisa/music" +mpd_crossfade_time = "0" + +system_encoding = "UTF-8" + +playlist_disable_highlight_delay = "1" +message_delay_time = "1" + +song_window_title_format = "{%a - }{%t}|{%f}" +song_list_format = "{$6%t}|{$2%f}$1 $R{$8%b}$1 {$5%a}" +song_columns_list_format = "(20)[red]{a} (30)[cyan]{b} (50)[blue]{t|f}" +song_status_format = "{{$8%a$9{ $b-$/b $6%b$9 {(%y)}} - } '{%t}}|{%f}'" +song_library_format = "{%n - }{%t}|{%f}" + +now_playing_prefix = "$b$1$8>>>$1 " +now_playing_suffix = "$1 $8<<<$1$/b" + +selected_item_prefix = "$0" +selected_item_suffix = "$9" +modified_item_prefix = "$3> $9" + +browser_playlist_prefix = "$2playlist$9 " +browser_sort_format = "{%a - }{%t}|{%f} {(%l)}" + +playlist_show_mpd_host = "no" +playlist_show_remaining_time = "no" +playlist_shorten_total_times = "no" +playlist_separate_albums = "no" + +playlist_display_mode = "classic" +browser_display_mode = "classic" +search_engine_display_mode = "classic" +playlist_editor_display_mode = "classic" + +incremental_seeking = "yes" +seek_time = "1" + +volume_change_step = "5" + +autocenter_mode = "yes" +centered_cursor = "yes" + +progressbar_look = "->-" + +default_place_to_search_in = "database" +search_engine_default_search_mode = "1" +data_fetching_delay = "no" +media_library_primary_tag = "album_artist" +browser_sort_mode = "name" +default_find_mode = "wrapped" +default_tag_editor_pattern = "%n - %t" +empty_tag_marker = "" +tags_separator = " | " +tag_editor_extended_numeration = "yes" +media_library_sort_by_mtime = "no" +regular_expressions = "none" +block_search_constraints_change_if_items_found = "yes" + +ignore_leading_the = "yes" + +enable_window_title = "no" + +header_visibility = "no" +statusbar_visibility = "no" +titles_visibility = "no" + +display_volume_level = "no" +display_bitrate = "no" +display_remaining_time = "no" + +cyclic_scrolling = "yes" +lines_scrolled = "1" + +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 = "no" +show_hidden_files_in_local_browser = "no" + +screen_switcher_mode = "playlist, browser" +startup_screen = "playlist" +startup_slave_screen = "" +startup_slave_screen_focus = "no" +locked_screen_width_part = "50" +ask_for_locked_screen_width_part = "yes" + +jump_to_now_playing_song_at_start = "no" + +ask_before_clearing_playlists = "no" + +clock_display_seconds = "no" + +mouse_support = "no" + +external_editor = "vim" +use_console_editor = "yes" + +colors_enabled = "yes" +discard_colors_if_item_is_selected = "yes" + +empty_tag_color = "cyan" +header_window_color = "cyan" +volume_color = "cyan" +state_line_color = "cyan" +state_flags_color = "green" +main_window_color = "blue" +color1 = "cyan" +color2 = "red" +progressbar_color = "cyan" +progressbar_elapsed_color = "white" +statusbar_color = "yellow" +window_border_color = "green" +active_window_border = "red" + +# vim: filetype=config diff --git a/ncmpcpp/@install b/ncmpcpp/@install new file mode 100755 index 0000000..e82601b --- /dev/null +++ b/ncmpcpp/@install @@ -0,0 +1,14 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/ncmpcpp" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/ncmpcpp" +[ ! -d "${XDG_DATA_HOME}/ncmpcpp" ] && \ + mkdir -p "${XDG_DATA_HOME}/ncmpcpp" +[ ! -d "${XDG_DATA_HOME}/ncmpcpp/lyrics" ] && \ + mkdir -p "${XDG_DATA_HOME}/ncmpcpp/lyrics" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + ncmpcpp diff --git a/nix/.local/etc/nixpkgs/home.nix b/nix/.local/etc/nixpkgs/home.nix new file mode 100644 index 0000000..8d367f5 --- /dev/null +++ b/nix/.local/etc/nixpkgs/home.nix @@ -0,0 +1,577 @@ +{ config, pkgs, ... }: +let + font1 = "UW Ttyp0"; + font2 = "Efont Biwidth"; + xftBase = ":pixelsize=14:style=Regular:antialias=false"; + xftFont1 = "${font1}${xftBase}"; + xftFont2 = "${font2}${xftBase}"; + + colorBlack0 = "#161719"; + colorBlack1 = "#969896"; + colorRed0 = "#cc6666"; + colorRed1 = "#cc6666"; + colorGreen0 = "#b5bd68"; + colorGreen1 = "#b5bd68"; + colorYellow0 = "#f0c674"; + colorYellow1 = "#f0c674"; + colorBlue0 = "#81a2be"; + colorBlue1 = "#81a2be"; + colorMagenta0 = "#b294bb"; + colorMagenta1 = "#b294bb"; + colorCyan0 = "#8abeb7"; + colorCyan1 = "#8abeb7"; + colorWhite0 = "#c5c8c6"; + colorWhite1 = "#ffffff"; +in { + home = { + username = builtins.getEnv "USER"; + homeDirectory = builtins.getEnv "HOME"; + + packages = with pkgs; [ + bat + bear + ccls + clang-tools + cling + cmake-language-server + doxygen + fd + include-what-you-use + llvmPackages_12.clangUseLLVM + nixfmt + pandoc + pgcli + pipenv + plan9port + python-language-server + python39Packages.adblock + python39Packages.black + python39Packages.isort + python39Packages.pyflakes + rappel + ripgrep + ripgrep-all + shellcheck + shfmt + speedtest-cli + stdman + translate-shell + ]; + + stateVersion = "21.11"; + }; + + xdg = let localDirectory = "${config.home.homeDirectory}/.local"; + in { + configHome = "${localDirectory}/etc"; + dataHome = "${localDirectory}/var/lib"; + cacheHome = "${localDirectory}/var/cache"; + + userDirs = let + atHome = dir: config.home.homeDirectory + "/" + dir; + tmp = atHome "tmp"; + in { + enable = true; + createDirectories = true; + + desktop = tmp; + documents = tmp; + download = tmp; + music = atHome "music"; + pictures = tmp; + publicShare = tmp; + templates = tmp; + videos = tmp; + }; + }; + + programs = { + home-manager.enable = true; + + bat = { + enable = true; + + config = { + style = "plain"; + tabs = "4"; + theme = "base16"; + wrap = "never"; + }; + }; + + beets = { + enable = true; + + settings = with config.xdg; { + library = "${dataHome}/beets/library.db"; + directory = userDirs.music; + plugins = "badfiles edit fetchart info mbsync scrub"; + original_date = true; + import = { + write = true; + copy = true; + move = false; + bell = true; + from_scratch = true; + }; + match = { + preferred = { + countries = + [ "JP" "KR" "TW" "HK" "CN" "RU" "GB|UK" "AU" "NZ" "US" ]; + original_year = true; + }; + }; + edit = { + albumfields = "album artist albumartist"; + itemfields = + "track title album artist albumartist day month year genre"; + }; + fetchart = { + auto = true; + cautious = true; + cover_names = + "cover Cover folder Folder art Art album Album front Front"; + sources = "filesystem coverart itunes amazon albumart wikipedia"; + }; + scrub.auto = true; + }; + }; + + direnv = { + enable = true; + nix-direnv = { + enable = true; + enableFlakes = true; + }; + }; + + neovim = { + enable = true; + + extraConfig = '' + set autoread + set backspace=indent,eol,start + set clipboard=unnamed,unnamedplus + set fillchars=vert:\ " + set hidden + set lazyredraw + set modeline + set mouse= + set noshowmode + set path+=** + + set statusline= + set statusline+=\ %m%r + set statusline+=%f\ " + set statusline+=%1* + set statusline+=%* + set statusline+=%= + set statusline+=%1* + set statusline+=\ %l:%c/%L\ %p%%\ " + set statusline+=%* + + set noerrorbells + set novisualbell + + set splitbelow + set splitright + + set complete= + set complete+=. + set complete+=b + set complete+=t + set completeopt= + set completeopt+=menu + set completeopt+=longest + + set gdefault + set hlsearch + set incsearch + set iskeyword+=- + set magic + + set foldmethod=marker + set nofoldenable + + set shortmess= + set shortmess+=I + set shortmess+=T + set shortmess+=a + set shortmess+=c + set shortmess+=t + + set nolist + set nowrap + set scrolloff=10 + set sidescrolloff=10 + + set number + set relativenumber + + set wildignorecase + set wildmenu + set wildignore= + + set nobackup + set noswapfile + set noundofile + set nowritebackup + + set smartcase + set ignorecase + + set autoindent + set breakindent + set smartindent + + set expandtab + set shiftround + set shiftwidth=4 + set smarttab + set softtabstop=4 + set tabstop=4 + + try + set encoding=utf-8 + scriptencoding utf-8 + catch + endtry + + if has('autocmd') + filetype on + filetype plugin on + filetype indent on + endif + + if has('syntax') + syntax enable + endif + + let mapleader = ' ' + + nnoremap j v:count ? 'j' : 'gj' + nnoremap k v:count ? 'k' : 'gk' + + nnoremap J gt + nnoremap K gT + + nnoremap ^h + vnoremap ^h + nnoremap H ^h + vnoremap H ^h + + nnoremap $ + vnoremap $ + nnoremap L $ + vnoremap L $ + + nnoremap N Nzzzv + nnoremap n nzzzv + + vnoremap < >gv + + nnoremap ]b :bnext + nnoremap [b :bprevious + + nnoremap h + nnoremap j + nnoremap k + nnoremap l + + nnoremap :nohlsearchredraw!echo + + cnoremap ;/ =expand('%:p:h').'/' + cnoremap ;; =expand('%:t') + cnoremap ;. =expand('%:p:r') + + nnoremap . :lcd %:p:h + + cnoremap + cnoremap + + nnoremap gw vapgw + + nnoremap Q @q + + nnoremap c ^v$h + nnoremap v ggVG + + map sn ]s + map sp [s + map sa zg + map s? z= + + nnoremap y "+y + nnoremap Y "+Y + + nnoremap p "+p + nnoremap P "+P + + inoremap "+pi + cnoremap + + + nmap w :w! + nmap wq :wq! + + nnoremap ZX :qa! + + nnoremap q :q + + function! SwitchCase() + normal! ~ + if strlen(getline('.')) != virtcol('.') + normal! h + endif + endfunction + nnoremap ~ :call SwitchCase() + + function! MapGoToTab() + let s:i = 1 + while s:i < 10 + exe 'nnoremap ' . s:i . ' :tabnext ' . s:i . '' + let s:i += 1 + endwhile + endfunction + call MapGoToTab() + + autocmd BufEnter * set noreadonly + ''; + + plugins = with pkgs.vimPlugins; [ + ansible-vim + auto-pairs + calendar-vim + csv-vim + editorconfig-vim + gentoo-syntax + neco-vim + neoinclude-vim + nginx-vim + rainbow_parentheses-vim + vim-SyntaxRange + vim-abolish + vim-commentary + vim-cool + vim-eunuch + vim-expand-region + vim-fugitive + vim-gnupg + vim-husk + vim-illuminate + vim-lastplace + vim-nix + vim-obsession + vim-polyglot + vim-repeat + vim-rhubarb + vim-shellcheck + vim-sleuth + vim-sneak + vim-speeddating + vim-surround + vim-tmux + vim-tmux-focus-events + vim-unimpaired + { + plugin = vim-clang-format; + config = '' + nnoremap cf :ClangFormat + vnoremap cf :ClangFormat + ''; + } + { + plugin = LanguageClient-neovim; + config = '' + let g:LanguageClient_loadSettings = 1 + + nnoremap lm :call LanguageClient_contextMenu() + nnoremap la :call LanguageClient_workspace_applyEdit() + nnoremap lc :call LanguageClient#textDocument_completion() + nnoremap ld :call LanguageClient#textDocument_definition() + nnoremap le :call LanguageClient#textDocument_references() + nnoremap lf :call LanguageClient#textDocument_formatting() + nnoremap lh :call LanguageClient#textDocument_hover() + nnoremap lr :call LanguageClient#textDocument_rename() + nnoremap ls :call LanguageClient#textDocument_documentSymbol() + nnoremap lt :call LanguageClient#textDocument_typeDefinition() + + let g:LanguageClient_serverCommands = {} + + if executable('ccls') + let g:LanguageClient_serverCommands[ 'c' ] = [ 'ccls' ] + let g:LanguageClient_serverCommands[ 'cpp' ] = [ 'ccls' ] + + nnoremap h :call LanguageClient#findLocations({'method':'$ccls/navigate','direction':'L'}) + nnoremap j :call LanguageClient#findLocations({'method':'$ccls/navigate','direction':'D'}) + nnoremap k :call LanguageClient#findLocations({'method':'$ccls/navigate','direction':'U'}) + nnoremap l :call LanguageClient#findLocations({'method':'$ccls/navigate','direction':'R'}) + elseif executable('clangd') + let g:LanguageClient_serverCommands[ 'c' ] = [ 'clangd', '-background-index' ] + let g:LanguageClient_serverCommands[ 'cpp' ] = [ 'clangd', '-background-index' ] + endif + + if executable('gopls') + let g:LanguageClient_serverCommands[ 'go' ] = [ 'gopls' ] + endif + + if executable('haskell-language-server-wrapper') + let g:LanguageClient_serverCommands[ 'haskell' ] = [ 'haskell-language-server-wrapper', '--lsp' ] + endif + + if executable('pyls') + let g:LanguageClient_serverCommands[ 'python' ] = [ 'pyls' ] + endif + ''; + } + ]; + + withNodeJs = false; + withPython3 = true; + withRuby = false; + }; + + zathura = { + enable = true; + + options = { + font = font1; + + default-fg = colorWhite0; + default-bg = colorBlack0; + + statusbar-fg = colorBlack0; + statusbar-bg = colorWhite0; + + inputbar-fg = colorBlack0; + inputbar-bg = colorGreen1; + + notification-fg = colorBlack0; + notification-bg = colorBlue1; + + notification-error-fg = colorBlack0; + notification-error-bg = colorRed1; + + notification-warning-fg = colorBlack0; + notification-warning-bg = colorYellow1; + + highlight-color = colorYellow1; + highlight-active-color = colorYellow0; + + completion-fg = colorWhite1; + completion-bg = colorBlack1; + + completion-highlight-fg = colorBlack0; + completion-highlight-bg = colorRed1; + + completion-group-fg = colorBlack0; + completion-group-bg = colorRed1; + + recolor-darkcolor = colorBlack0; + recolor-lightcolor = colorWhite0; + + recolor = true; + recolor-keephue = false; + recolor-reverse-video = false; + + highlight-transparency = "0.3"; + + n-completion-items = 10; + + guioptions = ""; + + statusbar-basename = true; + statusbar-home-tilde = true; + + statusbar-h-padding = 0; + statusbar-v-padding = 0; + + window-height = 800; + window-width = 600; + + window-icon = ""; + + abort-clear-search = true; + + incremental-search = true; + + adjust-open = "best-fit"; + + advance-pages-per-row = false; + + database = "sqlite"; + + dbus-service = false; + + page-padding = 0; + + pages-per-row = 1; + + render-loading = false; + + show-directories = true; + show-hidden = true; + show-recent = 10; + + link-zoom = true; + link-hadjust = true; + + window-title-basename = true; + window-title-home-tilde = true; + window-title-page = true; + + zoom-center = false; + zoom-max = 1000; + zoom-min = 10; + zoom-step = 10; + + scroll-hstep = -1; + scroll-step = 40; + scroll-full-overlap = 0; + scroll-wrap = true; + scroll-page-aware = false; + + selection-clipboard = "primary"; + selection-notification = false; + }; + }; + }; + + xresources = { + properties = { + "*.font" = xftFont1; + + "Xcursor.theme" = "core"; + "Xcursor.theme_core" = "true"; + "Xcursor.size" = 16; + + "Xft.antialias" = 1; + "Xft.autohint" = 0; + "Xft.dpi" = 96; + "Xft.hinting" = 1; + "Xft.hintstyle" = "hintslight"; + "Xft.lcdfilter" = "lcddefault"; + "Xft.rgba" = "rgb"; + + "*.color0" = colorBlack0; + "*.color8" = colorBlack1; + "*.color1" = colorRed0; + "*.color9" = colorRed1; + "*.color2" = colorGreen0; + "*.color10" = colorGreen1; + "*.color3" = colorYellow0; + "*.color11" = colorYellow1; + "*.color4" = colorBlue0; + "*.color12" = colorBlue1; + "*.color5" = colorMagenta0; + "*.color13" = colorMagenta1; + "*.color6" = colorCyan0; + "*.color14" = colorCyan1; + "*.color7" = colorWhite0; + "*.color15" = colorWhite1; + + "*.background" = colorBlack0; + "*.foreground" = colorWhite0; + }; + }; +} diff --git a/nix/.nix-channels b/nix/.nix-channels new file mode 100644 index 0000000..4a8d253 --- /dev/null +++ b/nix/.nix-channels @@ -0,0 +1,2 @@ +https://nixos.org/channels/nixpkgs-unstable nixpkgs +https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager diff --git a/nix/@install b/nix/@install new file mode 100755 index 0000000..dc4c1f0 --- /dev/null +++ b/nix/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/nixpkgs" ] && + mkdir -p "${XDG_CONFIG_HOME}/nixpkgs" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + nix diff --git a/nuget/.nuget/NuGet/NuGet.Config b/nuget/.nuget/NuGet/NuGet.Config new file mode 100644 index 0000000..a95cade --- /dev/null +++ b/nuget/.nuget/NuGet/NuGet.Config @@ -0,0 +1,6 @@ + + + + + + diff --git a/nuget/@install b/nuget/@install new file mode 100755 index 0000000..cacb567 --- /dev/null +++ b/nuget/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${HOME}/.nuget" ] && \ + mkdir -p "$HOME/.nuget" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + nuget diff --git a/picom/.local/etc/picom.conf b/picom/.local/etc/picom.conf new file mode 100644 index 0000000..0275835 --- /dev/null +++ b/picom/.local/etc/picom.conf @@ -0,0 +1,80 @@ +# Shadow. + +shadow = false + +shadow-radius = 7 +shadow-opacity = 0.7 +shadow-offset-x = 0 +shadow-offset-y = 0 + +shadow-exclude = +[ + "_GTK_FRAME_EXTENTS@:c", + "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", + "class_g = 'slop'", + "name = 'oneko'", +] + +# Fade. + +fading = false + +fade-delta = 3 +no-fading-openclose = false +no-fading-destroyed-argb = false + +inactive-opacity = 1.0 +frame-opacity = 1.0 +active-opacity = 1.0 + +inactive-dim = 0.0 +inactive-dim-fixed = 0.0 + +# Opacity. + +opacity-rule = [ + "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", +] + +# Corner. + +corner-radius = 0 + +# Blur. + +blur-background = false + +# General. + +daemon = false + +backend = "glx" + +vsync = true + +refresh-rate = 0 + +dbus = false + +log-level = "error" + +# Wintypes. + +wintypes: +{ + combo = {} + desktop = {} + dialog = {} + dnd = {} + dock = {} + dropdown_menu = {} + menu = {} + normal = {} + notification = {} + popup_menu = {} + splash = {} + toolbar = {} + tooltip = {} + unknown = {} + utility = {} +} diff --git a/picom/@install b/picom/@install new file mode 100755 index 0000000..140ddac --- /dev/null +++ b/picom/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}" ] && \ + mkdir -p "${XDG_CONFIG_HOME}" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + picom diff --git a/pip/.local/etc/pip/pip.conf b/pip/.local/etc/pip/pip.conf new file mode 100644 index 0000000..b0ba198 --- /dev/null +++ b/pip/.local/etc/pip/pip.conf @@ -0,0 +1,2 @@ +[global] +user = true diff --git a/pip/@install b/pip/@install new file mode 100755 index 0000000..ca2f8aa --- /dev/null +++ b/pip/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/pip" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/pip" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + pip diff --git a/postgres/.psqlrc b/postgres/.psqlrc new file mode 100644 index 0000000..6405f72 --- /dev/null +++ b/postgres/.psqlrc @@ -0,0 +1,16 @@ +\set QUIET 1 +\pset null '[NULL]' + +\set PROMPT1 '%[%033[1m%]%M %n@%/%R%[%033[0m%]% λ ' +\set PROMPT2 ' … > ' + +\timing + +\x auto + +\set HISTCONTROL ignoredups +\set HISTFILE ~/.local/var/lib/psql_history_ :DBNAME + +\set VERBOSITY verbose + +\unset QUIET diff --git a/postgres/@install b/postgres/@install new file mode 100755 index 0000000..dce00ea --- /dev/null +++ b/postgres/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + postgres diff --git a/profile/.profile b/profile/.profile new file mode 100644 index 0000000..b05eafb --- /dev/null +++ b/profile/.profile @@ -0,0 +1,26 @@ +#!/bin/sh + +if [ "$(umask)" = "000" ] || [ "$(umask)" = "0000" ] +then + umask 0022 +fi + +if [ -f "/etc/profile.env" ] +then + # shellcheck disable=SC1091 + . "/etc/profile.env" +fi + +for i in /etc/profile.d/*.sh +do + # shellcheck disable=SC1090 + [ -r "$i" ] && . "$i" +done + +for i in "${HOME}"/.profile.d/*.sh +do + # shellcheck disable=SC1090 + [ -r "$i" ] && . "$i" +done + +export PROFILE_SOURCED="1" diff --git a/profile/.profile.d/00_lang.sh b/profile/.profile.d/00_lang.sh new file mode 100644 index 0000000..060c6c1 --- /dev/null +++ b/profile/.profile.d/00_lang.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +export LC_COLLATE=C +export LC_MESSAGES=C diff --git a/profile/.profile.d/10_xdg.sh b/profile/.profile.d/10_xdg.sh new file mode 100644 index 0000000..8a7cebe --- /dev/null +++ b/profile/.profile.d/10_xdg.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +_local="${HOME}/.local" + +export XDG_CACHE_HOME="${_local}/var/cache" +export XDG_CONFIG_HOME="${_local}/etc" +export XDG_DATA_HOME="${_local}/var/lib" +export XDG_DESKTOP_DIR="${HOME}/tmp" +export XDG_DOCUMENTS_DIR="${HOME}/doc" +export XDG_DOWNLOAD_DIR="${HOME}/tmp" +export XDG_MUSIC_DIR="${HOME}/music" +export XDG_PICTURES_DIR="${HOME}/tmp" +export XDG_PUBLICSHARE_DIR="${HOME}/tmp" +export XDG_RUNTIME_DIR="${_local}/var/run" +export XDG_TEMPLATES_DIR="${HOME}/tmp" +export XDG_VIDEOS_DIR="${HOME}/tmp" + +unset _local + +_xdg_dirs=" +${XDG_CACHE_HOME} +${XDG_CONFIG_HOME} +${XDG_DATA_HOME} +${XDG_DESKTOP_DIR} +${XDG_DOCUMENTS_DIR} +${XDG_DOWNLOAD_DIR} +${XDG_MUSIC_DIR} +${XDG_PICTURES_DIR} +${XDG_PUBLICSHARE_DIR} +${XDG_RUNTIME_DIR} +${XDG_TEMPLATES_DIR} +${XDG_VIDEOS_DIR} +" + +for _xdg_dir in ${_xdg_dirs}; do + [ ! -d "${_xdg_dir}" ] && mkdir -p "${_xdg_dir}" +done + +unset _xdg_dir _xdg_dirs diff --git a/profile/.profile.d/20_history.sh b/profile/.profile.d/20_history.sh new file mode 100644 index 0000000..b7f42bc --- /dev/null +++ b/profile/.profile.d/20_history.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +export HISTFILE="${XDG_DATA_HOME}/.histfile" +export HISTSIZE=100000 diff --git a/profile/.profile.d/30_manpath.sh b/profile/.profile.d/30_manpath.sh new file mode 100644 index 0000000..af4273e --- /dev/null +++ b/profile/.profile.d/30_manpath.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +manpath_append() { + [ ! -d "${1}" ] && return + echo "${MANPATH}" | grep -q "\(:\|^\)${1}\(:\|$\)" && return + export MANPATH="${MANPATH}:${1}" +} + +manpath_prepend() { + [ ! -d "${1}" ] && return + echo "${MANPATH}" | grep -q "\(:\|^\)${1}\(:\|$\)" && return + export MANPATH="${1}:${MANPATH}" +} + +manpath_prepend "/usr/share/man" +manpath_prepend "/usr/local/share/man" +manpath_prepend "${HOME}/.local/share/man" diff --git a/profile/.profile.d/30_path.sh b/profile/.profile.d/30_path.sh new file mode 100644 index 0000000..1469162 --- /dev/null +++ b/profile/.profile.d/30_path.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +export PATH="/sbin:/bin:/usr/sbin:/usr/bin" + +path_prepend() { + [ ! -d "${1}" ] && return + echo "${PATH}" | grep -q "\(:\|^\)${1}\(:\|$\)" && return + export PATH="${1}:${PATH}" +} + +path_append() { + [ ! -d "${1}" ] && return + echo "${PATH}" | grep -q "\(:\|^\)${1}\(:\|$\)" && return + export PATH="${PATH}:${1}" +} + +path_append "/usr/local/bin" +path_append "${HOME}/.bin" +path_append "${HOME}/.local/bin" diff --git a/profile/.profile.d/40_nix.sh b/profile/.profile.d/40_nix.sh new file mode 100644 index 0000000..ede32bf --- /dev/null +++ b/profile/.profile.d/40_nix.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +nix_sh="${HOME}/.nix-profile/etc/profile.d/nix.sh" + +if [ -e "${nix_sh}" ]; then + # shellcheck disable=SC1090 + . "${nix_sh}" + + export NIXPKGS_ALLOW_UNFREE="1" + + hm_session_vars="$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh" + if [ -e "${hm_session_vars}" ]; then + # shellcheck disable=SC1090 + . "${hm_session_vars}" + fi + unset hm_session_vars +fi + +unset nix_sh diff --git a/profile/.profile.d/50_browser.sh b/profile/.profile.d/50_browser.sh new file mode 100644 index 0000000..0a15ba1 --- /dev/null +++ b/profile/.profile.d/50_browser.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +_browsers=" +qutebrowser +chromium +chromium-browser +firefox +lynx +w3m +elinks +links +" + +for _browser in ${_browsers}; do + # shellcheck disable=SC2139 + if command -v "${_browser}" >/dev/null 2>&1; then + export BROWSER="${_browser}" + + alias b="${BROWSER}" + if ! command -v br >/dev/null 2>&1; then + alias br="${BROWSER}" + fi + + break + fi +done + +unset _browser _browsers diff --git a/profile/.profile.d/50_diff.sh b/profile/.profile.d/50_diff.sh new file mode 100644 index 0000000..9253657 --- /dev/null +++ b/profile/.profile.d/50_diff.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +_diffs=" +colordiff +diff +" + +for _diff in ${_diffs}; do + # shellcheck disable=SC2139 + if command -v "${_diff}" >/dev/null 2>&1; then + export DIFF="${_diff}" + + alias d="${DIFF}" + if ! command -v di >/dev/null 2>&1; then + alias di="${DIFF}" + fi + + break + fi +done + +unset _diff _diffs diff --git a/profile/.profile.d/50_editor.sh b/profile/.profile.d/50_editor.sh new file mode 100644 index 0000000..b3203fb --- /dev/null +++ b/profile/.profile.d/50_editor.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +_editors=" +nvim +vim +vi +emacs +nano +ed +" + +for _editor in ${_editors}; do + # shellcheck disable=SC2139 + if command -v "${_editor}" >/dev/null 2>&1; then + export EDITOR="${_editor}" VISUAL="${_editor}" + + alias e="${EDITOR}" + if ! command -v ed >/dev/null 2>&1; then + alias ed="${EDITOR}" + fi + + break + fi +done + +unset _editor _editors diff --git a/profile/.profile.d/50_pager.sh b/profile/.profile.d/50_pager.sh new file mode 100644 index 0000000..4270919 --- /dev/null +++ b/profile/.profile.d/50_pager.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +_pagers=" +bat +less +more +cat +" + +for _pager in ${_pagers}; do + # shellcheck disable=SC2139 + if command -v "${_pager}" >/dev/null 2>&1; then + export PAGER="${_pager}" MANPAGER="${_pager}" + + alias p="${PAGER}" + if ! command -v pa >/dev/null 2>&1; then + alias pa="${PAGER}" + fi + + break + fi +done + +unset _pager _pagers diff --git a/profile/.profile.d/60_devtoolset.sh b/profile/.profile.d/60_devtoolset.sh new file mode 100644 index 0000000..fcc1816 --- /dev/null +++ b/profile/.profile.d/60_devtoolset.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ -f "/opt/rh/devtoolset-9/enable" ]; then + source scl_source enable "devtoolset-9" +fi diff --git a/profile/.profile.d/60_dotnet.sh b/profile/.profile.d/60_dotnet.sh new file mode 100644 index 0000000..5d4992b --- /dev/null +++ b/profile/.profile.d/60_dotnet.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +if command -v dotnet >/dev/null 2>&1; then + path_append "${HOME}/.dotnet/tools" + + export DOTNET_CLI_TELEMETRY_OPTOUT="1" + export DOTNET_SKIP_FIRST_TIME_EXPERIENCE="1" + + if command -v nuget >/dev/null 2>&1; then + export NUGET_CERT_REVOCATION_MODE="online" + export NUGET_PERSIST_DG="false" + export NUGET_RESTORE_MSBUILD_VERBOSITY="normal" + export NUGET_SHOW_STACK="true" + export NUGET_XMLDOC_MODE="skip" + fi +fi diff --git a/profile/.profile.d/60_go.sh b/profile/.profile.d/60_go.sh new file mode 100644 index 0000000..252c46c --- /dev/null +++ b/profile/.profile.d/60_go.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if command -v go >/dev/null 2>&1; then + export GO111MODULE="on" + export GOPATH="${HOME}/.go" + + path_append "${GOPATH}/bin" +fi diff --git a/profile/.profile.d/60_haskell.sh b/profile/.profile.d/60_haskell.sh new file mode 100644 index 0000000..3ba7324 --- /dev/null +++ b/profile/.profile.d/60_haskell.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v cabal >/dev/null 2>&1; then + path_append "${HOME}/.cabal/bin" +fi diff --git a/profile/.profile.d/60_java.sh b/profile/.profile.d/60_java.sh new file mode 100644 index 0000000..e9ddf25 --- /dev/null +++ b/profile/.profile.d/60_java.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +export _JAVA_AWT_WM_NONREPARENTING="1" +export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on" + +if command -v java >/dev/null 2>&1; then + if [ -n "${JAVA_HOME}" ]; then + export JAVA_HOME="${HOME}/.gentoo/java-config-2/current-user-vm" + fi + path_append "${JAVA_HOME}/bin" + manpath_append "${JAVA_HOME}/man" +fi diff --git a/profile/.profile.d/60_lisp.sh b/profile/.profile.d/60_lisp.sh new file mode 100644 index 0000000..e450d24 --- /dev/null +++ b/profile/.profile.d/60_lisp.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +_implementations=" +sbcl +ccl +clasp +clisp +ecl +abcl +" + +for _implementation in ${_implementations}; do + # shellcheck disable=SC2139 + if command -v "$_implementation" >/dev/null 2>&1; then + if command -v rlwrap >/dev/null 2>&1; then + alias lisp="rlwrap $_implementation" + else + alias lisp="$_implementation" + fi + + break + fi +done + +unset _implementation _implementations diff --git a/profile/.profile.d/60_ocaml.sh b/profile/.profile.d/60_ocaml.sh new file mode 100644 index 0000000..b981b3d --- /dev/null +++ b/profile/.profile.d/60_ocaml.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if command -v opam >/dev/null 2>&1; then + if [ -f "${HOME}/.opam/opam-init/init.sh" ]; then + # shellcheck disable=SC1091 + . "${HOME}/.opam/opam-init/init.sh" >/dev/null 2>&1 + fi +fi diff --git a/profile/.profile.d/60_python.sh b/profile/.profile.d/60_python.sh new file mode 100644 index 0000000..9329cdf --- /dev/null +++ b/profile/.profile.d/60_python.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +_implementations=" +python +python3 +python2 +" + +for _implementation in ${_implementations}; do + if command -v "${_implementation}" >/dev/null 2>&1; then + if [ -f "${HOME}/.pystartup" ]; then + export PYTHONSTARTUP="${HOME}/.pystartup" + fi + + break + fi +done + +unset _implementation _implementations diff --git a/profile/.profile.d/60_rust.sh b/profile/.profile.d/60_rust.sh new file mode 100644 index 0000000..1b6fd36 --- /dev/null +++ b/profile/.profile.d/60_rust.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if command -v cargo >/dev/null 2>&1; then + export CARGO_HOME="${HOME}/.cargo" + export CARGO_CACHE_RUSTC_INFO="0" + + path_append "${CARGO_HOME}/bin" +fi diff --git a/profile/.profile.d/90_alias.sh b/profile/.profile.d/90_alias.sh new file mode 100644 index 0000000..39dc364 --- /dev/null +++ b/profile/.profile.d/90_alias.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +if cp --help | grep -q "\--progress-bar" 2>&1 >/dev/null; then + alias cp="cp -i -r -g" +else + alias cp="cp -i -r" +fi + +if mv --help | grep -q "\--progress-bar" 2>&1 >/dev/null; then + alias mv="mv -i -g" +else + alias mv="mv -i" +fi + +if rm --help | grep -q "\--interactive\[=WHEN\]" 2>&1 >/dev/null; then + alias rm="rm -I" +else + alias rm="rm -i" +fi + +alias c="cd" + +alias ln="ln -i" + +alias mkdir="mkdir -p" +alias rmdir="rmdir -p" + +alias grep="grep --color=auto" +alias egrep="egrep --color=auto" +alias fgrep="fgrep --color=auto" + +alias du="du -h" + +alias df="df -h" diff --git a/profile/.profile.d/90_functions.sh b/profile/.profile.d/90_functions.sh new file mode 100644 index 0000000..a5b63ec --- /dev/null +++ b/profile/.profile.d/90_functions.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +count() { + printf "%d\n" "${#}" +} + +dec2hex() { + printf "0x%X\n" "${1}" +} + +hex2dec() { + printf "%d\n" "0x${1}" +} + +ff() { + find . -type f -iname "${@}" -ls +} + +mkcd() { + mkdir -p "${1}" && + builtin cd "${1}" || + return +} + +mvcd() { + mv -i -- "${PWD}" "${1}" && + builtin cd . || + return +} + +cald() { + printf "\t\t%s\n\n" "$(date)" && cal -m -3 +} + +cheat() { + curl "cheat.sh/${1}" +} + +myip() { + dig -4 +short @resolver1.opendns.com myip.opendns.com A +} + +myip6() { + dig -6 +short @resolver1.opendns.com myip.opendns.com AAAA +} + +if ! command -v sponge >/dev/null 2>&1; then + sponge() { + _tmp="$(mktemp)" || return 1 + + cat >"${_tmp}" + cat -- "${_tmp}" + rm -f -- "${_tmp}" + + unset _tmp + } +fi diff --git a/profile/.profile.d/ag.sh b/profile/.profile.d/ag.sh new file mode 100644 index 0000000..2ddded0 --- /dev/null +++ b/profile/.profile.d/ag.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v ag >/dev/null 2>&1; then + alias ag="ag --color --smart-case" +fi diff --git a/profile/.profile.d/bat.sh b/profile/.profile.d/bat.sh new file mode 100644 index 0000000..205da87 --- /dev/null +++ b/profile/.profile.d/bat.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +if command -v bat >/dev/null 2>&1; then + export BAT_THEME="base16" + + if [ "${MANPAGER}" == "bat" ]; then + export MANPAGER="sh -c 'col -bx | bat -l man -p'" + fi +fi diff --git a/profile/.profile.d/bear.sh b/profile/.profile.d/bear.sh new file mode 100644 index 0000000..7309b7c --- /dev/null +++ b/profile/.profile.d/bear.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# shellcheck disable=SC2139 + +if command -v bear >/dev/null 2>&1; then + _implementations=" +remake +make +" + + for _implementation in ${_implementations}; do + if command -v "${_implementation}" >/dev/null 2>&1; then + if command -v nproc >/dev/null 2>&1; then + alias m="bear ${_implementation} --jobs=$(($(nproc) + 1))" + else + alias m="bear ${_implementation}" + fi + alias mc="${_implementation} clean" + + break + fi + done + unset _implementation _implementations +fi diff --git a/profile/.profile.d/beet.sh b/profile/.profile.d/beet.sh new file mode 100644 index 0000000..2c2fd9a --- /dev/null +++ b/profile/.profile.d/beet.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +if command -v beet >/dev/null 2>&1; then + export BEETSDIR="${XDG_DATA_HOME}/beets" + + _beets_config="${XDG_CONFIG_HOME}/beets/config.yaml" + if [ -f "${_beets_config}" ]; then + # shellcheck disable=SC2139 + alias beet="beet -c ${_beets_config}" + fi +fi + +unset _beets_config diff --git a/profile/.profile.d/ccache.sh b/profile/.profile.d/ccache.sh new file mode 100644 index 0000000..895f9f0 --- /dev/null +++ b/profile/.profile.d/ccache.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +if command -v ccache >/dev/null 2>&1; then + export CCACHE_DIR="${HOME}/.ccache" + if [ -d "/usr/lib/ccache/bin" ]; then + export CCACHE_PATH="/usr/lib/ccache/bin:${PATH}" + else + export CCACHE_PATH="${PATH}" + fi +fi diff --git a/profile/.profile.d/df.sh b/profile/.profile.d/df.sh new file mode 100644 index 0000000..26a767b --- /dev/null +++ b/profile/.profile.d/df.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v df >/dev/null 2>&1; then + alias disk="df --human-readable --exclude-type=tmpfs --exclude-type=devtmpfs" +fi diff --git a/profile/.profile.d/docker.sh b/profile/.profile.d/docker.sh new file mode 100644 index 0000000..b034b51 --- /dev/null +++ b/profile/.profile.d/docker.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +if command -v docker >/dev/null 2>&1; then + alias dk="docker" + alias dk-ip="docker inspect --format '{{ .NetworkSettings.IPAddress }}'" + alias dk-pid="docker inspect --format '{{ .State.Pid }}'" + alias dk-rm-all="docker rm \$(docker ps --quiet --all)" + alias dk-rm-exited="docker rm \$(docker ps --quiet --format 'status=exited')" + alias dk-rmi-all="docker rmi \$(docker images --quiet --all)" + alias dk-rmi-dangling="docker rmi \$(docker images --quiet --format 'dangling=true')" + alias dk-stop-all="docker stop \$(docker ps --quiet --format 'status=running')" +fi diff --git a/profile/.profile.d/doom.sh b/profile/.profile.d/doom.sh new file mode 100644 index 0000000..ad91c9f --- /dev/null +++ b/profile/.profile.d/doom.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ -x "${HOME}/.emacs.d/bin/doom" ]; then + path_append "${HOME}/.emacs.d/bin" +fi diff --git a/profile/.profile.d/free.sh b/profile/.profile.d/free.sh new file mode 100644 index 0000000..ac04417 --- /dev/null +++ b/profile/.profile.d/free.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v free >/dev/null 2>&1; then + alias ram="free --human --wide" +fi diff --git a/profile/.profile.d/fzf.sh b/profile/.profile.d/fzf.sh new file mode 100644 index 0000000..3942b01 --- /dev/null +++ b/profile/.profile.d/fzf.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +if command -v fzf >/dev/null 2>&1; then + export FZF_DEFAULT_COMMAND="" + export FZF_DEFAULT_OPTS="--height 20% --reverse --border" +fi diff --git a/profile/.profile.d/git.sh b/profile/.profile.d/git.sh new file mode 100644 index 0000000..d0b5e8f --- /dev/null +++ b/profile/.profile.d/git.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +if command -v git >/dev/null 2>&1; then + if command -v hub >/dev/null 2>&1; then + alias git="hub" + fi + alias g="git" + + if command -v delta >/dev/null 2>&1; then + export GIT_PAGER="delta" + fi +fi diff --git a/profile/.profile.d/gnupg.sh b/profile/.profile.d/gnupg.sh new file mode 100644 index 0000000..d5d531f --- /dev/null +++ b/profile/.profile.d/gnupg.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +if command -v gpg >/dev/null 2>&1; then + GPG_TTY="$(tty)" + export GPG_TTY + + if command -v ssh >/dev/null 2>&1 && + command -v gpgconf >/dev/null 2>&1; then + unset SSH_AGENT_PID + if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne "${$}" ]; then + SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" + export SSH_AUTH_SOCK + fi + fi + + if command -v gpg-connect-agent >/dev/null 2>&1 && + [ "${TERM}" != "linux" ]; then + gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1 + fi +fi diff --git a/profile/.profile.d/grep.sh b/profile/.profile.d/grep.sh new file mode 100644 index 0000000..013a8ed --- /dev/null +++ b/profile/.profile.d/grep.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +if command -v grep >/dev/null 2>&1; then + alias gr="grep" + + if command -v batgrep >/dev/null 2>&1; then + alias gr="batgrep" + fi +fi + +if command -v egrep >/dev/null 2>&1; then + alias egr="egrep" +fi + +if command -v pgrep >/dev/null 2>&1; then + alias pgr="pgrep" +fi diff --git a/profile/.profile.d/hledger.sh b/profile/.profile.d/hledger.sh new file mode 100644 index 0000000..b656ba2 --- /dev/null +++ b/profile/.profile.d/hledger.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v hledger >/dev/null 2>&1; then + export LEDGER_FILE="${XDG_DOCUMENTS_DIR}/accounting/current.journal" +fi diff --git a/profile/.profile.d/jot.sh b/profile/.profile.d/jot.sh new file mode 100644 index 0000000..21ff224 --- /dev/null +++ b/profile/.profile.d/jot.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if command -v jot >/dev/null 2>&1 && + command -v tput >/dev/null 2>&1; then + # shellcheck disable=SC2139 + alias hr="jot -b '═' -s '' '$(tput cols)'" +fi diff --git a/profile/.profile.d/less.sh b/profile/.profile.d/less.sh new file mode 100644 index 0000000..9418348 --- /dev/null +++ b/profile/.profile.d/less.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +if command -v less >/dev/null 2>&1; then + export LESSHISTFILE="/dev/null" + export LESSHISTSIZE=0 +fi diff --git a/profile/.profile.d/llvm.sh b/profile/.profile.d/llvm.sh new file mode 100644 index 0000000..f62b09b --- /dev/null +++ b/profile/.profile.d/llvm.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +_llvm_root="/usr/lib/llvm" + +if [ -d "${_llvm_root}" ]; then + for _version in "${_llvm_root}"/*; do + path_append "${_version}/bin" + manpath_append "${_version}/share/man" + done +fi + +unset _version _llvm_root diff --git a/profile/.profile.d/ls.sh b/profile/.profile.d/ls.sh new file mode 100644 index 0000000..385caf8 --- /dev/null +++ b/profile/.profile.d/ls.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# shellcheck disable=SC2139 + +_gnu_ls="--color=always --human-readable --group-directories-first --indicator-style=classify --author" +_bsd_ls="-G -p" + +if ls --color "${HOME}" >/dev/null 2>&1; then + alias ls="ls ${_gnu_ls} -C" + alias la="ls ${_gnu_ls} -C -A" + alias ll="ls ${_gnu_ls} -l -A" +else + if command -v gls >/dev/null 2>&1; then + alias ls="gls ${_gnu_ls} -C" + alias la="gls ${_gnu_ls} -C -A" + alias ll="gls ${_gnu_ls} -l -A" + else + alias ls="ls ${_bsd_ls}" + alias la="ls ${_bsd_ls} -A" + alias ll="ls ${_bsd_ls} -A -l" + fi +fi + +alias l="ll" + +unset _bsd_ls _gnu_ls diff --git a/profile/.profile.d/man.sh b/profile/.profile.d/man.sh new file mode 100644 index 0000000..54d3513 --- /dev/null +++ b/profile/.profile.d/man.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if command -v man >/dev/null 2>&1; then + export MANOPT="--no-hyphenation" + + alias man="LANG=\"C\" LC_MESSAGES=\"C\" man" +fi diff --git a/profile/.profile.d/mpd.sh b/profile/.profile.d/mpd.sh new file mode 100644 index 0000000..8ed7310 --- /dev/null +++ b/profile/.profile.d/mpd.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v mpd >/dev/null 2>&1; then + export MPD_HOST="/var/lib/mpd/mpd.socket" +fi diff --git a/profile/.profile.d/nnn.sh b/profile/.profile.d/nnn.sh new file mode 100644 index 0000000..3890592 --- /dev/null +++ b/profile/.profile.d/nnn.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +if command -v nnn >/dev/null 2>&1; then + export NNN_BMS="h:~;s:~/src;d:~/downloads;e:/etc;u:/usr;p:/etc/portage;t:/tmp" + export NNN_PLUG="j:autojump" + export NNN_MULTISCRIPT=1 + export NNN_NO_AUTOSELECT=1 + export NNN_OPENER="nuke" + export NNN_QUOTE_ON=1 + export NNN_TMPFILE="${XDG_CACHE_HOME}/nnn" + export NNN_TRASH=0 + export NNN_USE_EDITOR=1 + + alias f="nnn" + + # shellcheck disable=SC2139 + alias ncp="cat ${NNN_TMPFILE}/.selection | tr '\0' '\n'" +fi diff --git a/profile/.profile.d/open.sh b/profile/.profile.d/open.sh new file mode 100644 index 0000000..8d0cd22 --- /dev/null +++ b/profile/.profile.d/open.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ "$(uname)" = "Linux" ]; then + if grep -q Microsoft /proc/version; then + alias open="explorer.exe" + elif command -v "xdg-open" >/dev/null 2>&1; then + alias open="xdg-open" + fi +fi + +if command -v "open" >/dev/null 2>&1; then + o() { + if [ "${#}" -eq 0 ]; then + open "${PWD}" + else + open "${@}" + fi + } +fi diff --git a/profile/.profile.d/pass.sh b/profile/.profile.d/pass.sh new file mode 100644 index 0000000..c8831b1 --- /dev/null +++ b/profile/.profile.d/pass.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +_impls=" +gopass +pass +" + +for _impl in ${_impls}; do + if command -v "${_impl}" >/dev/null 2>&1; then + export PASSWORD_STORE_DIR="${XDG_DATA_HOME}/password-store" + + break + fi +done + +unset _impl _impls diff --git a/profile/.profile.d/rsync.sh b/profile/.profile.d/rsync.sh new file mode 100644 index 0000000..cbbda1a --- /dev/null +++ b/profile/.profile.d/rsync.sh @@ -0,0 +1,12 @@ +#!/bin/sh +#shellcheck disable=SC2139 + +if command -v rsync >/dev/null 2>&1; then + _rsync_cp="rsync --archive --compress --verbose --progress --human-readable" + + alias rsync-cp="${_rsync_cp}" + alias rsync-mv="${_rsync_cp} --remove-source-files" + alias rsync-sync="${_rsync_cp} --update --delete" + + unset _rsync_cp +fi diff --git a/profile/.profile.d/shellcheck.sh b/profile/.profile.d/shellcheck.sh new file mode 100644 index 0000000..73b12e3 --- /dev/null +++ b/profile/.profile.d/shellcheck.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v shellcheck >/dev/null 2>&1; then + alias sc="shellcheck" +fi diff --git a/profile/.profile.d/svn.sh b/profile/.profile.d/svn.sh new file mode 100644 index 0000000..9fa1219 --- /dev/null +++ b/profile/.profile.d/svn.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v svn >/dev/null 2>&1; then + alias s="svn" +fi diff --git a/profile/.profile.d/torrentinfo.sh b/profile/.profile.d/torrentinfo.sh new file mode 100644 index 0000000..77c3833 --- /dev/null +++ b/profile/.profile.d/torrentinfo.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +if command -v torrentinfo >/dev/null 2>&1; then + alias torrentinfo="torrentinfo --everything" +fi diff --git a/profile/.profile.d/uim.sh b/profile/.profile.d/uim.sh new file mode 100644 index 0000000..d8b6202 --- /dev/null +++ b/profile/.profile.d/uim.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +if command -v uim-xim >/dev/null 2>&1; then + export GTK_IM_MODULE="uim" + export QT_IM_MODULE="uim" + export SHORT_DESC="UIM" + export UIM_FEP="skk" + export XIM="uim" + export XIM_ARGS= + export XIM_PROGRAM="uim-xim" + export XMODIFIERS="@im=uim" +fi diff --git a/profile/.profile.d/units.sh b/profile/.profile.d/units.sh new file mode 100644 index 0000000..7b19142 --- /dev/null +++ b/profile/.profile.d/units.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +if command -v units >/dev/null 2>&1; then + # shellcheck disable=SC2139 + alias units="units --history=${XDG_DATA_HOME}/units_history" +fi diff --git a/profile/.profile.d/urxvt.sh b/profile/.profile.d/urxvt.sh new file mode 100644 index 0000000..c08a63d --- /dev/null +++ b/profile/.profile.d/urxvt.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +if command -v urxvt >/dev/null 2>&1; then + export RXVT_SOCKET="${XDG_RUNTIME_DIR}/urxvtd.socket" + export URXVT_PERL_LIB="${XDG_DATA_HOME}/urxvt/ext" +fi diff --git a/profile/.profile.d/vi.sh b/profile/.profile.d/vi.sh new file mode 100644 index 0000000..d93b91d --- /dev/null +++ b/profile/.profile.d/vi.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +_implementations=" +vim +vi +" + +for _implementation in ${_implementations}; do + # shellcheck disable=SC2139 + command -v "${_implementation}" >/dev/null 2>&1 && + alias vim="${_implementation}" && + alias vi="${_implementation}" && + alias v="${_implementation}" && + break +done + +unset _implementation _implementations diff --git a/profile/.profile.d/wakatime.sh b/profile/.profile.d/wakatime.sh new file mode 100644 index 0000000..ff1ba89 --- /dev/null +++ b/profile/.profile.d/wakatime.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if command -v wakatime >/dev/null 2>&1; then + export WAKATIME_HOME="${HOME}/.wakatime" + + [ ! -d "${WAKATIME_HOME}" ] && + mkdir -p "${WAKATIME_HOME}" +fi diff --git a/profile/.profile.d/wget.sh b/profile/.profile.d/wget.sh new file mode 100644 index 0000000..de72b2b --- /dev/null +++ b/profile/.profile.d/wget.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +if command -v wget >/dev/null 2>&1; then + # shellcheck disable=SC2139 + alias wget="wget --hsts-file=${XDG_DATA_HOME}/wget-hsts" +fi diff --git a/profile/.profile.d/wine.sh b/profile/.profile.d/wine.sh new file mode 100644 index 0000000..8f078ce --- /dev/null +++ b/profile/.profile.d/wine.sh @@ -0,0 +1,13 @@ +#!/bin/sh +#shellcheck disable=SC2139 + +if command -v wine >/dev/null 2>&1; then + export WINEARCH="win64" + export WINEDEBUG="+all" + export WINEDLLOVERRIDES="winemenubuilder.exe=d" + export WINEPREFIX="${HOME}/.wine" + + if command -v xrandr >/dev/null 2>&1; then + alias wine-run="wine explorer.exe /desktop=default,$(xrandr | grep '\*' | cut -d' ' -f4)" + fi +fi diff --git a/profile/@install b/profile/@install new file mode 100755 index 0000000..d2073f2 --- /dev/null +++ b/profile/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${HOME}/.profile.d" ] && \ + mkdir -p "${HOME}/.profile.d" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + profile diff --git a/pulseaudio/.local/etc/pulse/client.conf b/pulseaudio/.local/etc/pulse/client.conf new file mode 100644 index 0000000..1038752 --- /dev/null +++ b/pulseaudio/.local/etc/pulse/client.conf @@ -0,0 +1,37 @@ +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, see . + +## Configuration file for PulseAudio clients. See pulse-client.conf(5) for +## more information. Default values are commented out. Use either ; or # for +## commenting. + +; default-sink = +; default-source = +; default-server = +; default-dbus-server = + +; autospawn = yes +; daemon-binary = /usr/bin/pulseaudio +; extra-arguments = --log-target=syslog + +; cookie-file = + +; enable-shm = yes +; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB + +; auto-connect-localhost = no +; auto-connect-display = no + +auth-cookie = ~/.local/var/esd_auth diff --git a/pulseaudio/.local/etc/pulse/daemon.conf b/pulseaudio/.local/etc/pulse/daemon.conf new file mode 100644 index 0000000..e15a2f7 --- /dev/null +++ b/pulseaudio/.local/etc/pulse/daemon.conf @@ -0,0 +1,89 @@ +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, see . + +## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for +## more information. Default values are commented out. Use either ; or # for +## commenting. + +; daemonize = no +; fail = yes +; allow-module-loading = yes +; allow-exit = yes +; use-pid-file = yes +; system-instance = no +; local-server-type = user +; enable-shm = yes +; enable-memfd = yes +; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB +; lock-memory = no +; cpu-limit = no + +; high-priority = yes +; nice-level = -11 + +; realtime-scheduling = yes +; realtime-priority = 5 + +; exit-idle-time = 20 +; scache-idle-time = 20 + +; dl-search-path = (depends on architecture) + +; load-default-script-file = yes +; default-script-file = /etc/pulse/default.pa + +; log-target = auto +; log-level = notice +; log-meta = no +; log-time = no +; log-backtrace = 0 + +; resample-method = speex-float-1 +; avoid-resampling = false +; enable-remixing = yes +; remixing-use-all-sink-channels = yes +; enable-lfe-remixing = no +; lfe-crossover-freq = 0 + +; flat-volumes = no + +; rlimit-fsize = -1 +; rlimit-data = -1 +; rlimit-stack = -1 +; rlimit-core = -1 +; rlimit-as = -1 +; rlimit-rss = -1 +; rlimit-nproc = -1 +; rlimit-nofile = 256 +; rlimit-memlock = -1 +; rlimit-locks = -1 +; rlimit-sigpending = -1 +; rlimit-msgqueue = -1 +; rlimit-nice = 31 +; rlimit-rtprio = 9 +; rlimit-rttime = 200000 + +; default-sample-format = s16le +; default-sample-rate = 44100 +; alternate-sample-rate = 48000 +; default-sample-channels = 2 +; default-channel-map = front-left,front-right + +; default-fragments = 4 +; default-fragment-size-msec = 25 + +; enable-deferred-volume = yes +; deferred-volume-safety-margin-usec = 8000 +; deferred-volume-extra-delay-usec = 0 diff --git a/pulseaudio/.local/etc/pulse/default.pa b/pulseaudio/.local/etc/pulse/default.pa new file mode 100644 index 0000000..64c94cb --- /dev/null +++ b/pulseaudio/.local/etc/pulse/default.pa @@ -0,0 +1,130 @@ +#!/usr/bin/pulseaudio -nF +# +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, see . + +# This startup script is used only if PulseAudio is started per-user +# (i.e. not in system mode) + +.fail + +### Automatically restore the volume of streams and devices +load-module module-device-restore +load-module module-stream-restore +load-module module-card-restore + +### Automatically augment property information from .desktop files +### stored in /usr/share/application +load-module module-augment-properties + +### Should be after module-*-restore but before module-*-detect +load-module module-switch-on-port-available + +### Load audio drivers statically +### (it's probably better to not load these drivers manually, but instead +### use module-udev-detect -- see below -- for doing this automatically) +#load-module module-alsa-sink +#load-module module-alsa-source device=hw:1,0 +#load-module module-null-sink +#load-module module-pipe-sink + +### Automatically load driver modules depending on the hardware available +.ifexists module-udev-detect.so +load-module module-udev-detect +.else +### Use the static hardware detection module (for systems that lack udev support) +load-module module-detect +.endif + +### Automatically connect sink and source if JACK server is present +.ifexists module-jackdbus-detect.so +.nofail +load-module module-jackdbus-detect channels=2 +.fail +.endif + + +### Load several protocols +.ifexists module-esound-protocol-unix.so +load-module module-esound-protocol-unix +.endif +load-module module-native-protocol-unix + +### Network access (may be configured with paprefs, so leave this commented +### here if you plan to use paprefs) +#load-module module-esound-protocol-tcp +#load-module module-native-protocol-tcp + +### Load the RTP receiver module (also configured via paprefs, see above) +#load-module module-rtp-recv + +### Load the RTP sender module (also configured via paprefs, see above) +#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" +#load-module module-rtp-send source=rtp.monitor + +### Load additional modules from GSettings. This can be configured with the paprefs tool. +### Please keep in mind that the modules configured by paprefs might conflict with manually +### loaded modules. +#.ifexists module-gsettings.so +#.nofail +#load-module module-gsettings +#.fail +#.endif + + +### Automatically restore the default sink/source when changed by the user +### during runtime +### NOTE: This should be loaded as early as possible so that subsequent modules +### that look up the default sink/source get the right value +load-module module-default-device-restore + +### Automatically move streams to the default sink if the sink they are +### connected to dies, similar for sources +load-module module-rescue-streams + +### Make sure we always have a sink around, even if it is a null sink. +load-module module-always-sink + +### Honour intended role device property +load-module module-intended-roles + +### Automatically suspend sinks/sources that become idle for too long +load-module module-suspend-on-idle + +### If autoexit on idle is enabled we want to make sure we only quit +### when no local session needs us anymore. +.ifexists module-console-kit.so +load-module module-console-kit +.endif +.ifexists module-systemd-login.so +load-module module-systemd-login +.endif + +### Enable positioned event sounds +load-module module-position-event-sounds + +### Cork music/video streams when a phone stream is active +load-module module-role-cork + +### Modules to allow autoloading of filters (such as echo cancellation) +### on demand. module-filter-heuristics tries to determine what filters +### make sense, and module-filter-apply does the heavy-lifting of +### loading modules and rerouting streams. +load-module module-filter-heuristics +load-module module-filter-apply + +### Make some devices default +#set-default-sink output +#set-default-source input diff --git a/pulseaudio/@install b/pulseaudio/@install new file mode 100755 index 0000000..e391077 --- /dev/null +++ b/pulseaudio/@install @@ -0,0 +1,10 @@ +#!/bin/sh + +[ ! -d "${XDG_CONFIG_HOME}/pulse" ] && \ + mkdir -p "${XDG_CONFIG_HOME}/pulse" + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + pulseaudio diff --git a/pylint/.pylintrc b/pylint/.pylintrc new file mode 100644 index 0000000..4a73ef5 --- /dev/null +++ b/pylint/.pylintrc @@ -0,0 +1,570 @@ +[MASTER] + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-whitelist= + +# Add files or directories to the blacklist. They should be base names, not +# paths. +ignore=CVS + +# Add files or directories matching the regex patterns to the blacklist. The +# regex matches against base names, not paths. +ignore-patterns= + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use. +jobs=0 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python modules names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# Specify a configuration file. +#rcfile= + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. +confidence= + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then reenable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +# disable=print-statement, +# parameter-unpacking, +# unpacking-in-except, +# old-raise-syntax, +# backtick, +# long-suffix, +# old-ne-operator, +# old-octal-literal, +# import-star-module-level, +# non-ascii-bytes-literal, +# raw-checker-failed, +# bad-inline-option, +# locally-disabled, +# file-ignored, +# suppressed-message, +# useless-suppression, +# deprecated-pragma, +# use-symbolic-message-instead, +# apply-builtin, +# basestring-builtin, +# buffer-builtin, +# cmp-builtin, +# coerce-builtin, +# execfile-builtin, +# file-builtin, +# long-builtin, +# raw_input-builtin, +# reduce-builtin, +# standarderror-builtin, +# unicode-builtin, +# xrange-builtin, +# coerce-method, +# delslice-method, +# getslice-method, +# setslice-method, +# no-absolute-import, +# old-division, +# dict-iter-method, +# dict-view-method, +# next-method-called, +# metaclass-assignment, +# indexing-exception, +# raising-string, +# reload-builtin, +# oct-method, +# hex-method, +# nonzero-method, +# cmp-method, +# input-builtin, +# round-builtin, +# intern-builtin, +# unichr-builtin, +# map-builtin-not-iterating, +# zip-builtin-not-iterating, +# range-builtin-not-iterating, +# filter-builtin-not-iterating, +# using-cmp-argument, +# eq-without-hash, +# div-method, +# idiv-method, +# rdiv-method, +# exception-message-attribute, +# invalid-str-codec, +# sys-max-int, +# bad-python3-import, +# deprecated-string-function, +# deprecated-str-translate-call, +# deprecated-itertools-function, +# deprecated-types-field, +# next-method-defined, +# dict-items-not-iterating, +# dict-keys-not-iterating, +# dict-values-not-iterating, +# deprecated-operator-function, +# deprecated-urllib-function, +# xreadlines-attribute, +# deprecated-sys-function, +# exception-escape, +# comprehension-escape + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable=c-extension-no-member + + +[REPORTS] + +# Python expression which should return a note less than 10 (10 is the highest +# note). You have access to the variables errors warning, statement which +# respectively contain the number of errors / warnings messages and the total +# number of statements analyzed. This is used by the global evaluation report +# (RP0004). +evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +#msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +output-format=text + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. Default to name +# with leading underscore. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=100 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# List of optional constructs for which whitespace checking is disabled. `dict- +# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. +# `trailing-comma` allows a space between comma and closing bracket: (a, ). +# `empty-line` allows space-only lines. +no-space-check=trailing-comma, + dict-separator + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[SIMILARITIES] + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + +# Ignore imports when computing similarities. +ignore-imports=no + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[STRING] + +# This flag controls whether the implicit-str-concat-in-sequence should +# generate a warning on implicit string concatenation in sequences defined over +# several lines. +check-str-concat-over-line-jumps=no + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=snake_case + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=snake_case + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Naming style matching correct class attribute names. +class-attribute-naming-style=any + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. +#class-attribute-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE + +# Regular expression matching correct constant names. Overrides const-naming- +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=snake_case + +# Regular expression matching correct function names. Overrides function- +# naming-style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=snake_case + +# Regular expression matching correct method names. Overrides method-naming- +# style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=snake_case + +# Regular expression matching correct module names. Overrides module-naming- +# style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Naming style matching correct variable names. +variable-naming-style=snake_case + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. +#variable-rgx= + + +[LOGGING] + +# Format style used to check logging format string. `old` means using % +# formatting, while `new` is for `{}` formatting. +logging-format-style=old + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= + +# Tells whether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis. It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. Available dictionaries: none. To make it working +# install python-enchant package.. +spelling-dict= + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to indicated private dictionary in +# --spelling-private-dict-file option instead of raising a message. +spelling-store-unknown-words=no + + +[CLASSES] + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict, + _fields, + _replace, + _source, + _make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=cls + + +[DESIGN] + +# Maximum number of arguments for function / method. +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in an if statement. +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=12 + +# Maximum number of locals for function / method body. +max-locals=15 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body. +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[IMPORTS] + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules=optparse,tkinter.tix + +# Create a graph of external dependencies in the given file (report RP0402 must +# not be disabled). +ext-import-graph= + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report RP0402 must not be disabled). +import-graph= + +# Create a graph of internal dependencies in the given file (report RP0402 must +# not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when being caught. Defaults to +# "BaseException, Exception". +overgeneral-exceptions=BaseException, + Exception diff --git a/pylint/@install b/pylint/@install new file mode 100755 index 0000000..dd12d23 --- /dev/null +++ b/pylint/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + pylint diff --git a/python/.pystartup b/python/.pystartup new file mode 100644 index 0000000..98d17b5 --- /dev/null +++ b/python/.pystartup @@ -0,0 +1,128 @@ +from code import InteractiveConsole +from tempfile import mkstemp +import atexit +import os +import readline +import rlcompleter +import sys + + +readline.parse_and_bind("tab: complete") + + +class TermColors(dict): + color_templates = ( + ("Normal", "0"), + ("Black", "0;30"), + ("Red", "0;31"), + ("Green", "0;32"), + ("Brown", "0;33"), + ("Blue", "0;34"), + ("Purple", "0;35"), + ("Cyan", "0;36"), + ("LightGray", "0;37"), + ("DarkGray", "1;30"), + ("LightRed", "1;31"), + ("LightGreen", "1;32"), + ("Yellow", "1;33"), + ("LightBlue", "1;34"), + ("LightPurple", "1;35"), + ("LightCyan", "1;36"), + ("White", "1;37") + ) + color_base = '\001\033[%sm\002' + + def __init__(self): + self.update(dict( + [(k, self.color_base % v) for k, v in self.color_templates])) + + +class Completer(object): + def save_history(self): + import readline + + readline.write_history_file(self.python_histfile) + + def __init__(self): + self.python_dir = os.path.expanduser( + "%s/python" % os.environ["XDG_DATA_HOME"]) + + if not os.path.exists(self.python_dir): + os.mkdir(self.python_dir) + + self.python_histfile = os.path.expanduser( + "%s/history" % self.python_dir) + + if os.path.exists(self.python_histfile): + readline.read_history_file(self.python_histfile) + + readline.set_history_length(1000) + atexit.register(self.save_history) + + +def DisplayHook(value): + if value is not None: + try: + import __builtin__ + __builtin__._ = value + except ImportError: + __builtins__._ = value + + import pprint + + pprint.pprint(value) + del pprint + + +class EditableBufferInteractiveConsole(InteractiveConsole): + def __init__(self, *args, **kwargs): + self.last_buffer = [] + InteractiveConsole.__init__(self, *args, **kwargs) + + def runsource(self, source, *args): + self.last_buffer = [source.encode('utf-8')] + return InteractiveConsole.runsource(self, source, *args) + + def raw_input(self, *args): + line = InteractiveConsole.raw_input(self, *args) + + if line == EDIT_CMD: + tmp_fd, tmp_file = mkstemp('.py') + + os.write(tmp_fd, b'\n'.join(self.last_buffer)) + os.close(tmp_fd) + + os.system('%s %s' % (EDITOR, tmp_file)) + + line = open(tmp_file).read() + + os.unlink(tmp_file) + tmp_file = '' + + lines = line.split('\n') + + for i in range(len(lines) - 1): + self.push(lines[i]) + + line = lines[-1] + return line + + +TC = TermColors() +ps1 = "%sλ%s %s>%s " +sys.ps1 = ps1 % (TC['Blue'], TC['Normal'], + TC['White'], TC['Normal']) +ps2 = " %s…%s %s>%s " +sys.ps2 = ps2 % (TC['Blue'], TC['Normal'], + TC['White'], TC['Normal']) +sys.displayhook = DisplayHook + +C = Completer() +EDITOR = os.environ.get('EDITOR', 'vim') +EDIT_CMD = ':e' +C = EditableBufferInteractiveConsole(locals=locals()) +C.interact(banner="") + +sys.exit() + +# vim: filetype=python diff --git a/python/@install b/python/@install new file mode 100755 index 0000000..1d8f685 --- /dev/null +++ b/python/@install @@ -0,0 +1,7 @@ +#!/bin/sh + +stow \ + --target="${HOME}" \ + --ignore="^@.*" \ + --verbose \ + python diff --git a/qutebrowser/.local/etc/qutebrowser/config.py b/qutebrowser/.local/etc/qutebrowser/config.py new file mode 100644 index 0000000..a145e59 --- /dev/null +++ b/qutebrowser/.local/etc/qutebrowser/config.py @@ -0,0 +1,1225 @@ +# Autogenerated config.py +# +# NOTE: config.py is intended for advanced users who are comfortable +# with manually migrating the config file on qutebrowser upgrades. If +# you prefer, you can also configure qutebrowser using the +# :set/:bind/:config-* commands without having to write a config.py +# file. +# +# Documentation: +# qute://help/configuring.html +# qute://help/settings.html + +# Change the argument to True to still load settings configured via autoconfig.yml +config.load_autoconfig(False) + +# Require a confirmation before quitting the application. +# Type: ConfirmQuit +# Valid values: +# - always: Always show a confirmation. +# - multiple-tabs: Show a confirmation if multiple tabs are opened. +# - downloads: Show a confirmation if downloads are running +# - never: Never show a confirmation. +c.confirm_quit = ['downloads'] + +# Maximum time (in minutes) between two history items for them to be +# considered being from the same browsing session. Items with less time +# between them are grouped when being displayed in `:history`. Use -1 to +# disable separation. +# Type: Int +c.history_gap_interval = 30 + +# When to find text on a page case-insensitively. +# Type: IgnoreCase +# Valid values: +# - always: Search case-insensitively. +# - never: Search case-sensitively. +# - smart: Search case-sensitively if there are capital characters. +c.search.ignore_case = 'smart' + +# How to open links in an existing instance if a new one is launched. +# This happens when e.g. opening a link from a terminal. See +# `new_instance_open_target_window` to customize in which window the +# link is opened in. +# Type: String +# Valid values: +# - tab: Open a new tab in the existing window and activate the window. +# - tab-bg: Open a new background tab in the existing window and activate the window. +# - tab-silent: Open a new tab in the existing window without activating the window. +# - tab-bg-silent: Open a new background tab in the existing window without activating the window. +# - window: Open in a new window. +# - private-window: Open in a new private window. +c.new_instance_open_target = 'tab' + +# Which window to choose when opening links as new tabs. When +# `new_instance_open_target` is set to `window`, this is ignored. +# Type: String +# Valid values: +# - first-opened: Open new tabs in the first (oldest) opened window. +# - last-opened: Open new tabs in the last (newest) opened window. +# - last-focused: Open new tabs in the most recently focused window. +# - last-visible: Open new tabs in the most recently visible window. +c.new_instance_open_target_window = 'last-focused' + +# Additional arguments to pass to Qt, without leading `--`. With +# QtWebEngine, some Chromium arguments (see +# https://peter.sh/experiments/chromium-command-line-switches/ for a +# list) will work. +# Type: List of String +c.qt.args = [] + +# Turn on Qt HighDPI scaling. This is equivalent to setting +# QT_AUTO_SCREEN_SCALE_FACTOR=1 or QT_ENABLE_HIGHDPI_SCALING=1 (Qt >= +# 5.14) in the environment. It's off by default as it can cause issues +# with some bitmap fonts. As an alternative to this, it's possible to +# set font sizes and the `zoom.default` setting. +# Type: Bool +c.qt.highdpi = False + +# Automatically start playing `