diff --git a/distros/default.nix b/distros/default.nix index 0b6dbcf..2dce527 100644 --- a/distros/default.nix +++ b/distros/default.nix @@ -6,6 +6,7 @@ centos-stream = import ./centos-stream; debian = import ./debian; fedora = import ./fedora; + mint = import ./mint; nixos = import ./nixos; opensuse = import ./opensuse; rockylinux = import ./rockylinux; diff --git a/distros/mint/22/amd64.pkrvars.hcl b/distros/mint/22/amd64.pkrvars.hcl new file mode 100644 index 0000000..065d09c --- /dev/null +++ b/distros/mint/22/amd64.pkrvars.hcl @@ -0,0 +1,18 @@ +distro = "mint" +version = "22" +iso = { + url = "https://mirrors.kernel.org/linuxmint/stable/22.1/linuxmint-22.1-cinnamon-64bit.iso" + checksum = "ccf482436df954c0ad6d41123a49fde79352ca71f7a684a97d5e0a0c39d7f39f" +} +boot_command = [ + "e", + "auto ", + "noprompt ", + "automatic-ubiquity ", + #"only-ubiquity ", + "url=http://{{.HTTPIP}}:{{ .HTTPPort }}/preseed.cfg ", + "", +] +http_directory = "distros/mint/22/http/" +vbox_os_type = "Debian12_64" +disk_size = "30" diff --git a/distros/mint/22/finalize.sh b/distros/mint/22/finalize.sh new file mode 100644 index 0000000..9da84aa --- /dev/null +++ b/distros/mint/22/finalize.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -ex + +# 5 minute timeout for the package lock to arrive +apt-get -o DPkg::Lock::Timeout=600 autoremove -y + +# Configure sshd to be faster +cat << EOF > /etc/ssh/sshd_config.d/00-vagrant_accept_pubkey.conf +UseDNS no +PubkeyAcceptedKeyTypes +ssh-rsa +EOF + +# Clean up after ourselves +apt-get clean + +virt="$(systemd-detect-virt)" +if [ "${virt}" == "microsoft" ]; then + apt-get install -y hyperv-daemons + systemctl enable hv-fcopy-daemon + systemctl enable hv-kvp-daemon + systemctl enable hv-vss-daemon +fi diff --git a/distros/mint/22/http/preseed.cfg b/distros/mint/22/http/preseed.cfg new file mode 100644 index 0000000..d6a3b2a --- /dev/null +++ b/distros/mint/22/http/preseed.cfg @@ -0,0 +1,92 @@ +d-i debconf/frontend select Noninteractive +d-i debconf/priority select critical + +d-i debian-installer/locale string en_US.UTF-8 +# If you don't set locale separately, you will still get asked +d-i debian-installer/language string en +d-i debian-installer/country string US +d-i debconf/language string en +d-i console-setup/ask_detect boolean false + +# Setup the keyboard +d-i keyboard-configuration/layout select English (US) +d-i keyboard-configuration/variant select English (US) +d-i keyboard-configuration/keyboardcode select English (US) +d-i keyboard-configuration/xkb-keymap select us +d-i keyboard-configuration/toggle select No toggling +d-i keyboard-configuration/layoutcode string us + +# Choose whatever network seems good at the time +d-i netconfig/choose_interface select auto +d-i netcfg/get_hostname string vagrant +d-i netcfg/get_domain string vagrant + +# Setup vagrant user with vagrant passwords and such +d-i passwd/root-password-again password vagrant +d-i passwd/root-password password vagrant +d-i passwd/user-fullname string vagrant +d-i passwd/username string vagrant +d-i passwd/user-password password vagrant +d-i passwd/user-password-again password vagrant + +# Assume UTC time, to let user change if wanted +d-i clock-setup/utc boolean true +d-i time/zone string UTC + +# Just use plain partitions +ubiquity partman-auto/method string regular +# Don't prompt removing LVM +ubiquity partman-lvm/device_remove_lvm boolean true +# Don't prompt removing software RAID +ubiquity partman-md/device_remove_md boolean true + +# Put everything on one partition, then confirm +d-i partman-auto/choose_recipe select atomic +d-i partman-partitioning/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 +ubiquity partman/confirm boolean true +ubiquity partman-partitioning/confirm_write_new_label boolean true +ubiquity partman/choose_partition select finish +ubiquity partman/confirm boolean true +ubiquity partman/confirm_nooverwrite boolean true + +# Install to MBR, regardless of disk contents +d-i grub-installer/only_debian boolean true +d-i grub-installer/with_other_os boolean true +d-i grub-installer/bootdev string default +#d-i grub-installer/force-efi-extra-removable boolean true + +# Settings for package manager +d-i apt-setup/non-free boolean true +d-i apt-setup/contrib boolean true +d-i apt-setup/cdrom/set-first boolean false +d-i apt-setup/cdrom/set-next boolean false +d-i apt-setup/cdrom/set-failed boolean false +d-i mirror/country string manual +d-i mirror/http/proxy string +ubiquity ubiquity/use_nonfree boolean false + +# Package selection +tasksel tasksel/first multiselect +#d-i pkgsel/include string curl openssh-server sudo python3 network-manager +popularity-contest popularity-contest/participate boolean false + + +# Skip final message about completed install +d-i finish-install/reboot_in_progress note +d-i ubiquity/summary note +ubiquity ubiquity/reboot boolean true + +ubiquity ubiquity/success_command string \ + echo 'Defaults:vagrant !requiretty' > /target/etc/sudoers.d/vagrant; \ + echo 'vagrant ALL=(ALL) NOPASSWD: ALL' >> /target/etc/sudoers.d/vagrant; \ + chmod 440 /target/etc/sudoers.d/vagrant; \ + sed -i -e 's/ens3/ens5/g' /target/etc/network/interfaces; \ + IF=$(ip -br a|grep DOWN|head -1|awk '{print $1}'); \ + ip link set up dev $IF; \ + dhclient $IF; \ + in-target apt-get update; \ + in-target apt-get upgrade -y; \ + in-target apt-get install -y openssh-server diff --git a/distros/mint/22/qemu.sh b/distros/mint/22/qemu.sh new file mode 100644 index 0000000..4ef2dee --- /dev/null +++ b/distros/mint/22/qemu.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -ex + +apt install -y qemu-guest-agent +systemctl start qemu-guest-agent +systemctl enable qemu-guest-agent diff --git a/distros/mint/22/virtualbox.sh b/distros/mint/22/virtualbox.sh new file mode 100644 index 0000000..998449c --- /dev/null +++ b/distros/mint/22/virtualbox.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -ex + +packages=(bzip2 dkms build-essential "linux-headers-$(uname -r)") +apt install -y "${packages[@]}" +mount -t auto /home/vagrant/VBoxGuestAdditions.iso /mnt +/mnt/VBoxLinuxAdditions.run install 2>&1 | tee /root/vbox_addon_install.log +apt remove -y "${packages[@]}" +umount /mnt +rm /home/vagrant/VBoxGuestAdditions.iso diff --git a/distros/mint/22/vmware.sh b/distros/mint/22/vmware.sh new file mode 100644 index 0000000..9560300 --- /dev/null +++ b/distros/mint/22/vmware.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -ex + +apt install -y open-vm-tools diff --git a/distros/mint/default.nix b/distros/mint/default.nix new file mode 100644 index 0000000..f721563 --- /dev/null +++ b/distros/mint/default.nix @@ -0,0 +1,8 @@ +[ + + { + version = "22"; + arch = "amd64"; + eol = false; + } +]