Add NixOS 24.05

This commit is contained in:
Greg Hellings
2024-06-30 00:08:38 -05:00
parent de5dc1ae7e
commit cea0d3fb18
15 changed files with 232 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
#!env bash
set -exo pipefail
# Name of the file to write out
name="${0%.sh}"
version="24.05"
# Base URL
base="https://channels.nixos.org/nixos-${version}/latest-nixos-minimal-x86_64-linux.iso"
# Working directory
tmp="$(mktemp -d)"
checksums="${tmp}/checksums"
# Read the SHA256 sum value
curl -L -o "${checksums}" "${base}.sha256"
until curl -f -L -o "${checksums}" "${base}.sha256"; do
sleep 1
done
sha="$(grep -e minimal "${checksums}" | cut -d' ' -f 1)"
# Write out HCL file
cat << EOF > "${name}"
distro = "nixos"
version = "${version}"
iso = {
url = "${base}"
checksum = "${sha}"
}
boot_command = [
"curl -o /tmp/install.sh http://{{ .HTTPIP }}:{{ .HTTPPort }}/install.sh<enter>",
"<wait>",
"sudo bash /tmp/install.sh {{ .HTTPPort }} {{ .HTTPIP }}<enter>"
]
http_directory = "distros/nixos/${version}/http/"
boot_wait = "90s"
EOF
rm -r "${tmp}"
rm -f "cache/latest-nixos-minimal-x86_64-linux.iso"
+2
View File
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
set -ex
@@ -0,0 +1,67 @@
{config, pkgs, lib, ...}:
{
imports = [
./hardware-configuration.nix
./guest-agent.nix
];
system.stateVersion = "24.05";
# Packages installed on the whole system
environment.systemPackages = with pkgs; [
curl
nano
python3
];
# Services that are running
services = {
openssh.enable = true;
#xserver.enable = true;
};
# User setup
users.groups.vagrant = {};
users.users.vagrant = {
isNormalUser = true;
group = "vagrant";
extraGroups = [ "wheel" ];
password = "vagrant";
};
security.sudo.extraRules = [
{
users = [ "vagrant" ];
groups = [ "vagrant" ];
commands = [
{ command = "ALL"; options = [ "NOPASSWD" ]; }
];
}
];
boot.loader = {
systemd-boot = {
enable = true;
};
efi.canTouchEfiVariables = true;
};
networking = {
hostName = "vagrant";
networkmanager.enable = true;
#proxy.default = "http://user:password@proxy:port/";
#proxy.noProxy = "127.0.0.1,localhost,internal.domain";
};
time.timeZone = "UTC";
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminux16";
keyMap = lib.mkForce "us";
useXkbConfig = true;
};
nix = {
package = pkgs.nixFlakes;
settings = {
experimental-features = "nix-command flakes";
};
};
}
+15
View File
@@ -0,0 +1,15 @@
{
description = "A basic NixOS Vagrant install";
inputs = {
nixstable.url = "github:nixos/nixpkgs/nixos-24.05";
};
outputs = { nixstable, self, ... }@inputs:
{
nixosConfigurations.vagrant = nixstable.lib.nixosSystem {
system = "x86_64-linux";
modules = [ ./configuration.nix ];
};
};
}
+1
View File
@@ -0,0 +1 @@
ga-qemu.nix
@@ -0,0 +1,4 @@
{...}:
{
virtualisation.hypervGuest.enable = true;
}
+7
View File
@@ -0,0 +1,7 @@
{...}:
{
virtualisation.virtualbox.guest = {
enable = true;
x11 = false;
};
}
+4
View File
@@ -0,0 +1,4 @@
{...}:
{
services.qemuGuest.enable = true;
}
+7
View File
@@ -0,0 +1,7 @@
{...}:
{
virtualisation.vmware.guest = {
enable = true;
headless = false;
}
}
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -ex
# Set passwords
echo "vagrant:vagrant" | chpasswd
echo "root:vagrant" | chpasswd
# Set ownership of things vagrant should own
chown -R vagrant:vagrant ~vagrant/
chown -R vagrant:wheel /etc/nixos
+64
View File
@@ -0,0 +1,64 @@
#!/usr/bin/env bash
#vim: set ft=bash:
set -ex
port="${1}" # HTTP port that packer is running on
host="${2}"
if [ -e /dev/vda ]; then
disk="/dev/vda"
elif [ -e /dev/sda ]; then
disk="/dev/sda"
else
exit 1 # Need to teach the script which device to use in this case
fi
# The sed bit is just to strip out the extra fluff, like comments
sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk ${disk}
g # create new GPT partition table
n # new
# default partition number
# default start
+512M # size
t # set type
1 # EFI system partition
n # second partition
# default partition number
# start at first free sector
# default to full disk
p # print, for debugging
w # write the partition table and exit
EOF
sleep 10 # Let me at least read it!
#t # set partition type
#1 # on partition 1
#4 # BIOS boot
# Format and mount partitions
mkfs.vfat "${disk}1"
mkfs.ext4 "${disk}2"
mount "${disk}2" /mnt
mkdir -p /mnt/boot
mount "${disk}1" /mnt/boot
# Bootstrap system
virt="$(systemd-detect-virt)"
nixos-generate-config --root /mnt
curl -o /mnt/etc/nixos/configuration.nix "http://${host}:${port}/configuration.nix"
curl -o /mnt/etc/nixos/flake.nix "http://${host}:${port}/flake.nix"
curl -o /mnt/etc/nixos/guest-agent.nix "http://${host}:${port}/ga-${virt}.nix"
sed -i -E -e "s,@BOOT_DEVICE@,${disk}," /mnt/etc/nixos/configuration.nix
nixos-install --no-root-password --flake "/mnt/etc/nixos/#vagrant"
# Run stuff in the chroot
curl -o /mnt/root/in-chroot.sh "http://${host}:${port}/in-chroot.sh"
nixos-enter --root /mnt -c 'bash /root/in-chroot.sh'
rm /mnt/root/in-chroot.sh
umount /mnt/boot
umount /mnt
efibootmgr --bootnext "$(efibootmgr | grep Linux | awk '{print $1}' | sed -E 's/[^0-9]//g')"
reboot
+2
View File
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
set -ex
+2
View File
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
set -ex
+2
View File
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
set -ex
+4
View File
@@ -6,4 +6,8 @@
version = "23.11";
arch = "amd64";
eol = false;
} {
version = "24.05";
arch = "amd64";
eol = false;
} ]