diff --git a/install.sh b/install.sh
deleted file mode 100644
index cd86ddf..0000000
--- a/install.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-##################################################################################
-#
-# New Start: A modern Arch workflow built with an emphasis on functionality.
-# Copyright (C) 2017 Donovan Glover
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-##################################################################################
-
-# Turn error handling on so that any errors terminate the script
-set -e
-
-USAGE="Usage: ./install.sh "
-
-if [ -z "$1" ]; then
- echo "You need to specify the hostname of your machine.\n$USAGE"
- exit 1
-fi
-
-if [ -z "$2" ]; then
- echo "You need to supply a name for the local user.\n$USAGE"
- exit 2
-fi
-
-# TODO: Initial installation
-
-# TODO: Configuring the new system
-
-# TODO: Install all the things
-
-# TODO: Clean up and final changes for the new system
-
-# Install all the vim plugins
-# TODO: Download vim-plug before this so :PlugInstall works
-# TODO: Ensure that this works during the install process
-vim +PlugInstall +qall
-
-# This is a placeholder of the structure needed to install crystal-ctags
-# TODO: Ensure this works during installation
-cd some_directory
-git clone https://github.com/SuperPaintman/crystal-ctags
-cd crystal-ctags
-sudo make install # TODO: Is sudo required here?
-cd ../..
-rm some_directory
-
-umount /mnt # Unmount the filesystem
-reboot # Restart the system
diff --git a/install/install.sh b/install/install.sh
new file mode 100644
index 0000000..67b48b1
--- /dev/null
+++ b/install/install.sh
@@ -0,0 +1,154 @@
+##################################################################################
+#
+# New Start: A modern Arch workflow built with an emphasis on functionality.
+# Copyright (C) 2017 Donovan Glover
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+##################################################################################
+
+# NOTE: The following assumptions are made:
+#
+# 1. You use the US keyboard layout. (A default in Arch Linux)
+# 2. Your timezone is Eastern Time. (You can easily change this in the script)
+# 3. You have secure boot disabled (Secure boot may prevent the computer from booting free software)
+#
+# Installation instructions:
+#
+# ```
+# wget https://raw.githubusercontent.com/GloverDonovan/new-start/master/install.sh
+# chmod +x install.sh
+# ./install.sh
+# ```
+#
+# Note that the default password for your new account is the same as your username. Upon reboot, the X server should automatically start at login. Then:
+#
+# 1. Change the root password with `passwd`
+# 2. Change the local account password with `passwd `
+#
+# That's it! You're now ready to use your shiny new system!
+
+# Turn error handling on so that any errors terminate the script
+set -e
+
+USAGE="Usage: ./install.sh "
+
+if [ -z "$1" ]; then
+ echo "You need to specify the hostname of your machine.\n$USAGE"
+ exit 1
+fi
+
+if [ -z "$2" ]; then
+ echo "You need to supply a name for the local user.\n$USAGE"
+ exit 2
+fi
+
+# TODO: Initial installation
+timedatectl set-ntp true # Attempt to sync with the network time
+
+parted /dev/sda mklabel msdos # Create a DOS partition table
+parted /dev/sda mkpart primary ext4 1MiB 14GiB # Create the root partition
+parted /dev/sda set 1 boot on # Enable boot from the root partition
+parted /dev/sda mkpart primary linux-swap 14GiB 100% # Create the swap partition
+
+mkfs -t ext4 /dev/sda1 && mount /dev/sda1 /mnt # Make the filesystem and mount it
+mkswap /dev/sda2 && swapon /dev/sda2 # Make the swap partition and enable it
+
+pacstrap /mnt base base-devel # Install Arch on the new filesystem
+genfstab -U /mnt > /mnt/etc/fstab # Mount the filesystem automatically on boot
+
+# TODO: Configuring the new system
+./install/system.sh
+
+# Configure the hostname
+echo "$1" > /mnt/etc/hostname
+echo "127.0.1.1 $1.localdomain $1" >> /mnt/etc/hosts
+
+# Generate locales for en_US.UTF-8
+arch-chroot /mnt locale-gen
+
+arch-chroot /mnt pacman -S grub --noconfirm # Download grub
+arch-chroot /mnt grub-install /dev/sda # Install it to the root partition
+
+arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg # Make the configuration file for grub
+
+arch-chroot /mnt mkinitcpio -p linux # Save our hardware information
+
+# Edit system configuration files directly
+arch-chroot /mnt sed -i '/Color/s/^#//g' /etc/pacman.conf # Uncomment the Color line in /etc/pacman.conf (enables colors when using pacman and pacaur)
+
+arch-chroot /mnt pacman -S zsh grml-zsh-config zsh-syntax-highlighting --noconfirm # Install zsh and sane defaults that make zsh much more pleasant to work with
+arch-chroot /mnt chsh -s /bin/zsh # Change the root shell to it
+
+# ============= We're done configuring, now install our stuff =============
+arch-chroot /mnt pacman -S vim git tree wget httpie unzip diff-so-fancy ntp --noconfirm # Install de-facto software useful in various instances
+arch-chroot /mnt pacman -S openvpn openssh --noconfirm # Install openvpn for VPN and openssh for SSH access
+
+# Create a local user account
+arch-chroot /mnt useradd -m -g users -G wheel -s /bin/zsh $2
+
+# Testing here. Make sure that the output above is correct.
+read -rsp $'Press enter to continue...\n'
+
+
+# TODO: Install all the things
+./install/packages.sh
+
+# TODO: Clean up and final changes for the new system
+
+# Install all the vim plugins
+# TODO: Download vim-plug before this so :PlugInstall works
+
+curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
+ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
+
+# Make the undo dir so we can undo with the regular vim
+mkdir ~/.vim/undo
+
+# TODO: Ensure that this works during the install process
+vim +PlugInstall +qall
+
+# This is a placeholder of the structure needed to install crystal-ctags
+# TODO: Ensure this works during installation
+cd some_directory
+git clone https://github.com/SuperPaintman/crystal-ctags
+cd crystal-ctags
+sudo make install # TODO: Is sudo required here?
+cd ../..
+rm some_directory
+
+# Move all the dotfiles and other config files to the right place
+
+# =================== Give that account a password so it's possible to login to it with a password ===================
+# Follow the same principle of using permission scope here
+
+echo "echo $2:$2 | chpasswd" > $TEMP/chpasswd.sh
+
+arch-chroot /mnt chmod +x $LTEMP/chpasswd.sh
+arch-chroot /mnt $LTEMP/chpasswd.sh
+
+# Install ruby gems that you commonly use in development
+arch-chroot /mnt gem install jekyll maid
+
+# ======= Clean up and reboot
+
+rm -rfv $TEMP # Remove the temp directory
+
+# Delete the NOASSPWD line we added earlier and replace it with a more reasonable one for daily use (password prompt)
+head -n -1 /mnt/etc/sudoers > /mnt/etc/sudoers.tmp
+mv /mnt/etc/sudoers.tmp /mnt/etc/sudoers
+echo "%wheel ALL=(ALL) ALL" >> /mnt/etc/sudoers # Give the wheel group permission to use the sudo and su commands
+
+umount /mnt # Unmount the filesystem
+reboot # Restart the system