## 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`