nix config
1#!/usr/bin/env bash
2set -exu
3
4check_installer() {
5 if [ -e /etc/NIXOS ]; then
6 echo -e "\e[1;32mRunning in the NixOS installer environment.\e[0m"
7 else
8 echo -e "\e[1;31mNot running in the NixOS installer environment.\e[0m"
9 exit 1
10 fi
11}
12
13cleanup() {
14 rm -rf nixos-config-main.zip nixos-config-main nixos-config
15}
16
17download_config() {
18 curl -LJ0 https://github.com/dustinlyons/nixos-config/archive/main.zip -o nixos-config-main.zip
19 unzip nixos-config-main.zip
20 mv nixos-config-main/templates/starter nixos-config
21 cd nixos-config
22}
23
24run_apply() {
25 ./apps/x86_64-linux/apply
26 if [ ! -f /tmp/username.txt ]; then
27 echo -e "\e[1;31mError: /tmp/username.txt does not exist.\e[0m"
28 exit 1
29 fi
30 export USERNAME=$(cat /tmp/username.txt)
31}
32
33run_disko() {
34 sudo nix run --extra-experimental-features nix-command --extra-experimental-features flakes \
35 github:nix-community/disko -- --mode zap_create_mount ./modules/nixos/disk-config.nix
36}
37
38setup_files() {
39 sudo mkdir -p /mnt/etc/nixos
40 sudo cp -r * /mnt/etc/nixos
41 cd /mnt/etc/nixos
42}
43
44install_nixos() {
45 ARCH=$(uname -m)
46
47 case "$ARCH" in
48 x86_64)
49 FLAKE_TARGET="x86_64-linux"
50 ;;
51 aarch64)
52 FLAKE_TARGET="aarch64-linux"
53 ;;
54 *)
55 echo -e "${RED}Unsupported architecture: $ARCH${CLEAR}"
56 exit 1
57 ;;
58 esac
59
60 sudo nixos-install --flake .#$FLAKE_TARGET $@
61 sudo chmod -R 775 /mnt/etc/nixos
62}
63
64prompt_reboot() {
65 read -p "Do you want to reboot now? (y/yes) " choice
66 case "$choice" in
67 y|Y|yes|YES ) echo -e "\e[1;32mRebooting...\e[0m" && sudo reboot;;
68 * ) echo -e "\e[1;33mReboot skipped.\e[0m";;
69 esac
70}
71
72cleanup
73check_installer
74download_config
75run_apply
76run_disko
77setup_files
78install_nixos
79cleanup
80prompt_reboot