1
11
Fork
You've already forked dotfiles
1
My personal configuration files and helper scripts.
  • Vim script 45.5%
  • Shell 41.3%
  • Python 7.3%
  • Lua 3%
  • Nix 1.2%
  • Other 1.7%
2026年06月19日 00:55:56 +02:00
.bash hledger: cunt alias for "cusy not transferred" 2025年07月10日 15:19:32 +02:00
.cache/neomutt Add NeoMutt config 2025年08月21日 00:59:57 +02:00
.composer Composer stuff (mostly ignoring things) 2018年09月30日 22:12:05 +02:00
.config yt-dlp: Delta Flyers episode title has been fixed 2025年11月05日 01:19:46 +01:00
.davfs2 Add davfs2 config 2024年08月25日 01:24:42 +02:00
.gnupg Start out with a rather basic GnuPG config 2020年07月09日 15:44:22 +02:00
.local shinst, a tool to transparently install software 2025年03月26日 23:53:49 +01:00
.ssh ssh: Disable CheckHostIP 2025年04月09日 01:00:37 +02:00
.terminfo/x Add terminfo for kitty 2023年12月14日 15:30:02 +00:00
.termux Termux: More virtual keys, in two columns now 2020年05月30日 03:46:42 +02:00
.tmux tmux: Tidy up leftover sessions in the group 2021年02月24日 17:58:14 +01:00
.vim Update vim-hurl 2026年05月28日 18:39:44 +02:00
.weechat WeeChat: Remove freenode 2021年06月16日 02:20:59 +02:00
bin Add cctv-has-content script 2026年06月19日 00:55:56 +02:00
proj Remove autoborg, it will be replaced with Hugh 2024年01月30日 20:05:00 +01:00
tmp edit: Automatically try to download Neovim 2023年02月16日 22:10:13 +01:00
.avatar-23c3-square-full.jpg Add 23C3 avatar and use it as GNOME login face 2025年03月10日 00:22:07 +01:00
.bash_logout Add Debian's default clear-screen .bash_logout 2020年08月21日 15:42:29 +02:00
.bash_profile .bash_profile: Remove/fix some outdated comments 2020年05月23日 11:58:53 +02:00
.bash_sessions_disable Disable El Capitan bash session restoration 2018年09月26日 11:31:57 +02:00
.bashrc Basic hledger setup 2025年07月01日 23:21:33 +02:00
.build.yml Send an email when dotfiles build fails 2024年05月17日 22:09:15 +02:00
.CFUserTextEncoding Configure macOS to prefer English 2018年09月26日 11:20:16 +02:00
.cookiecutterrc Cookiecutter config 2026年03月17日 20:49:09 +01:00
.dconf.ini GNOME: Close windows with <Super>+Q 2025年03月10日 01:55:21 +01:00
.editorconfig Basic hledger setup 2025年07月01日 23:21:33 +02:00
.face Add 23C3 avatar and use it as GNOME login face 2025年03月10日 00:22:07 +01:00
.face.icon Add 23C3 avatar and use it as GNOME login face 2025年03月10日 00:22:07 +01:00
.gitconfig Git: several submodule-related settings 2024年12月14日 19:13:08 +01:00
.gitignore Cookiecutter config 2026年03月17日 20:49:09 +01:00
.gitmodules Install Vim timeclock plugin (for hledger) 2025年07月03日 16:12:10 +02:00
.inputrc readline: List alternatives on the first tab 2023年10月25日 23:12:24 +02:00
.mailcap mailcap: Open PDFs and images with xdg-open 2025年08月22日 00:02:29 +02:00
.nanorc nano: don't hard-wrap my files 2018年09月26日 14:14:32 +02:00
.profile Add a .profile stub 2020年08月21日 18:06:58 +02:00
.sqliterc SQLite: Allow 1 GiB page cache, set CLI options 2024年05月14日 15:07:12 +02:00
.tmux.conf Install and configure vim-gitgutter 2023年09月24日 00:29:47 +02:00
.tmux.nested.conf tmux: Massive style overhaul 2022年04月24日 14:06:56 +02:00
.vuerc Vue.js: Don't use the Taobao registry 2022年06月12日 11:49:05 +02:00
LICENSE.txt Add MIT license 2022年11月08日 20:21:46 +01:00
README.md Cookiecutter config 2026年03月17日 20:49:09 +01:00

dotfiles

Good Unix tools are configured by files written by the user, so-called dotfiles. Bad tools are configured by databases and GUIs. This repository tries to apply my preferred settings to both of them.

What's configured

Status

This is currently replacing dotscy in order to have a fresh start. The old repo contained a lot of configs for tools that I no longer use, even fonts and binaries that I don't want anymore, but still had in the history.

These settings have been in use on macOS and Debian/Ubuntu (in WSL and standalone); they should run on other Unixes as well.

Setting up

Instead of symlinking lots of files into your home directory, this repository is supposed to be your home directory. This has the added benefit of you being aware (via git status) of new config files that some tool might generate.

