aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorCullum Smith <cullum@sacredheartsc.com>2024-08-02 19:10:39 -0400
committerCullum Smith <cullum@sacredheartsc.com>2024-08-02 19:10:39 -0400
commitcbcd022f302adc39ecb89fba6faf72e68184c0e0 (patch)
treea5ab154e08fa3c4fa110b09d3475736c66840c8b /scripts
parentceb339370d7a0cc4a83fe54103a650dfb3f72261 (diff)
downloadinfrastructure-cbcd022f302adc39ecb89fba6faf72e68184c0e0.tar.gz
halfway working idm server and laptop hostclasses
Diffstat (limited to 'scripts')
-rw-r--r--scripts/common/10-vars31
-rw-r--r--scripts/common/20-root-user (renamed from scripts/common/10-root-user)0
-rw-r--r--scripts/common/30-dns (renamed from scripts/common/20-dns)0
-rw-r--r--scripts/hostclass/desktop98
-rw-r--r--scripts/hostclass/idm_server/10-slapd165
-rw-r--r--scripts/hostclass/idm_server/20-powerdns114
-rw-r--r--scripts/hostclass/idm_server/30-kdc12
-rw-r--r--scripts/hostclass/idm_server/90-idm9
-rw-r--r--scripts/hostclass/laptop15
-rw-r--r--scripts/hostclass/pkg_repository6
l---------scripts/hostclass/roadwarrior_laptop/10-desktop1
l---------scripts/hostclass/roadwarrior_laptop/20-laptop1
-rw-r--r--scripts/hostclass/roadwarrior_laptop/30-roadwarrior6
-rw-r--r--scripts/hostname/rlaptop121
-rw-r--r--scripts/os/freebsd/30-ssh1
-rw-r--r--scripts/os/freebsd/40-pkg2
16 files changed, 480 insertions, 2 deletions
diff --git a/scripts/common/10-vars b/scripts/common/10-vars
new file mode 100644
index 0000000..3cfbd8f
--- /dev/null
+++ b/scripts/common/10-vars
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+if [ "${idm_bootstrap:-}" = true ]; then
+ resolvers=$bootstrap_resolvers
+ pkg_host=$pkg_host_ip
+else
+ : ${resolvers:="$(echo "$idm_server_list" | awk '{print $3}')"}
+fi
+
+idm_hostnames=$(echo "$idm_server_list" | awk '{print $1}')
+
+realm=$(echo "$domain" | tr '[:lower:]' '[:upper:]')
+
+basedn=$(echo "$domain" | sed -e 's/^/dc=/' -e 's/\./,dc=/g')
+ldap_uri=$(printf "ldap://%s.${domain}/ " $idm_hostnames)
+ldaps_uri=$(printf "ldaps://%s.${domain}/ " $idm_hostnames)
+ldap_hosts=$(printf "%s.${domain} " $idm_hostnames)
+accounts_basedn="ou=accounts,${basedn}"
+people_basedn="ou=people,${accounts_basedn}"
+robots_basedn="ou=robots,${accounts_basedn}"
+hosts_basedn="ou=hosts,${accounts_basedn}"
+services_basedn="ou=services,${accounts_basedn}"
+groups_basedn="ou=groups,${accounts_basedn}"
+private_groups_basedn="ou=userprivate,${groups_basedn}"
+roles_basedn="ou=roles,${groups_basedn}"
+automount_basedn="ou=automount,${basedn}"
+sudo_basedn="ou=sudo,${basedn}"
+dns_basedn="ou=dns,${basedn}"
+kdc_basedn="ou=dns,${basedn}"
+mail_basedn="ou=mail,${basedn}"
+mail_domains_basedn="ou=domains,${mail_basedn}"
diff --git a/scripts/common/10-root-user b/scripts/common/20-root-user
index 9a9f5e6..9a9f5e6 100644
--- a/scripts/common/10-root-user
+++ b/scripts/common/20-root-user
diff --git a/scripts/common/20-dns b/scripts/common/30-dns
index e2d5ad6..e2d5ad6 100644
--- a/scripts/common/20-dns
+++ b/scripts/common/30-dns
diff --git a/scripts/hostclass/desktop b/scripts/hostclass/desktop
new file mode 100644
index 0000000..d90081e
--- /dev/null
+++ b/scripts/hostclass/desktop
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+load_kernel_module linux linux64 acpi_ibm
+
+pkg install -y \
+ chromium \
+ compton \
+ dino \
+ dmenu \
+ eclipse \
+ firefox \
+ git \
+ krb5 \
+ i3 \
+ libreoffice \
+ libva-intel-media-driver \
+ networkmgr \
+ py${python_version}-pip \
+ stow \
+ terminus-font \
+ terminus-ttf \
+ tmux \
+ tree \
+ wireguard-tools \
+ xfontsel \
+ xidle \
+ xorg \
+ xterm
+
+case $desktop_type in
+ i3)
+ pkg install \
+ i3 \
+ i3lock \
+ i3status
+ ;;
+ kde)
+ pkg install \
+ juk \
+ k3b \
+ kde5 \
+ kid3-qt6 \
+ kmix \
+ konversation \
+ sddm
+ ;;
+esac
+
+set_sysctl \
+ net.local.stream.recvspace=65536 \
+ net.local.stream.sendspace=65536 \
+ kern.sched.preempt_thresh=224 \
+ vfs.usermount=1 \
+ hw.snd.latency=7
+
+set_loader_conf \
+ kern.ipc.shmseg=1024 \
+ kern.ipc.shmmni=1024 \
+ kern.maxproc=100000 \
+ linux_load=YES \
+ linux64_load=YES \
+ acpi_ibm_load=YES \
+ compat.linuxkpi.i915_enable_dc=2 \
+ compat.linuxkpi.i915_enable_fbc=1 \
+ compat.linuxkpi.i915_fastboot=1 \
+ compat.linuxkpi.i915_disable_power_well=1 \
+ machdep.hwpstate_pkg_ctrl=0 \
+ vfs.zfs.txg.timeout=10 \
+ hw.pci.do_power_nodriver=3
+
+# Create policy file for firefox.
+install_directory -m 0755 /usr/local/lib/firefox/distribution
+install_template -m 0644 /usr/local/lib/firefox/distribution/policies.json
+
+# Create policy file for chromium.
+install_directory -m 0755 \
+ /usr/local/etc/chromium/policies \
+ /usr/local/etc/chromium/policies/managed
+install_template -m 0644 /usr/local/etc/chromium/policies/managed/policies.json
+
+# Configure libreoffice
+install_file -m 0644 /usr/local/lib/libreoffice/program/sofficerc
+
+# Add terminus font to X11
+install_file -m 0644 /usr/local/etc/X11/xorg.conf.d/terminus.conf
+
+# Enable dbus.
+sysrc -v dbus_enable=YES
+service dbus status || service dbus start
+
+# Configure graphics drivers.
+case $graphics_type in
+ intel)
+ pkg install -y drm-kmod
+ sysrc -v kld_list+=i915kms
+ load_kernel_module i915kms
+ ;;
+esac
diff --git a/scripts/hostclass/idm_server/10-slapd b/scripts/hostclass/idm_server/10-slapd
new file mode 100644
index 0000000..dc52a58
--- /dev/null
+++ b/scripts/hostclass/idm_server/10-slapd
@@ -0,0 +1,165 @@
+#!/bin/sh
+
+: ${slapd_root_dn:='cn=admin'}
+: ${slapd_replicator_dn:="cn=replicator,${basedn}"}
+: ${slapd_result_size_limit:='10000'}
+: ${slapd_db_max_size:='1073741824'} # 1 GB
+: ${slapd_accesslog_db_max_size:='134217728'} # 128 MB
+: ${slapd_syncrepl_checkpoint_ops:='100'}
+: ${slapd_syncrepl_checkpoint_minutes:='10'}
+: ${slapd_syncrepl_session_log:='1000'}
+: ${slapd_syncrepl_cleanup_age:='7'}
+: ${slapd_syncrepl_cleanup_interval:='1'}
+
+slapd_user=ldap
+slapd_data_dir=/var/db/openldap-data
+slapd_conf_dir=/usr/local/etc/openldap
+slapd_tls_cert="${slapd_conf_dir}/slapd.crt"
+slapd_tls_key="${slapd_conf_dir}/slapd.key"
+slapd_replicator_tls_cert="${slapd_conf_dir}/replicator.crt"
+slapd_replicator_tls_key="${slapd_conf_dir}/replicator.key"
+slapd_keytab="${keytab_dir}/slapd.keytab"
+
+is_primary_server(){
+ # Return 0 if the current hostname is equal to $idm_primary_server.
+ # If $idm_primary_server is unset, use the first hostname in $idm_server_list.
+ _primary="${idm_primary_server:-$(echo "$idm_server_list" | awk 'NR==1{print $1}')}"
+ test "$BOXCONF_HOSTNAME" = "$_primary"
+}
+
+pkg install -y \
+ openldap26-server \
+ cyrus-sasl-saslauthd
+
+# Create ZFS dataset for OpenLDAP DB.
+create_dataset -o "mountpoint=${slapd_data_dir}" "${state_dataset}/openldap-data"
+
+# Copy TLS certificate for LDAP server.
+install_certificate -o "$slapd_user" -g "$slapd_user" slapd "$slapd_tls_cert"
+install_certificate_key -o "$slapd_user" -g "$slapd_user" slapd "$slapd_tls_key"
+
+# Copy client certificate for LDAP replication.
+install_certificate -o "$slapd_user" -g "$slapd_user" replicator "$slapd_replicator_tls_cert"
+install_certificate_key -o "$slapd_user" -g "$slapd_user" replicator "$slapd_replicator_tls_key"
+
+# Copy LDIF for the cn=config database.
+install_template -m 0600 "${slapd_conf_dir}/slapd.ldif"
+
+# Copy third-party schema files.
+install_file -m 0644 \
+ "${slapd_conf_dir}/schema/rfc2307bis.ldif" \
+ "${slapd_conf_dir}/schema/kerberos.ldif" \
+ "${slapd_conf_dir}/schema/openssh-lpk.ldif" \
+ "${slapd_conf_dir}/schema/sudo.ldif" \
+ "${slapd_conf_dir}/schema/dnsdomain2.ldif" \
+ "${slapd_conf_dir}/schema/mailservice.ldif"
+
+# Create the directories for the LDAP databases.
+install_directory -m 0770 -o "$slapd_user" -g "$slapd_user" \
+ "${slapd_data_dir}" \
+ "${slapd_data_dir}/accesslog"
+
+# If slapd.d doesn't exist, populate it with slapd.ldif.
+if [ ! -d "${slapd_conf_dir}/slapd.d" ]; then
+ install_directory -m 0700 -o "$slapd_user" "${slapd_conf_dir}/slapd.d"
+ slapadd -v -n0 -F "${slapd_conf_dir}/slapd.d" -l "${slapd_conf_dir}/slapd.ldif"
+ chown -R "${slapd_user}:${slapd_user}" "${slapd_conf_dir}/slapd.d"
+fi
+
+# Enable OpenLDAP in /etc/rc.conf, and start it.
+# Note: whatever LDAP IP you specified in $slapd_server_list must be present in
+# the `-h` argument to slapd. That's how slapd figures out its own server ID.
+sysrc -v \
+ slapd_enable=YES \
+ slapd_cn_config=YES \
+ slapd_flags="-h 'ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/ ldaps://0.0.0.0/ ldaps://${BOXCONF_DEFAULT_IPV4}/'" \
+ slapd_sockets="/var/run/openldap/ldapi" \
+ slapd_krb5_ktname="$slapd_keytab"
+
+service slapd restart
+
+# Copy the LDAP client configs.
+install_template -m 0644 "${slapd_conf_dir}/ldap.conf"
+
+# Copy slapd SASL configuration.
+install_template -m 0644 /usr/local/lib/sasl2/slapd.conf
+
+# Allow slapd to read the saslauthd socket.
+install_directory -m 0750 -o "$saslauthd_user" -g "$slapd_user" "$saslauthd_runtime_dir"
+
+# Enable and start saslauthd.
+sysrc -v \
+ saslauthd_flags='-a kerberos5' \
+ saslauthd_enable=YES
+service saslauthd restart
+
+# Create directory tree.
+if is_primary_server; then
+ # dc=example,dc=com
+ ldap_add "$basedn" <<EOF
+objectClass: dcObject
+objectClass: organization
+dc: $(ldap_rdn_value "$basedn")
+o: ${site}
+EOF
+
+ # ou=accounts,dc=example,dc=com
+ ldap_add "$accounts_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$accounts_basedn")
+EOF
+
+ # ou=people,ou=accounts,dc=example,dc=com
+ ldap_add "$people_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$people_basedn")
+EOF
+
+ # ou=robots,ou=accounts,dc=example,dc=com
+ ldap_add "$robots_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$robots_basedn")
+EOF
+
+ # ou=hosts,ou=accounts,dc=example,dc=com
+ ldap_add "$hosts_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$hosts_basedn")
+EOF
+
+ # ou=services,ou=accounts,dc=example,dc=com
+ ldap_add "$services_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$services_basedn")
+EOF
+
+ # ou=groups,ou=accounts,dc=example,dc=com
+ ldap_add "$groups_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$groups_basedn")
+EOF
+
+ # ou=userprivate,ou=groups,ou=accounts,dc=example,dc=com
+ ldap_add "$private_groups_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$private_groups_basedn")
+EOF
+
+ # ou=roles,ou=groups,ou=accounts,dc=example,dc=com
+ ldap_add "$roles_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$roles_basedn")
+EOF
+
+ # ou=automount,dc=example,dc=com
+ ldap_add "$automount_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$automount_basedn")
+EOF
+
+ # ou=sudo,dc=example,dc=com
+ ldap_add "$sudo_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$sudo_basedn")
+EOF
+fi
diff --git a/scripts/hostclass/idm_server/20-powerdns b/scripts/hostclass/idm_server/20-powerdns
new file mode 100644
index 0000000..4d42ee9
--- /dev/null
+++ b/scripts/hostclass/idm_server/20-powerdns
@@ -0,0 +1,114 @@
+#!/bin/sh
+
+: ${pdns_port:='1053'}
+: ${pdns_distributor_threads:='3'}
+: ${pdns_receiver_threads:="$nproc"}
+: ${pdns_allow_axfr_ips:='127.0.0.1/8'}
+: ${pdns_cache_ttl:='30'}
+: ${pdns_query_cache_ttl:='20'}
+: ${pdns_negquery_cache_ttl:='60'}
+
+pdns_conf_dir=/usr/local/etc/pdns
+pdns_runtime_dir=/var/run/pdns
+pdns_soa_record="sOARecord: ${fqdn} root.${domain} 0 10800 3600 604800 3600"
+pdns_ns_records=$(printf "nSRecord: %s.${domain}\n" $idm_hostnames)
+pdns_user=pdns
+
+# Install PowerDNS.
+pkg install -y powerdns
+
+# Generate PowerDNS configuration.
+install_template -m 0644 "${pdns_conf_dir}/pdns.conf"
+
+# Enable PowerDNS and start it.
+sysrc -v pdns_enable=YES
+service pdns restart
+
+# Create initial IDM DNS records.
+if is_primary_server; then
+ # ou=dns,dc=example,dc=com
+ ldap_add "$dns_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$dns_basedn")
+EOF
+
+ # Forward DNS zone
+ # dc=idm.example.com,ou=dns,dc=example,dc=com
+ ldap_add "dc=${domain},${dns_basedn}" <<EOF
+objectClass: dNSDomain
+objectClass: domainRelatedObject
+dc: ${domain}
+${pdns_soa_record}
+${pdns_ns_records}
+$(echo "$idm_server_list" | awk '{print "aRecord: "$2}')
+associatedDomain: ${domain}
+EOF
+
+ # Reverse DNS zone(s)
+ # dc=0.168.192.in-addr.arpa,ou=dns,dc=example.com
+ for zone in $reverse_dns_zones; do
+ ldap_add "dc=${zone},${dns_basedn}" <<EOF
+objectClass: dNSDomain
+objectClass: domainRelatedObject
+${pdns_soa_record}
+${pdns_ns_records}
+associatedDomain: ${zone}
+EOF
+ done
+
+ # LDAP SRV record
+ ldap_add "dc=_ldap._tcp,dc=${domain},${dns_basedn}" <<EOF
+objectClass: dNSDomain2
+objectClass: domainRelatedObject
+associatedDomain: _ldap._tcp.${domain}
+$(printf "sRVRecord: 0 100 389 %s.${domain}\n" ${idm_hostnames})
+EOF
+
+ # LDAPS SRV record
+ ldap_add "dc=_ldaps._tcp,dc=${domain},${dns_basedn}" <<EOF
+objectClass: dNSDomain2
+objectClass: domainRelatedObject
+associatedDomain: _ldaps._tcp.${domain}
+$(printf "sRVRecord: 0 100 636 %s.${domain}\n" ${idm_hostnames})
+EOF
+
+ # Kerberos SRV record (UDP)
+ ldap_add "dc=_kerberos._udp,dc=${domain},${dns_basedn}" <<EOF
+objectClass: dNSDomain2
+objectClass: domainRelatedObject
+associatedDomain: _kerberos._udp.${domain}
+$(printf "sRVRecord: 0 100 88 %s.${domain}\n" ${idm_hostnames})
+EOF
+
+ # Kerberos SRV record (TCP)
+ ldap_add "dc=_kerberos._tcp,dc=${domain},${dns_basedn}" <<EOF
+objectClass: dNSDomain2
+objectClass: domainRelatedObject
+associatedDomain: _kerberos._tcp.${domain}
+$(printf "sRVRecord: 0 100 88 %s.${domain}\n" ${idm_hostnames})
+EOF
+
+ # Kadmin SRV record
+ ldap_add "dc=_kerberos-adm._tcp,dc=${domain},${dns_basedn}" <<EOF
+objectClass: dNSDomain2
+objectClass: domainRelatedObject
+associatedDomain: _kerberos-adm._tcp.${domain}
+$(printf "sRVRecord: 0 100 749 %s.${domain}\n" ${idm_hostnames})
+EOF
+
+ # Kpasswd SRV record
+ ldap_add "dc=_kpasswd._udp,dc=${domain},${dns_basedn}" <<EOF
+objectClass: dNSDomain2
+objectClass: domainRelatedObject
+associatedDomain: _kpasswd._udp.${domain}
+$(printf "sRVRecord: 0 100 464 %s.${domain}\n" ${idm_hostnames})
+EOF
+
+ # Kerberos realm TXT record
+ ldap_add "dc=_kerberos,dc=${domain},${dns_basedn}" <<EOF
+objectClass: dNSDomain2
+objectClass: domainRelatedObject
+associatedDomain: _kerberos.${domain}
+tXTRecord: ${realm}
+EOF
+fi
diff --git a/scripts/hostclass/idm_server/30-kdc b/scripts/hostclass/idm_server/30-kdc
new file mode 100644
index 0000000..4921688
--- /dev/null
+++ b/scripts/hostclass/idm_server/30-kdc
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Install MIT kerberos.
+pkg install -y krb5
+
+if is_primary_server; then
+ # ou=kdc,dc=example,dc=com
+ ldap_add "$kdc_basedn" <<EOF
+objectClass: organizationalUnit
+ou: $(ldap_rdn_value "$dns_basedn")
+EOF
+fi
diff --git a/scripts/hostclass/idm_server/90-idm b/scripts/hostclass/idm_server/90-idm
new file mode 100644
index 0000000..7881f14
--- /dev/null
+++ b/scripts/hostclass/idm_server/90-idm
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Create host object for this server
+# Create ldap service principal for this server
+# Create A record
+# Create PTR record
+# Create boxconf user
+# Create sudo rules
+# Create admin group
diff --git a/scripts/hostclass/laptop b/scripts/hostclass/laptop
new file mode 100644
index 0000000..83c7457
--- /dev/null
+++ b/scripts/hostclass/laptop
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Set USB power savings
+usbconfig | awk -F: '{ print $1 }' | xargs -rtn1 -I% usbconfig -d % power_save ||:
+install_file /etc/rc.local
+
+# Create devd rule for lid close.
+install_file -m 0555 /usr/local/libexec/lid-close
+install_file -m 0644 /etc/devd/lid-close.conf
+service devd restart
+
+# Configure wireless card.
+sysrc -v \
+ create_args_wlan0='country US regdomain FCC' \
+ ifconfig_wlan0="WPA DHCP powersave"
diff --git a/scripts/hostclass/pkg_repository b/scripts/hostclass/pkg_repository
index b86704a..a356b3e 100644
--- a/scripts/hostclass/pkg_repository
+++ b/scripts/hostclass/pkg_repository
@@ -28,7 +28,9 @@ pkg install -y \
install_template -m 0644 \
/usr/local/etc/poudriere.conf \
"${poudriere_conf_dir}/make.conf" \
- "${poudriere_conf_dir}/pkglist"
+ "${poudriere_conf_dir}/idm-make.conf" \
+ "${poudriere_conf_dir}/pkglist" \
+ "${poudriere_conf_dir}/idm-pkglist"
install_file -m 0400 /usr/local/etc/ssl/repo.key
install_directory -m 0755 /usr/ports/distfiles
install_directory -m 0755 -o nobody -g nobody "${poudriere_data_dir}/ccache"
@@ -57,10 +59,12 @@ for version in $poudriere_versions; do
[ -d "${poudriere_data_dir}/jails/${jail}" ] || poudriere jail -c -j "$jail" -v "$version"
poudriere jail -u -j "$jail"
+ poudriere bulk -v -j "$jail" -f "${poudriere_conf_dir}/idm-pkglist" -p latest -z idm
poudriere bulk -v -j "$jail" -f "${poudriere_conf_dir}/pkglist" -p latest
install_directory -m 0755 "${poudriere_data_dir}/data/packages/${abi}"
ln -snfv "../${jail}-latest" "${poudriere_data_dir}/data/packages/${abi}/latest"
+ ln -snfv "../${jail}-latest-idm" "${poudriere_data_dir}/data/packages/${abi}/latest-idm"
done
# Clean stale distfiles and logs.
diff --git a/scripts/hostclass/roadwarrior_laptop/10-desktop b/scripts/hostclass/roadwarrior_laptop/10-desktop
new file mode 120000
index 0000000..2c7c348
--- /dev/null
+++ b/scripts/hostclass/roadwarrior_laptop/10-desktop
@@ -0,0 +1 @@
+../desktop \ No newline at end of file
diff --git a/scripts/hostclass/roadwarrior_laptop/20-laptop b/scripts/hostclass/roadwarrior_laptop/20-laptop
new file mode 120000
index 0000000..874f665
--- /dev/null
+++ b/scripts/hostclass/roadwarrior_laptop/20-laptop
@@ -0,0 +1 @@
+../laptop \ No newline at end of file
diff --git a/scripts/hostclass/roadwarrior_laptop/30-roadwarrior b/scripts/hostclass/roadwarrior_laptop/30-roadwarrior
new file mode 100644
index 0000000..2cc0a3e
--- /dev/null
+++ b/scripts/hostclass/roadwarrior_laptop/30-roadwarrior
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Configure sudoers.
+install_file -m 0600 \
+ /usr/local/etc/sudoers \
+ /usr/local/etc/sudoers.d/networkmgr
diff --git a/scripts/hostname/rlaptop1 b/scripts/hostname/rlaptop1
new file mode 100644
index 0000000..874c9dd
--- /dev/null
+++ b/scripts/hostname/rlaptop1
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set_loader_conf \
+ if_iwm_load=YES \
+ iwm8265fw_load=YES
+
+sysrc -v wlans_iwm0='wlan0'
+
+# On this laptop, kern.vt.suspendswitch=1 (the default) breaks graphics
+# acceleration after resuming from sleep.
+set_sysctl \
+ dev.acpi_ibm.0.handlerevents='0x10 0x11' \
+ kern.vt.suspendswitch=0
+
+install_file -m 0555 /usr/local/libexec/thinkpad-brightness
+install_file -m 0644 /etc/devd/thinkpad-brightness.conf
+
+service devd restart
+
+pw usershow cullum || \
+ pw useradd cullum -c "Cullum Smith" -d /home/cullum -G wheel,operator,video -s /bin/sh -m -M 700
diff --git a/scripts/os/freebsd/30-ssh b/scripts/os/freebsd/30-ssh
index 91b1991..7a57943 100644
--- a/scripts/os/freebsd/30-ssh
+++ b/scripts/os/freebsd/30-ssh
@@ -28,4 +28,5 @@ install_template -m 0644 \
/etc/ssh/ssh_config
# Restart sshd.
+sysrc -v sshd_enable=YES
service sshd restart
diff --git a/scripts/os/freebsd/40-pkg b/scripts/os/freebsd/40-pkg
index 7c1c828..46adc66 100644
--- a/scripts/os/freebsd/40-pkg
+++ b/scripts/os/freebsd/40-pkg
@@ -4,7 +4,7 @@ case $BOXCONF_HOSTCLASS in
pkg_repository)
return # Do nothing.
;;
- freebsd_hypervisor)
+ freebsd_hypervisor|roadwarrior_laptop)
;; # Keep default FreeBSD pkg repository.
*)
# Configure on-prem pkg repository.