# Mostly based on the Ubuntu installation guide
# https://help.ubuntu.com/12.04/installation-guide/

## Figure out if we're kickstarting a system or a profile
#if $getVar('system_name','') != ''
#set $what = "system"
#else
#set $what = "profile"
#end if

# Preseeding only locale sets language, country and locale.
d-i debian-installer/locale string en_US
d-i debian-installer/country string US
d-i debian-installer/language string en

d-i debian-installer/splash boolean false
d-i debian-installer/quiet boolean false
d-i debian-installer/framebuffer boolean true
d-i hw-detect/load_firmware boolean true

# Keyboard selection.
# Disable automatic (interactive) keymap detection.
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us
d-i console-setup/modelcode string  SKIP
d-i keyboard-configuration/variantcode string us
d-i keyboard-configuration/layoutcode string us
d-i keyboard-configuration/model    select  Generic 105-key (Intl) PC
d-i console-keymaps-at/keymap   select  us
d-i keyboard-configuration/xkb-keymap   select  us

d-i preseed/early_command string \
wget -O- \
http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_early_default | /bin/sh -s; \
debconf-set-selections /tmp/pre_install_network_config

$SNIPPET('preseed_network_config')

# Partition disk manually
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true

d-i partman-auto/choose_recipe select efi-root
d-i partman-auto/expert_recipe string               \
    efi-root ::                                     \
        512 512 512 fat32                           \
            $primary{ } $lvmignore{ }               \
            method{ efi } format{ }                 \
        .                                           \
        4096 4096 -1 ext4                           \
            method{ format } format{ }              \
            use_filesystem{ } filesystem{ ext4 }    \
            mountpoint{ / }                         \
        .

d-i partman-basicfilesystems/no_swap boolean false

d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# NTP/Time Setup
#if $getVar('timezone', '') != ""
d-i time/zone string $timezone
#else
d-i time/zone string US/Pacific
#end if
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
#if $getVar('ntp_server', '') == ""
d-i clock-setup/ntp-server  string 0.ubuntu.pool.ntp.org
#else
d-i clock-setup/ntp-server  string $ntp_server
#end if

# Setup the installation source
d-i mirror/country string manual
d-i mirror/http/hostname string $http_server
d-i mirror/http/directory string $install_source_directory
d-i mirror/http/proxy string
d-i mirror/http/mirror select $http_server
d-i mirror/protocol select http
d-i mirror/udeb/components multiselect main, restricted

#set $os_v = $getVar('os_version','')
#if $os_v and $os_v.lower()[0] > 'p'
# Required at least for 12.10+
d-i live-installer/net-image string http://$http_server/cobbler/ks_mirror/$distro_name/install/filesystem.squashfs
#end if

# root account and password
#if $getVar('username', 'root') != "root"
d-i passwd/root-login boolean false
d-i passwd/make-user boolean true
d-i user-setup/allow-password-weak boolean true
d-i passwd/root-password password root
d-i passwd/root-password-again password root
    #set username = $getVar('username', 'root')
d-i passwd/user-fullname string $username
d-i passwd/username string $username
    #if $getVar('password', '') != ""
d-i passwd/user-password-crypted password $password
    #else
d-i passwd/user-password password $username
d-i passwd/user-password-again password $username
    #end if
#else
d-i passwd/root-login boolean true
d-i passwd/make-user boolean false
d-i user-setup/allow-password-weak boolean true
    #if $getVar('password', '') != ""
d-i passwd/root-password-crypted password $password
    #else
d-i passwd/root-password password root
d-i passwd/root-password-again password root
    #end if
#end if

$SNIPPET('preseed_apt_repo_config')

# Individual additional packages to install
# wget is REQUIRED otherwise quite a few things won't work
# later in the build (like late-command scripts)
#if $getVar('tool', '') != ''
    #set $preseed_software = "preseed_software_%s" % $tool
$SNIPPET($preseed_software)
#else
d-i pkgsel/include string ntp ssh openssh-server wget vim bridge-utils ifenslave vlan
#end if

# Whether to upgrade packages after debootstrap.
# Allowed values: none, safe-upgrade, full-upgrade
d-i pkgsel/upgrade select none
d-i popularity-contest/participate boolean false
d-i lilo-installer/skip boolean true
d-i grub-installer/only_debian boolean true

# Use the following option to add additional boot parameters for the
# installed system (if supported by the bootloader installer).
# Note: options passed to the installer will be added automatically.
d-i debian-installer/add-kernel-opts string $kernel_options_post
d-i debian-installer/allow_unauthenticated string true

d-i finish-install/late_command string update-grub
# Avoid that last message about the install being complete.
d-i finish-install/reboot_in_progress note

# This will prevent the installer from ejecting the CD during the reboot,
# which is useful in some situations.
d-i cdrom-detect/eject boolean false

# This command is run just before the install finishes, but when there is
# still a usable /target directory. You can chroot to /target and use it
# directly, or use the apt-install and in-target commands to easily install
# packages and run commands in the target system.
# d-i preseed/late_command string [command]
d-i preseed/late_command string \
in-target sed -i '$a UseDNS no' /etc/ssh/sshd_config; \
in-target sed -i 's/.*GSSAPIAuthentication.*/GSSAPIAuthentication no/g' /etc/ssh/sshd_config; \
in-target sed -i '$d' /usr/share/initramfs-tools/scripts/local-top/lvm2; \
in-target echo "lvm vgchange -ay" >> /usr/share/initramfs-tools/scripts/local-top/lvm2; \
in-target echo "exit 0" >> /usr/share/initramfs-tools/scripts/local-top/lvm2; \
in-target touch /etc/initramfs-tools/scripts/local-top/lvm2; \
in-target chmod 777 /etc/initramfs-tools/scripts/local-top/lvm2; \
in-target echo "vgchange -a y" >> /etc/initramfs-tools/scripts/local-top/lvm2; \
wget -O- \
   http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_late_default | \
   chroot /target /bin/sh -s; cp /target/etc/network/interfaces /etc/network/interfaces; \
in-target update-initramfs -k `uname -r` -c; \
in-target update-grub; \
in-target apt-get install python2.7; \
in-target ln -s /usr/bin/python2.7 /usr/bin/python