The setup procedure will clone the repo into a subdir of your home, then moving everything in it (including .git) directly into your home dir. Files/directories that would be overwritten will be backed up to ~/.orig_home.

Termux

Install required (and my favorite) packages and setup storage access.

pkg install curl git man neovim perl rsync termux-api &&
termux-setup-storage

Then, continue as described below in the "Unix" section.

Ubuntu / Debian

Install required packages.

sudo apt update &&
sudo apt install git rsync

These might also make sense:

sudo apt install scdaemon vim

On headless machines that are supposed to be used via SSH, it makes sense to forward the gpg-agent socket. However, a remote gpg-agent can interfere with that. If possible, allow SSH to overwrite Unix sockets specified in RemoteForward directives by adding the following line to the SSH server config:

StreamLocalBindUnlink yes

Alternatively, you can try to disable the remote gpg-agent by issuing (as the normal user):

systemctl --user mask --now gpg-agent.service gpg-agent{,-ssh,-extra,-browser}.socket

When I might be working on the machine primarily via the text-only console (e.g. on Raspberry Pis), styling that console might be a good thing, too. I prefer these settings in /etc/default/console-setup:

CHARMAP="UTF-8"
CODESET="Uni2"
FONTFACE="Fixed"
FONTSIZE="8x16"

Also, to get my Sihaya color scheme in the console, I add these values to the kernel command line (/boot/cmdline.txt on a Pi):

vt.default_red=36,207,74,195,0,145,0,205,83,255,112,255,0,197,0,255 vt.default_grn=35,0,166,127,112,0,147,198,81,0,249,166,140,0,220,247 vt.default_blu=32,0,9,0,203,188,165,178,76,0,13,0,255,255,247,226

Then, continue as described below in the "Unix" section.

Fedora

I'm currently using Fedora on my Linux laptop. Since I've started out with a minimal netinstall, I needed to install quite a few packages manually. Not all of them are strictly required for these dotfiles (you can probably get by with just git rsync), but for what it's worth, this is what I installed:

sudo dnf install acpi bemenu brightnessctl firefox gammastep git iw iwl7260-firmware NetworkManager-wifi net-tools pcsc-lite pinentry-qt rsync sway syncthing vim wpa_supplicant

Then, continue below at "Unix".

Windows

Install Git for Windows. Then, in a command prompt at your home directory, run

git clone --recurse-submodules https://codeberg.org/scy/dotfiles.git

Afterwards, symlink VS Code's settings.json as described in it.

WSL

Make sure you have

[automount]
options = fmask=0007,dmask=0007

in your /etc/wsl.conf. If you allow read/write for "others", SSH will refuse to accept configs living on the Windows drive (which they do on my machine, because I’m syncing them on the host side). If you disallow execute, you won’t be able to call Windows commands from WSL.

Unix

which rsync > /dev/null &&
umask 0022 && cd &&
test ! -e .orig_home &&
git clone --recurse-submodules https://codeberg.org/scy/dotfiles.git &&
rsync -avb --backup-dir=.orig_home dotfiles/ . &&
rm -rf dotfiles

Hint: If you'd like to run these commands on a machine you can't copy/paste to, you can extract and run that section of the readme using this piece of sed magic:

curl -sL https://codeberg.org/scy/dotfiles/raw/branch/main/README.md | sed -n '/^### Unix$/,/^```$/ { /```/d; p }' | sh

If you have installed a Syncthing package and would like to enable Syncthing for the scy user on boot, you might want to do something like:

sudo systemctl enable --now syncthing@scy

Manual configuration

Although I'm aiming to automate as much as possible with this repo, for some things it's currently too complicated, at least at the moment. Maybe I'll add automation scripts in the future, but right now it's not worth the effort.

On machines without HTTPS push to GitHub

On some machines, especially those without full disk encryption, I don’t want to store GitHub credentials directly on disk. Instead, I configure them to clone (anonymously) via HTTPS, but push via SSH:

git config -f ~/.gitconfig-local url.ssh://git@github.com/.pushInsteadOf https://github.com/

On a Mac

  • Install Karabiner-Elements.
  • Change the keyboard layout to US English. Not US International, because this results in dead keys which massively disturb my programming flow.
  • In Terminal.app:
    • on startup, new window with Pro
    • change default profile to Pro
    • in the Window tab of the profile, change the default size to 160x40
    • in the Shell tab of the profile, change the setting to close the window when the shell exits without error

On Windows

  • The default Windows console doesn't provide a visual bell, but the audible one is annoying. Therefore, mash Backspace in a bash for a few times to produce an audible bell. Then, right-click on the volume symbol in the task bar, choose "Open Volume Mixer" and mute "Console Window Host".
  • See settings.json for instructions on how to symlink the VS Code settings from this repo into %APPDATA%.
  • If you dual-boot with Linux, you may wish to ask Windows to set the system's real-time clock to UTC (instead of local time). To do that, run the following command in an admin shell: reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_QWORD /f