Skip to content

Instantly share code, notes, and snippets.

@bigscorpions
Forked from terlar/README.markdown
Last active March 4, 2016 16:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bigscorpions/2ab2641de20ee653f73e to your computer and use it in GitHub Desktop.
Save bigscorpions/2ab2641de20ee653f73e to your computer and use it in GitHub Desktop.
## ArchLinux on MacBook Retina 13"
### Info
#### Resources
- [cgdisk Walktrough](http://www.rodsbooks.com/gdisk/cgdisk-walkthrough.html)
- [ArchLinux Installation Guide](https://wiki.archlinux.org/index.php/Installation_Guide)
- [ArchLinux MacBook Retina](https://wiki.archlinux.org/index.php/MacBookPro_Retina)
- [Puppet for MacBook Retina](https://github.com/jantman/puppet-archlinux-macbookretina)
- [ArchLinux and Xmonad with MacBook Retina](https://vec.io/posts/use-arch-linux-and-xmonad-on-macbook-pro-with-retina-display)
#### Hardware
Further info: `lspci`, `lsmod`, `lsblk -f`.
- Model: MacBookPro10,2
- Boot ROM: MBP102.0106.B03
- Graphics: Intel 3rd Gen Core processor Graphics Controller (rev 09)
- Wireless: BCM4331
### Bootstrap
```
mkdir /mnt/setup
mount /dev/sdx /mnt/setup
pacman -U /mnt/setup/broadcom-wl-6.30.223.141-8-x86_64.pkg.tar.xz
modprobe -r wl
modprobe wl
wifi-menu
cgdisk /dev/sda
mkfs.ext4 /dev/sda5
mkfs.ext4 /dev/sda6
mkfs.ext4 /dev/sda7
mount /dev/sda6 /mnt
mkdir /mnt/boot && mount /dev/sda5 /mnt/boot
mkdir /mnt/home && mount /dev/sda7 /mnt/home
# cryptsetup -c aes-xts-plain64 -y -s 512 luksFormat /dev/sda7
# cryptsetup luksOpen /dev/sda7 home
# mkfs.ext4 /dev/mapper/home
# mkdir /mnt/home && mount /dev/mapper/home /mnt/home
# echo 'home /dev/sda7' >> /mnt/etc/crypttab
pacstrap /mnt base base-devel
genfstab -p /mnt >> /mnt/etc/fstab
# SSD optimize /etc/fstab
arch-chroot /mnt /bin/bash
echo name > /etc/hostname
ln -s /usr/share/zoneinfo/Europe/Stockholm /etc/localtime
vi /etc/locale.gen
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
mkinitcpio -p linux
# Bootloader
pacman -S grub
vi /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="splash loglevel=3 rootflags=data=writeback libata.force=noncq"
grub-mkconfig -o /boot/grub/grub.cfg
grub-mkstandalone -o boot.efi -d /usr/lib/grub/x86_64-efi -O x86_64-efi /boot/grub/grub.cfg
cp boot.efi /mnt/setup
pacman -S linux-headers
pacman -U /media/backup/broadcom-wl-6.30.223.141-8-x86_64.pkg.tar.xz
# Setup Wi-Fi
```
### Install
#### Basic Tools
```sh
sudo pacman -S alsa-utils powertop htop iotop iftop ncdu acpi pv smartmontools dnsutils net-tools cdrkit
sudo pacman -S gvim bc openssh unzip unrar tree ranger vimpager time reptyr
sudo systemctl enable sshd
```
#### Build
```sh
sudo pacman -S base-devel cmake python3 git
```
##### Aura (AUR)
`/etc/pacman.conf`
```
[haskell-core]
Server = http://xsounds.org/~haskell/core/$arch
```
```sh
sudo pacman-key -r 4209170B
sudo pacman-key --lsign-key 4209170B
sudo pacman -Syy
pacman -S ghc
curl -O https://aur.archlinux.org/packages/au/aura/aura.tar.gz
tar -xzf aura.tar.gz && cd aura
makepkg -s
sudo pacman -U aura-*.pkg.tar.xz
sudo aura -A powerpill hub-git
```
#### Drivers
```sh
sudo systemctl enable systemd-networkd
sudo pacman -S acpid xf86-video-intel
sudo systemctl enable acpid
sudo aura -A broadcom-wl xf86-input-mtrack-git macfanctld-git
sudo systemctl enable macfanctld
sudo pacman -S bluez bluez-libs bluez-utils
amixer sset Master unmute
amixer -c 0 sset IEC958 off
```
Create the file `/etc/modprobe.d/alsa-base.conf` with the content `options snd-hda-intel model=mbp101`.
##### Caps2Ctrl
Edit the file `us_caps2ctrl.map` after creation with `keycode 58 = Control`.
```sh
sudo mkdir -p /usr/share/keymaps
dumpkeys > us_caps2ctrl.map
gzip us_caps2ctrl.map
sudo mv us_caps2ctrl.map.gz /usr/share/keymaps
```
Create the file `/etc/vconsole.conf` with content:
`KEYMAP=/usr/share/keymaps/us_caps2ctrl.map`
#### Tools
```sh
sudo pacman -S pwgen
sudo aura -A kbdlight
```
#### Wi-Fi
```sh
ln -s /run/systemd/network/resolv.conf /etc/resolv.conf
# create /etc/wpa_supplicant.conf
ln -s /etc/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlp3s0.conf
# create /etc/systemd/network/20-dhcp.network
sudo pacman -S wpa_supplicant
sudo systemctl enable systemd-networkd
sudo systemctl enable wpa_supplicant@wlp3s0
```
#### iPhone Tethering
```sh
sudo aura -A libusbmuxd-git libimobiledevice-git usbmuxd-git ifuse-git
modprobe ipheth
idevicepair pair
```
#### Printer
```sh
sudo pacman -S cups gutenprint ghostscript
```
#### Scanner
```sh
sudo pacman -S sane
```
#### fish
```sh
sudo aura -A fish-shell-git stderred-git
```
#### SSH-Agent
```sh
sudo aura -A envoy-git
sudo systemctl enable envoy@ssh-agent.socket
```
#### User
```sh
chsh -s /usr/bin/fish
usermod -a -G audio video lpadmin username
```
##### dotfiles
```sh
hub clone terlar/dotfiles ~/.dotfiles
cd ~/.dotfiles
fish install.fish
```
#### GUI
##### Xorg
```sh
sudo pacman -S xorg-server xorg-server-utils xorg-xev
sudo pacman -S i3lock xfce4-notifyd xsel zenity xdg-tools
sudo aura -A dmenu-xft
```
##### Xmonad
```sh
sudo pacman -S haskell-xmonad haskell-xmonad-contrib haskell-xmonad-extras cabal-install
sudo aura -A xmonad-utils
cabal update; and cabal install yeganesh
```
##### Fonts
```sh
sudo pacman -S ttf-dejavu ttf-symbola ttf-droid
sudo pacman -S adobe-source-code-pro-fonts ttf-linux-libertine ttf-ubuntu-font-family ttf-freefont wqy-zenhei
sudo aura -A freetype2-infinality fontconfig-infinality
sudo aura -A ttf-vista-fonts ttf-mac-fonts ttf-envy-code-r ttf-opensans
sudo infctl setstyle osx2
```
##### Theme
```sh
sudo pacman -S lxappearance
sudo aura -A gtk-theme-numix-git gtk-theme-numix-white
```
##### Input
```sh
sudo pacman -S fcitx-im fcitx-configtool
```
##### User services
```sh
aura -A xlogin-git
systemctl --user enable pulseaudio
systemctl --user enable tmux
systemctl --user enable dropbox
systemctl --user enable xmonad@0
systemctl --user enable termite@0
systemctl --user enable wallpaper@0
systemctl --user enable xmodmap@0
systemctl --user enable xset@0
systemctl --user enable xsetroot@0
systemctl --user enable fcitx@0
systemctl --user enable gui@0.target
```
#### Apps
```sh
sudo pacman -S imagemagick scrot feh mosh weechat mutt lftp rtorrent zathura zathura-pdf-poppler baobab chromium flashplugin deluge
sudo aura -A termite dropbox tmux-git luakit-git nexuspersonal spotify
gem install termit
```
##### Documents
sudo pacman -S unrtf haskell-pandoc
##### Media
```sh
sudo pacman -S mplayer shotwell
sudo aura -A google-talkplugin
```
###### Mopidy
```sh
sudo pacman -S ncmpcpp
sudo aura -A mopidy mopidy-scrobbler mopidy-spotify mopidy-soundcloud
```
###### Plex
`/etc/pacman.conf`
```
[alucryd]
SigLevel = Optional
Server = http://pkgbuild.com/~alucryd/$repo/$arch
```
```sh
sudo pacman -S plex-home-theater-git
```
###### AirPort
```sh
sudo pacman -S avahi nss-mdns pulseaudio pulseaudio-alsa paprefs pavucontrol
```
###### Network
```sh
sudo pacman -S afpfs-ng sshfs
```
#### Mail
```sh
sudo pacman -S offlineimap msmtp sqlite w3m
sudo aura -A mime-support
```
#### Development
```sh
sudo pacman -S ctags gcolor2 python2-pygments
sudo aura -A ruby-build-git silver-searcher-git elixir
sudo pacman -S memcached varnish java-runtime elasticsearch mongodb redis mysql
sudo elasticsearch-plugin -i elasticsearch/marvel/latest
sudo elasticsearch-plugin -i karmi/elasticsearch-paramedic
sudo elasticsearch-plugin -i lmenezes/elasticsearch-kopf
sudo elasticsearch-plugin -i royrusso/elasticsearch-HQ
sudo pacman -S virtualbox qt4
sudo aura -A unarchiver
curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | env IEVMS_VERSIONS="6" bash
```
##### Pair
```sh
sudo aura -A wemux tmate
```
##### fish plugins
```sh
cd ~/code
git clone terlar/fish-tank; and cd fish-tank
sudo make install; and cd ..
git clone terlar/fry; and cd fry
sudo make install; and cd ..
git clone terlar/fish-farm; and cd fish-farm
sudo make install; and cd ..
```
##### ruby
```sh
fry install 1.9.3-p392
fry install 2.0.0-p247
gem install bundler pry awesome_print mailcatcher fury structure_digest pssh
```
##### web
```sh
sudo pacman -S nginx
```
###### prax (zero-conf Rack proxy server)
```sh
git clone -p ysbaddaden/prax /opt/prax
sudo cp ~/.prax-dist/install/initd /usr/local/bin/praxd
sudo chmod +x /usr/local/bin/praxd
cd /opt/prax/ext
sudo make install
```
Create `/usr/lib/systemd/system/prax.service`.
```
[Unit]
Description=Prax Rack server (iptables configuration)
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/praxd start
ExecStop=/usr/local/bin/praxd stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
```
Add `prax` to the end of the host line in `/etc/nsswitch.conf`.
### Performance
#### Power
```sh
sudo pacman -S laptop-mode-tools cpupower pm-utils upower
sudo aura -A profile-sync-daemon anything-sync-daemon granola uswsusp-git
sudo systemctl enable laptop-mode
sudo systemctl enable cpupower
sudo systemctl enable granola
sudo systemctl enable psd
sudo systemctl enable psd-resync
sudo systemctl enable asd
sudo systemctl enable asd-resync
```
- Edit `/etc/laptop-mode/laptop-mode.conf` with value `LM_BATT_MAX_LOST_WORK_SECONDS=15`
- Edit `/etc/laptop-mode/conf.d/usb-autosuspend.conf` with value `AUTOSUSPEND_TIMEOUT=1`
- Edit `/etc/laptop-mode/conf.d/intel-hda-powersave.conf` with value `INTEL_HDA_DEVICE_TIMEOUT=1`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment