Compare commits
2 commits
606b840c59
...
dafe42b6e7
| Author | SHA1 | Date | |
|---|---|---|---|
| dafe42b6e7 | |||
| 126d9892e2 |
11 changed files with 50 additions and 452 deletions
|
|
@ -1,18 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Typical verbosity and settings.
|
|
||||||
alias \
|
|
||||||
mkd='mkdir -pv' \
|
|
||||||
ffmepg='ffmpeg -hidebanner'
|
|
||||||
|
|
||||||
# Colorize when possible.
|
|
||||||
alias \
|
|
||||||
ls='ls -h -N -G --group-directories-first' \
|
|
||||||
grep='grep --color=auto'
|
|
||||||
|
|
||||||
# Shortenings
|
|
||||||
alias \
|
|
||||||
d='docker' \
|
|
||||||
h='history' \
|
|
||||||
l='less' \
|
|
||||||
s='sudo'
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
$include /etc/inputrc
|
|
||||||
|
|
||||||
set colored-stats On
|
|
||||||
set completion-prefix-display-length 6
|
|
||||||
set mark-symlinked-directories On
|
|
||||||
|
|
||||||
set bell-style none
|
|
||||||
set completion-ignore-case off
|
|
||||||
set show-all-if-ambiguous on
|
|
||||||
set menu-complete-display-prefix on
|
|
||||||
|
|
||||||
"\e[Z": menu-complete
|
|
||||||
"\e[A": history-search-backward
|
|
||||||
"\e[B": history-search-forward
|
|
||||||
|
|
||||||
# "\eOd": backward-word
|
|
||||||
# "\eOc": forward-word
|
|
||||||
#
|
|
||||||
# # for linux console
|
|
||||||
# "\e[1~": beginning-of-line
|
|
||||||
# "\e[4~": end-of-line
|
|
||||||
# "\e[5~": beginning-of-history
|
|
||||||
# "\e[6~": end-of-history
|
|
||||||
# "\e[3~": delete-char
|
|
||||||
# "\e[2~": quoted-insert
|
|
||||||
#
|
|
||||||
# # for xterm
|
|
||||||
# "\eOH": beginning-of-line
|
|
||||||
# "\eOF": end-of-line
|
|
||||||
|
|
||||||
set editing-mode vi
|
|
||||||
$if mode=vi
|
|
||||||
|
|
||||||
set show-mode-in-prompt on
|
|
||||||
set vi-ins-mode-string \1\e\[6 q\2
|
|
||||||
set vi-cmd-mode-string \1\e\[2 q\2
|
|
||||||
|
|
||||||
set keymap vi-command
|
|
||||||
Control-l: clear-screen
|
|
||||||
Control-a: beginning-of-line
|
|
||||||
|
|
||||||
set keymap vi-insert
|
|
||||||
Control-l: clear-screen
|
|
||||||
Control-a: beginning-of-line
|
|
||||||
"\C-i": menu-complete
|
|
||||||
|
|
||||||
$endif
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
CHANGELOG.md
|
|
||||||
Containerfile
|
|
||||||
.containerignore
|
|
||||||
.dockerignore
|
|
||||||
.git
|
|
||||||
.gitignore
|
|
||||||
README.md
|
|
||||||
34
.gitconfig
34
.gitconfig
|
|
@ -1,18 +1,20 @@
|
||||||
[user]
|
[user]
|
||||||
email = matthew@binning.dev
|
email = matthewbinning@pm.me
|
||||||
name = Matthew Binning
|
name = Matthew Binning
|
||||||
[diff]
|
username = matthew.binning
|
||||||
tool = vimdiff
|
editor = vi
|
||||||
[difftool]
|
autocrlf = input
|
||||||
prompt = false
|
[init]
|
||||||
[difftool "sdiff"]
|
defaultBranch = main
|
||||||
cmd = cmddiff $LOCAL $REMOTE
|
[pull]
|
||||||
[merge]
|
rebase = true
|
||||||
tool = fugitive
|
[push]
|
||||||
|
autoSetupRemote = true
|
||||||
[alias]
|
[alias]
|
||||||
df = difftool
|
br = branch
|
||||||
sdiff = difftool --ignore-submodules --tool=sdiff
|
rb = rebase
|
||||||
[mergetool]
|
st = status
|
||||||
prompt = false
|
sw = switch
|
||||||
[mergetool "fugitive"]
|
l = log --oneline --graph --decorate
|
||||||
cmd = vim -f -c \"Gvdiff\" \"$MERGED\"
|
[credential]
|
||||||
|
helper = store
|
||||||
|
|
|
||||||
12
.gitignore
vendored
12
.gitignore
vendored
|
|
@ -1,12 +0,0 @@
|
||||||
.cache
|
|
||||||
.config/shell/histfile
|
|
||||||
.config/sfeed/feeds
|
|
||||||
.config/sfeed/urls
|
|
||||||
.config/when/calendar
|
|
||||||
.*history
|
|
||||||
.local/share/nvim/site/pack/gitmodules/start/er.vim/*
|
|
||||||
.local/share/nvim/site/pack/gitmodules/start/indentLine/*
|
|
||||||
.local/share/nvim/site/pack/gitmodules/start/lspconfig/*
|
|
||||||
.local/share/nvim/site/pack/gitmodules/start/lspconfig/.*
|
|
||||||
.local/share/nvim/site/pack/gitmodules/start/todo.txt-vim/*
|
|
||||||
.kube/
|
|
||||||
40
.profile
40
.profile
|
|
@ -1,24 +1,32 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
# PS1='[\u@\h \W]\$ '
|
|
||||||
|
|
||||||
export XDG_CONFIG_HOME="$HOME/.config"
|
export XDG_CONFIG_HOME="$HOME/.config"
|
||||||
export XDG_DATA_HOME="$HOME/.local/share"
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
export XDG_CACHE_HOME="$HOME/.cache"
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
|
|
||||||
export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/inputrc"
|
|
||||||
export ALIASRC="${XDG_CONFIG_HOME:-$HOME/.config}/aliasrc"
|
|
||||||
|
|
||||||
if docker --version > /dev/null 2>&1; then
|
|
||||||
PS1="\[\033[38;5;34m\]\u@\h \W]\\$\[$(tput sgr0)\] "
|
|
||||||
export PS1
|
|
||||||
else
|
|
||||||
PS1="\[\033[38;5;44m\]\u@\h \W]\\$\[$(tput sgr0)\] "
|
|
||||||
export PS1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Git should ask for a password through the command line.
|
# Git should ask for a password through the command line.
|
||||||
|
|
||||||
unset GIT_ASKPASS
|
unset GIT_ASKPASS
|
||||||
unset SSH_ASKPASS
|
unset SSH_ASKPASS
|
||||||
|
|
||||||
# shellcheck source=./.config/aliasrc
|
# Android development using Dioxus
|
||||||
[ -f "$ALIASRC" ] && . ./"$ALIASRC"
|
|
||||||
|
JAVA_HOME="/usr/local/android-studio/jbr"
|
||||||
|
export JAVA_HOME
|
||||||
|
ANDROID_HOME="$HOME/Android/Sdk"
|
||||||
|
export ANDROID_HOME
|
||||||
|
NDK_HOME="$ANDROID_HOME/ndk/29.0.13113456"
|
||||||
|
export NDK_HOME
|
||||||
|
PATH="$PATH:$ANDROID_HOME/emulator"
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
# Kubernetes Support
|
||||||
|
|
||||||
|
KUBECONFIG="$HOME"/.kube/config
|
||||||
|
export KUBECONFIG
|
||||||
|
|
||||||
|
# Shortenings
|
||||||
|
alias \
|
||||||
|
d='docker' \
|
||||||
|
g='git' \
|
||||||
|
k='kubectl' \
|
||||||
|
s='sudo'
|
||||||
|
|
||||||
|
|
|
||||||
14
Dockerfile
14
Dockerfile
|
|
@ -1,14 +0,0 @@
|
||||||
ARG BASE_REGISTRY=docker.io
|
|
||||||
ARG BASE_IMAGE=alpine
|
|
||||||
ARG BASE_TAG=latest
|
|
||||||
FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} AS base
|
|
||||||
RUN apk update && \
|
|
||||||
apk upgrade && \
|
|
||||||
apk add make
|
|
||||||
|
|
||||||
FROM base as test
|
|
||||||
RUN adduser -D user
|
|
||||||
USER user
|
|
||||||
WORKDIR /home/user/dotfiles
|
|
||||||
COPY --chown=user ./ ./
|
|
||||||
ENTRYPOINT [ "make" ]
|
|
||||||
86
Makefile
86
Makefile
|
|
@ -1,86 +0,0 @@
|
||||||
.POSIX:
|
|
||||||
.SUFFIXES:
|
|
||||||
|
|
||||||
COLOR_BLUE:=\033[36m
|
|
||||||
COLOR_AUTO:=\033[0m
|
|
||||||
SRC=.config/aliasrc .config/inputrc .gitconfig .*profile
|
|
||||||
TGT=$(addprefix $$HOME/, $(SRC))
|
|
||||||
|
|
||||||
.PHONY: help ## Show this help menu.
|
|
||||||
help:
|
|
||||||
@printf 'make <subcommand>\n\nsubcommand:\n'
|
|
||||||
@awk -F '(: | ## )' '/^\.PHONY:.*?## .*$$/ {\
|
|
||||||
printf("\t$(COLOR_BLUE)%s\t\t$(COLOR_AUTO)%s\n",$$2, $$3)\
|
|
||||||
}' $(MAKEFILE_LIST)
|
|
||||||
|
|
||||||
.PHONY: installcheck ## Check if the dotfiles are properly linked to home.
|
|
||||||
installcheck:
|
|
||||||
# Assert link sources match link destinations.
|
|
||||||
for link in $(SRC); do \
|
|
||||||
dst_link=$$(stat -c "%N" ~/"$$link" | cut -d ' ' -f 3); \
|
|
||||||
src_link="$$PWD/$$link"; \
|
|
||||||
if [ ! "$$dst_link" = \'"$$src_link"\' ]; then \
|
|
||||||
printf 'Destination link matches not the source link!\n'; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
|
|
||||||
# RFE: Use the single suffix inference rule to enhance iteration semantics
|
|
||||||
# to actual Makefile semantics. This could probably be done by suffixing source
|
|
||||||
# links with .ln.
|
|
||||||
.PHONY: install ## Actually symlink the dotfiles to home.
|
|
||||||
install: $(SRC)
|
|
||||||
mkdir -p $(dir $(TGT))
|
|
||||||
for file in $(SRC); do $(RM) -r ~/$$file; ln -s $$PWD/$$file ~/$$file; done
|
|
||||||
|
|
||||||
.PHONY: uninstallcheck ## Check if dotfiles' symlinks were properly removed.
|
|
||||||
uninstallcheck:
|
|
||||||
# Assert destination links were removed.
|
|
||||||
for link in $(TGT); do \
|
|
||||||
[ ! -e ~/"$$link" ] || \
|
|
||||||
printf '%s%s\n' "$$link" "survived teardown!"; \
|
|
||||||
done
|
|
||||||
|
|
||||||
.PHONY: uninstall ## Remove the symlinks to dotfiles.
|
|
||||||
uninstall:
|
|
||||||
$(RM) -r $(TGT)
|
|
||||||
for file in $(TGT); do if [ -e "$$file~" ]; then mv "$$file~" "$$file"; fi; done
|
|
||||||
|
|
||||||
.PHONY: clean ## Purge cruft (not the dotfiles payload).
|
|
||||||
clean:
|
|
||||||
-docker rm check_dotfiles
|
|
||||||
-docker rmi dotfiles
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
|
||||||
# Make is not really a good system for this.
|
|
||||||
# It works with files, but this works with containers.
|
|
||||||
# Write a deployment for the test container?
|
|
||||||
|
|
||||||
.PHONY: all ## lint -> build -> check
|
|
||||||
all: lint build check
|
|
||||||
|
|
||||||
.PHONY: lint ## Lint the source repository.
|
|
||||||
lint:
|
|
||||||
docker run --rm \
|
|
||||||
-u "$(shell id -u):$(shell id -g)" \
|
|
||||||
-v "$(shell pwd):/mnt" \
|
|
||||||
-w /mnt \
|
|
||||||
mvdan/shfmt:latest -d -sr -i 4 .config/aliasrc .*profile
|
|
||||||
docker run --rm \
|
|
||||||
-u "$(shell id -u):$(shell id -g)" \
|
|
||||||
-v "$(shell pwd):/mnt" \
|
|
||||||
-w /mnt \
|
|
||||||
koalaman/shellcheck -x .config/aliasrc .*profile
|
|
||||||
|
|
||||||
.PHONY: build ## Build a container to system-test the dotfiles.
|
|
||||||
build:
|
|
||||||
docker build --target test --tag dotfiles .
|
|
||||||
|
|
||||||
.PHONY: check ## Check if (un)install works in the test container.
|
|
||||||
check: build
|
|
||||||
docker run --name="check_dotfiles" --tty -d --entrypoint sh dotfiles
|
|
||||||
docker exec check_dotfiles make install
|
|
||||||
docker exec check_dotfiles make installcheck
|
|
||||||
docker exec check_dotfiles make uninstall
|
|
||||||
docker exec check_dotfiles make uninstallcheck
|
|
||||||
docker stop check_dotfiles
|
|
||||||
# ----------------------------------------------------------------------------
|
|
||||||
22
README.md
22
README.md
|
|
@ -1,20 +1,8 @@
|
||||||
# dotfiles
|
# dotfiles
|
||||||
|
|
||||||
This source repository contains configuration for common Unix systems.
|
This uses symlinks to quickly set up a bash-based system, like NixOS or Debian.
|
||||||
|
Clone this repository into your home folder.
|
||||||
|
Then `cd ~/dotfiles && ./install.sh`.
|
||||||
|
|
||||||
Influences include:
|
After first install, the symlinks will be set up.
|
||||||
|
Thereafter, `git pull` will simply bring in updates to these managed dotfiles.
|
||||||
- [Luke Smith's voidrice](https://github.com/lukesmithxyz/voidrice)
|
|
||||||
- [Whynothugo's dotfiles](https://git.sr.ht/~whynothugo/dotfiles)
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
This uses `make`.
|
|
||||||
|
|
||||||
## Test
|
|
||||||
|
|
||||||
To create a container, install the dotfiles there, check the installation, and then destroy the container, run:
|
|
||||||
|
|
||||||
```
|
|
||||||
make check
|
|
||||||
```
|
|
||||||
|
|
|
||||||
|
|
@ -1,219 +0,0 @@
|
||||||
### Project specific
|
|
||||||
.gen/**/*_pb2*.py
|
|
||||||
|
|
||||||
*_output.mpg
|
|
||||||
test-results.xml
|
|
||||||
|
|
||||||
### JetBrains template
|
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
|
||||||
.idea/**/workspace.xml
|
|
||||||
.idea/**/tasks.xml
|
|
||||||
.idea/**/usage.statistics.xml
|
|
||||||
.idea/**/dictionaries
|
|
||||||
.idea/**/shelf
|
|
||||||
|
|
||||||
# Generated files
|
|
||||||
.idea/**/contentModel.xml
|
|
||||||
|
|
||||||
# Sensitive or high-churn files
|
|
||||||
.idea/**/dataSources/
|
|
||||||
.idea/**/dataSources.ids
|
|
||||||
.idea/**/dataSources.local.xml
|
|
||||||
.idea/**/sqlDataSources.xml
|
|
||||||
.idea/**/dynamic.xml
|
|
||||||
.idea/**/uiDesigner.xml
|
|
||||||
.idea/**/dbnavigator.xml
|
|
||||||
|
|
||||||
# Gradle
|
|
||||||
.idea/**/gradle.xml
|
|
||||||
.idea/**/libraries
|
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
|
||||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
||||||
# since they will be recreated, and may cause churn. Uncomment if using
|
|
||||||
# auto-import.
|
|
||||||
# .idea/artifacts
|
|
||||||
# .idea/compiler.xml
|
|
||||||
# .idea/jarRepositories.xml
|
|
||||||
# .idea/modules.xml
|
|
||||||
# .idea/*.iml
|
|
||||||
# .idea/modules
|
|
||||||
# *.iml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
|
||||||
.idea/**/mongoSettings.xml
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
|
||||||
.idea_modules/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
.idea/replstate.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
### Python template
|
|
||||||
# Byte-compiled / optimized / DLL files
|
|
||||||
__pycache__/
|
|
||||||
*.py[cod]
|
|
||||||
*$py.class
|
|
||||||
|
|
||||||
# C extensions
|
|
||||||
*.so
|
|
||||||
|
|
||||||
# Distribution / packaging
|
|
||||||
.Python
|
|
||||||
build/
|
|
||||||
develop-eggs/
|
|
||||||
dist/
|
|
||||||
downloads/
|
|
||||||
eggs/
|
|
||||||
.eggs/
|
|
||||||
lib/
|
|
||||||
lib64/
|
|
||||||
parts/
|
|
||||||
sdist/
|
|
||||||
var/
|
|
||||||
wheels/
|
|
||||||
share/python-wheels/
|
|
||||||
*.egg-info/
|
|
||||||
.installed.cfg
|
|
||||||
*.egg
|
|
||||||
MANIFEST
|
|
||||||
|
|
||||||
# PyInstaller
|
|
||||||
# Usually these files are written by a python script from a template
|
|
||||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
||||||
*.manifest
|
|
||||||
*.spec
|
|
||||||
|
|
||||||
# Installer logs
|
|
||||||
pip-log.txt
|
|
||||||
pip-delete-this-directory.txt
|
|
||||||
|
|
||||||
# Unit test / coverage reports
|
|
||||||
htmlcov/
|
|
||||||
.tox/
|
|
||||||
.nox/
|
|
||||||
.coverage
|
|
||||||
.coverage.*
|
|
||||||
.cache
|
|
||||||
nosetests.xml
|
|
||||||
coverage.xml
|
|
||||||
*.cover
|
|
||||||
*.py,cover
|
|
||||||
.hypothesis/
|
|
||||||
.pytest_cache/
|
|
||||||
cover/
|
|
||||||
|
|
||||||
# Translations
|
|
||||||
*.mo
|
|
||||||
*.pot
|
|
||||||
|
|
||||||
# Django stuff:
|
|
||||||
*.log
|
|
||||||
local_settings.py
|
|
||||||
db.sqlite3
|
|
||||||
db.sqlite3-journal
|
|
||||||
|
|
||||||
# Flask stuff:
|
|
||||||
instance/
|
|
||||||
.webassets-cache
|
|
||||||
|
|
||||||
# Scrapy stuff:
|
|
||||||
.scrapy
|
|
||||||
|
|
||||||
# Sphinx documentation
|
|
||||||
docs/_build/
|
|
||||||
|
|
||||||
# PyBuilder
|
|
||||||
.pybuilder/
|
|
||||||
target/
|
|
||||||
|
|
||||||
# Jupyter Notebook
|
|
||||||
.ipynb_checkpoints
|
|
||||||
|
|
||||||
# IPython
|
|
||||||
profile_default/
|
|
||||||
ipython_config.py
|
|
||||||
|
|
||||||
# pyenv
|
|
||||||
# For a library or package, you might want to ignore these files since the code is
|
|
||||||
# intended to run in multiple environments; otherwise, check them in:
|
|
||||||
# .python-version
|
|
||||||
|
|
||||||
# pipenv
|
|
||||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
||||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
||||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
||||||
# install all needed dependencies.
|
|
||||||
#Pipfile.lock
|
|
||||||
|
|
||||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
||||||
__pypackages__/
|
|
||||||
|
|
||||||
# Celery stuff
|
|
||||||
celerybeat-schedule
|
|
||||||
celerybeat.pid
|
|
||||||
|
|
||||||
# SageMath parsed files
|
|
||||||
*.sage.py
|
|
||||||
|
|
||||||
# Environments
|
|
||||||
.env
|
|
||||||
.venv
|
|
||||||
env/
|
|
||||||
venv/
|
|
||||||
ENV/
|
|
||||||
env.bak/
|
|
||||||
venv.bak/
|
|
||||||
|
|
||||||
# Spyder project settings
|
|
||||||
.spyderproject
|
|
||||||
.spyproject
|
|
||||||
|
|
||||||
# Rope project settings
|
|
||||||
.ropeproject
|
|
||||||
|
|
||||||
# mkdocs documentation
|
|
||||||
/site
|
|
||||||
|
|
||||||
# mypy
|
|
||||||
.mypy_cache/
|
|
||||||
.dmypy.json
|
|
||||||
dmypy.json
|
|
||||||
|
|
||||||
# Pyre type checker
|
|
||||||
.pyre/
|
|
||||||
|
|
||||||
# pytype static type analyzer
|
|
||||||
.pytype/
|
|
||||||
|
|
||||||
# Cython debug symbols
|
|
||||||
cython_debug/
|
|
||||||
|
|
||||||
3
install.sh
Executable file
3
install.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
ln -si "$HOME"/dotfiles/.gitconfig ~/.gitconfig
|
||||||
|
printf '. ~/dotfiles/.profile' > ~/.bashrc
|
||||||
Loading…
Add table
Add a link
Reference in a new issue