#!/bin/sh # Environment variables for X and all text-mode shells: bash, Xsession # and scripts run by cron all source this. So POSIX only. # We have calls to `which` which we expect to fail set +e # ---- choose editor depending on what's available if [ "$DESKTOP_SESSION" = "i3" ] \ || [ "$DESKTOP_SESSION" = "xfce" ] \ || [ "XDG_CURRENT_DESKTOP" = "sway" ]; then ec_opt="-c" else ec_opt="-t" fi # Either GNU Emacs, or UNIX vi -- lightweight Emacs alternatives like mg and # zile are so rarely installed, so let's have a constant fallback which is # almost certainly available and which I can use well enough. # # Rely on my ~/src/dotfiles/bin/emacsclient wrapper to start up an Emacs # daemon: don't bother setting ALTERNATE_EDITOR. Check that there's an Emacs # on (as yet unmodified) PATH, else that wrapper might fail. if command -v emacs >/dev/null; then EDITOR="emacsclient $ec_opt" else EDITOR="vi" fi unset ec_opt export EDITOR VISUAL="$EDITOR" export VISUAL # ---- set $PATH # this function prepends $addition to $PATH iff $addition isn't # already in $PATH and $addition is a directory maybe_add_to_path () { if ! echo $PATH | grep -q "$addition"; then if [ -d "$addition" ]; then PATH="$addition:$PATH" fi fi } addition="/sbin"; maybe_add_to_path addition="/usr/sbin"; maybe_add_to_path addition="/usr/local/bin"; maybe_add_to_path addition="/usr/pkg/bin"; maybe_add_to_path addition="$HOME/local/pkg/bin"; maybe_add_to_path addition="$HOME/local/pkg/sbin"; maybe_add_to_path addition="$HOME/src/dotfiles/bin"; maybe_add_to_path addition="$HOME/local/bin"; maybe_add_to_path addition="$HOME/.cabal/bin"; maybe_add_to_path addition="$HOME/.local/bin"; maybe_add_to_path addition="/meta/s/spw/local/src/git-annex.linux"; maybe_add_to_path unset addition export PATH # ---- add to $MANPATH MANPATH="$HOME/.local/share/man:$MANPATH" export MANPATH # If want to install an .info file so Emacs can get at it, just: # # % cp foo.info ~/local/info # % install-info ~/local/info/foo.info ~/local/info/dir # # Will need to restart Emacs if there was nothing in ~/local/info before this. INFOPATH="$HOME/local/info:" export INFOPATH # ---- package management by Nix: add to $PATH once more # # crude heuristic to determine if it's already been added # if ! echo $PATH | grep -q "$HOME/.nix-profile/bin"; then # if [ -e "/etc/profile.d/nix.sh" ]; then # . /etc/profile.d/nix.sh # fi # fi # ---- set language (snippet from joeyh's home-etc.git repo) # TODO: according to , I ought not to # be setting LC_ALL. Instead I could set most of LC_* to en_GB.UTF-8, # and some e.g. LC_PAPER to en_US.UTF-8. # disabled: propellor setting it system-wide on my machines and that's # enough # case " $(echo $(locale -a)) " in # *\ en_GB.utf8\ *) LANG=en_GB.utf8 ;; # *\ en_GB.UTF-8\ *) LANG=en_GB.UTF-8 ;; # *\ C.UTF-8\ *) LANG=C.UTF-8 ;; # *\ C.utf8\ *) LANG=C.utf8 ;; # *) unset LANG ;; # esac # LC_ALL=$LANG # export LC_ALL # export LANG # ---- further preferences GIT_PAGER= export GIT_PAGER GIT_MERGE_AUTOEDIT=no export GIT_MERGE_AUTOEDIT GPG_KEY_ID=0F56D0553B6D411B export GPG_KEY_ID MAILDIR="$HOME/.fmail/" export MAILDIR # LD_RUN_PATH="$HOME/local/lib/" # export LD_RUN_PATH # LD_LIBRARY_PATH="$HOME/local/lib/" # export LD_LIBRARY_PATH BROWSER="firefox" export BROWSER TERMCMD="xfce4-terminal" export TERMCMD TERMINAL="xfce4-terminal" export TERMINAL DEBFULLNAME="Sean Whitton" export DEBFULLNAME DEBEMAIL="spwhitton@spwhitton.name" export DEBEMAIL DGIT_SCHROOT_CHROOT=sid export DGIT_SCHROOT_CHROOT DAK_INSPECT_UPLOAD='tmux new-session -d -s mc 2>/dev/null; tmux new-window -n "{changes}" -t mc:^ -k "cd {directory}; mc"' export DAK_INSPECT_UPLOAD XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/var/lib/flatpak/exports/share/:/var/lib/snapd/desktop/ export XDG_DATA_DIRS PERLDOC="-oman" export PERLDOC # Select the pygments parser for GNU GLOBAL, which works for a lot of # languages. Override with a gtags.conf in the project root. Relies # on having /etc/gtags/gtags.conf defining which languages the # pygments parser works with (available in Debian global package # version 6.6.4-2 or later, or can copy that file from upstream source # to ~/.globalrc) GTAGSLABEL=pygments export GTAGSLABEL # "Setting the monitor port to 0 turns the monitoring function off, # and autossh will only restart ssh upon ssh's exit." # # We rely on ServerAliveInterval and ServerAliveCountMax set in ~/.ssh/config AUTOSSH_PORT=0 export AUTOSSH_PORT # ---- set pager lessf=$(which less) if [ -x "$lessf" ]; then PAGER=less export PAGER LESS="--ignore-case --long-prompt" export LESS fi unset lessf