My Debian installation tips
So, after some time with Arch Linux, I've moved to Debian testing. Debian testing seems to strike a nice balance between being new and not breaking things (Debian stable on the other hand has really old packages). Compared to Arch, upgrades have thus far been a lot less painful. Arch, while lovely, has a tendency to break things and I was always rather annoyed with python being python3 rather than python2 like the rest of the world expected it to be. I miss the minimal base install from Arch though.
First steps
I used the amd64 (e.g. x86-64) weekly testing build rather than the stable build, because, well it gets me on testing without needing to do a stable install first and comes with more up-to-date packages.
While none of the docs make it clear, all you need is the first CD (or the netinstall build) to start the install.
Edit sudoers
su -c "visudo"
At the end of the file, add:
<code>yourusername ALL=(ALL) NOPASSWD: ALL</code>
Copy ssh keys over from old machine
Update and install packages
Add "contrib" and "non-free" after "main" to /etc/apt/sources.list - this is needed for stuff like the flash plugin.
If there are lines mentioning "cdrom:" as a source, delete or comment out those lines.
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install git mlocate mercurial nitrogen wicd-gtk \
gnome-icon-theme htop unzip openssl chromium-browser zsh \
xterm epdfview mysql-server ruby tmux curl wget redis-server \
xcursor-themes xarchiver gzip bzip2 zip unzip unrar p7zip \
meld mplayer make gcc libc-dev build-essential openssl \
libssl-dev libx11-dev libxinerama-dev guake xfce4-notifyd \
keychain flashplugin-nonfree lxappearance tree
Install node
mkdir other
cd other
wget http://nodejs.org/dist/v0.8.12/node-v0.8.12.tar.gz
tar xvvf node-v0.8.12.tar.gz
cd node-v0.8.12
./configure && make && sudo make install
Install nwm, my window manager
git clone git://github.com/mixu/nwm.git
cd nwm
npm install
Create ~/nwm.sh and chmod +x:
#!/bin/sh
/usr/local/bin/node /home/m/nwm/nwm-user-sample.js 2> ~/nwm.err.log 1> ~/nwm.log
Create /usr/share/xsessions/nwm.desktop:
[Desktop Entry]
Encoding=UTF-8
Name=nwm
Comment=This session starts nwm
Exec=/home/m/nwm.sh
Type=Application
Set the user shell from bash to zsh
sudo chsh
Set the default xdg-open action for PDFs
In case you don't know what xdg-open is - it's the thing that decides what happens when you try to open a file (e.g. a downloaded file from Chrome).
I don't want to open PDFs and PS files in Gimp, I want to open them in a document viewer
xdg-mime default evince.desktop application/pdf
xdg-mime default evince.desktop application/postscript
To query the default app: xdg-mime query default $(xdg-mime query filetype FILENAME)
Configuring appearance
Download https://wiki.ubuntu.com/Artwork/Incoming/DustTheme and unzip the theme to ~/.themes/
I find the easiest way to configure gnome2 is to use lxappearance, since it allows you to set the gnome theme and x11 cursors in a few clicks.
Guake: disable smart terminal names
gconftool-2 --set /apps/guake/general/use_vte_titles --type boolean false
Configure git
Edit ~/.gitconfig:
[color]
ui = true
[user]
email =
name =
[core]
editor = nano
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)%Creset' --abbrev-commit --date=relative
[push]
default = current
Configure zsh
# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=9999
unsetopt beep
bindkey -e
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/home/m/.zshrc'
autoload -Uz compinit
compinit
# End of lines added by compinstall
bindkey "\e[1~" beginning-of-line # Home
bindkey "\e[4~" end-of-line # End
bindkey "\e[5~" beginning-of-history # PageUp
bindkey "\e[6~" end-of-history # PageDown
bindkey "\e[2~" quoted-insert # Ins
bindkey "\e[3~" delete-char # Del
bindkey "\e[5C" forward-word
bindkey "\eOc" emacs-forward-word
bindkey "\e[5D" backward-word
bindkey "\eOd" emacs-backward-word
bindkey "\e\e[C" forward-word
bindkey "\e\e[D" backward-word
bindkey "\e[Z" reverse-menu-complete # Shift+Tab
# for rxvt
bindkey "\e[7~" beginning-of-line # Home
bindkey "\e[8~" end-of-line # End
# for non RH/Debian xterm
bindkey "\eOH" beginning-of-line
bindkey "\eOF" end-of-line
# for freebsd console
bindkey "\e[H" beginning-of-line
bindkey "\e[F" end-of-line
# for guake
bindkey "\eOF" end-of-line
bindkey "\eOH" beginning-of-line
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word
bindkey "\e[3~" delete-char # Del
alias ls='ls --color=auto -F'
alias ga='git add'
alias gp='git push'
alias gl='git log'
alias gs='git status'
alias gd='git diff'
alias gdc='git diff --cached'
autoload -U colors && colors
PROMPT="%{$fg_bold[white]%}[%1~]%{$reset_color%} "
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
gr() {
local cmd="$"
for dir in /home/{FILL IN REPOSITORIES HERE}; do
(
print "\nin $dir"
cd $dir
eval "$cmd"
)
done
}
alias grs="gr git --no-pager status -sb"
alias grl="gr git --no-pager log --decorate --graph --oneline -n 3"
alias grd="gr git diff"
alias grdc="gr git diff --cached"
alias grn="gr npm ls"
eval `keychain --eval --agents ssh id_rsa`
# Stuff for git
parse_git_branch () {
git branch 2> /dev/null | grep "" | sed -e 's/ (.)/ @\1/g'
}
# colors for prompt
BLACK=$'\033[0m'
RED=$'\033[38;5;167m'
GREEN=$'\033[38;5;71m'
BLUE=$'\033[38;5;111m'
YELLOW=$'\033[38;5;228m'
ORANGE=$'\033[38;5;173m'
function precmd() {
export PROMPT="%{$fg_bold[white]%}[%1~%{$reset_color%}%{$YELLOW%}$(parse_git_branch)%{$fg_bold[white]%}]%{$BLACK%}%\ "
}