Index: usr.sbin/bsdinstall/scripts/auto =================================================================== --- usr.sbin/bsdinstall/scripts/auto +++ usr.sbin/bsdinstall/scripts/auto @@ -391,6 +391,10 @@ "Would you like to add users to the installed system now?" 0 0 && \ bsdinstall adduser +dialog --backtitle "FreeBSD Installer" --title "Install Desktop" --yesno \ + "Would you like to install a desktop environment now?" 0 0 && \ + bsdinstall pkginstall + finalconfig() { exec 3>&1 REVISIT=$(dialog --backtitle "FreeBSD Installer" \ @@ -399,6 +403,7 @@ "Exit" "Apply configuration and exit installer" \ "Add User" "Add a user to the system" \ "Root Password" "Change root password" \ + "Desktop" "Install Desktop" \ "Hostname" "Set system hostname" \ "Network" "Networking configuration" \ "Services" "Set daemons to run on startup" \ @@ -414,6 +419,10 @@ ;; "Root Password") bsdinstall rootpass + finalconfig + ;; + "Desktop") + bsdinstall pkginstall finalconfig ;; "Hostname") Index: usr.sbin/bsdinstall/scripts/pkginstall =================================================================== --- /dev/null +++ usr.sbin/bsdinstall/scripts/pkginstall @@ -0,0 +1,171 @@ +#!/bin/sh +#- +# Copyright (c) 2016 Allan Jude +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# +############################################################ INCLUDES + +BSDCFG_SHARE="/usr/share/bsdconfig" +. $BSDCFG_SHARE/common.subr || exit 1 +f_dprintf "%s: loading includes..." "$0" +f_include $BSDCFG_SHARE/dialog.subr +f_include $BSDCFG_SHARE/mustberoot.subr + +############################################################ CONFIGURATION + +# +# List of languages to display (descriptions pulled from $msg_pkg_{name}_desc) +# +: ${PACKAGE_SETS:=\ + gnome3 kde mate xfce \ +} + +############################################################ GLOBALS + +# +# Strings that should be moved to an i18n file and loaded with f_include_lang() +# +hline_arrows_space_tab_enter="Use arrows, SPACE, TAB or ENTER" +msg_cancel="Cancel" +msg_freebsd_installer="FreeBSD Installer" +msg_menu_text="This menu allows you to install a graphical environment" +msg_ok="OK" +msg_package_installation="FreeBSD Package Installation" +msg_pkg_gnome3_desc="Gnome3 Desktop Environment" +msg_pkg_kde_desc="KDE4 Desktop Environment" +msg_pkg_lumina_desc="Lumina Desktop Environment" +msg_pkg_mate_desc="MATE Desktop Environment" + +############################################################ FUNCTIONS + +# dialog_menu_main +# +# Display the dialog(1)-based application main menu. +# +dialog_menu_main() +{ + local title="$DIALOG_TITLE" + local btitle="$DIALOG_BACKTITLE" + local prompt="$msg_docsinstall_menu_text" + local check_list= # Calculated below + local hline="$hline_arrows_space_tab_enter" + + local pkg desc status + for pkg in $PACKAGE_SETS; do + # Fetch the i18n description to display + f_getvar msg_pkg_${pkg}_desc desc + f_shell_escape "$desc" desc + + case "$pkg" in + lumina) status=on ;; + *) status=off + esac + + check_list="$check_list + '$pkg' '$desc' '$status' + " # END-QUOTE + done + + local height width rows + eval f_dialog_checklist_size height width rows \ + \"\$title\" \ + \"\$btitle\" \ + \"\$prompt\" \ + \"\$hline\" \ + $check_list + local selected + selected=$( eval $DIALOG \ + --title \"\$title\" \ + --backtitle \"\$btitle\" \ + --separate-output \ + --hline \"\$hline\" \ + --ok-label \"\$msg_ok\" \ + --cancel-label \"\$msg_cancel\" \ + --checklist \"\$prompt\" \ + $height $width $rows \ + $check_list \ + 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD + ) + local retval=$? + f_dialog_menutag_store -s "$selected" + return $retval +} + +############################################################ MAIN + +# +# Initialize +# +f_dialog_title "$msg_package_installation" +f_dialog_backtitle "$msg_freebsd_installer" +f_mustberoot_init + +# +# Launch application main menu +# +dialog_menu_main || f_die +f_dialog_menutag_fetch selected + +# Let pkg_add be able to use name servers +f_quietly cp -f $BSDINSTALL_TMPETC/resolv.conf $BSDINSTALL_CHROOT/etc/ + +# +# Install each of the selected packages +# +pkgsets="" +xdm="" +for pkg in $selected; do + pkgsets="$pkgsets $pkg" + case "$pkg" in + lumina) + pkgsets="$pkgsets xorg dbus hal pcbsd-utils-qt5" + xdm="pcdm" + ;; + mate) + pkgsets="$pkgsets xorg dbus hal" + xdm="gdm" + ;; + gnome3) + pkgsets="$pkgsets xorg dbus hal" + xdm="gdm" + ;; + kde) + pkgsets="$pkgsets xorg dbus hal" + xdm="kdm4" + ;; + esac +done + +ASSUME_ALWAYS_YES=YES chroot $BSDINSTALL_CHROOT pkg install $pkgsets + +if [ -n "$xdm" ]; then + sysrc -f $BSDINSTALL_TMPETC/rc.conf.gui hald_enable="YES" + sysrc -f $BSDINSTALL_TMPETC/rc.conf.gui dbus_enable="YES" + sysrc -f $BSDINSTALL_TMPETC/rc.conf.gui ${xdm}_enable="YES" +fi +################################################################################ +# END +################################################################################