mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 09:07:21 +01:00
feat: provide installation from local ISO
This commit is contained in:
parent
57135bd505
commit
9e8324ad27
6 changed files with 313 additions and 42 deletions
|
|
@ -1062,6 +1062,11 @@ In this section I am creating some attributes that define general concepts of my
|
||||||
type = "app";
|
type = "app";
|
||||||
program = "${self.packages.${system}.swarsel-install}/bin/swarsel-install";
|
program = "${self.packages.${system}.swarsel-install}/bin/swarsel-install";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
rebuild = {
|
||||||
|
type = "app";
|
||||||
|
program = "${self.packages.${system}.swarsel-rebuild}/bin/swarsel-rebuild";
|
||||||
|
};
|
||||||
});
|
});
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (
|
||||||
system:
|
system:
|
||||||
|
|
@ -1975,7 +1980,7 @@ This is the "reference implementation" of a setup that runs without NixOS, only
|
||||||
|
|
||||||
This is just a demo host. It applies all the configuration found in the common parts of the flake, but disables all secrets-related features (as they would not work without the proper SSH keys).
|
This is just a demo host. It applies all the configuration found in the common parts of the flake, but disables all secrets-related features (as they would not work without the proper SSH keys).
|
||||||
|
|
||||||
I also set the =WLR_ALLOW_SOFTWARE_RENDERER=1= to allow this configuration to run in a virtualized environment. I also enable =qemuGuest= for a smoother experience when testing on QEMU.
|
I also set the =WLR_RENDERER_ALLOW_SOFTWARE=1= to allow this configuration to run in a virtualized environment. I also enable =qemuGuest= for a smoother experience when testing on QEMU.
|
||||||
|
|
||||||
|
|
||||||
#+begin_src nix :tangle hosts/nixos/chaostheatre/default.nix
|
#+begin_src nix :tangle hosts/nixos/chaostheatre/default.nix
|
||||||
|
|
@ -2006,7 +2011,7 @@ I also set the =WLR_ALLOW_SOFTWARE_RENDERER=1= to allow this configuration to ru
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
WLR_ALLOW_SOFTWARE_RENDERER = 1;
|
WLR_RENDERER_ALLOW_SOFTWARE = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.qemuGuest.enable = true;
|
services.qemuGuest.enable = true;
|
||||||
|
|
@ -2984,11 +2989,11 @@ This program sets up a new NixOS host.
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
**** swarsel-install
|
**** swarsel-rebuild
|
||||||
|
|
||||||
This program sets up a new NixOS host.
|
This program sets up a new NixOS host.
|
||||||
|
|
||||||
#+begin_src shell :tangle scripts/swarsel-install.sh
|
#+begin_src shell :tangle scripts/swarsel-rebuild.sh
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
target_flake="chaostheatre"
|
target_flake="chaostheatre"
|
||||||
|
|
@ -3009,6 +3014,12 @@ This program sets up a new NixOS host.
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function red() {
|
||||||
|
echo -e "\x1B[31m[!] $1 \x1B[0m"
|
||||||
|
if [ -n "${2-}" ]; then
|
||||||
|
echo -e "\x1B[31m[!] $($2) \x1B[0m"
|
||||||
|
fi
|
||||||
|
}
|
||||||
function green() {
|
function green() {
|
||||||
echo -e "\x1B[32m[+] $1 \x1B[0m"
|
echo -e "\x1B[32m[+] $1 \x1B[0m"
|
||||||
if [ -n "${2-}" ]; then
|
if [ -n "${2-}" ]; then
|
||||||
|
|
@ -3046,6 +3057,9 @@ This program sets up a new NixOS host.
|
||||||
if [ ! -d /home/"$target_user"/.dotfiles ]; then
|
if [ ! -d /home/"$target_user"/.dotfiles ]; then
|
||||||
green "Cloning repository from GitHub"
|
green "Cloning repository from GitHub"
|
||||||
git clone https://github.com/Swarsel/.dotfiles.git
|
git clone https://github.com/Swarsel/.dotfiles.git
|
||||||
|
else
|
||||||
|
red "A .dotfiles repository is in the way. Please (re-)move the repository and try again."
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local_keys=$(ssh-add -L || true)
|
local_keys=$(ssh-add -L || true)
|
||||||
|
|
@ -3061,15 +3075,142 @@ This program sets up a new NixOS host.
|
||||||
fi
|
fi
|
||||||
sudo nixos-generate-config --dir /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/
|
sudo nixos-generate-config --dir /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/
|
||||||
git add /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
git add /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
||||||
sudo mkdir -p /root/.local/share/nix/
|
|
||||||
printf '{\"extra-substituters\":{\"https://nix-community.cachix.org\":true,\"https://nix-community.cachix.org https://cache.ngi0.nixos.org/\":true},\"extra-trusted-public-keys\":{\"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=\":true,\"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= cache.ngi0.nixos.org-1:KqH5CBLNSyX184S9BKZJo1LxrxJ9ltnY2uAs5c/f1MA=\":true}}' > /root/.local/share/nix/trusted-settings.json
|
|
||||||
green "Installing flake $target_flake"
|
green "Installing flake $target_flake"
|
||||||
sudo nixos-rebuild --show-trace --flake .#"$target_flake" boot
|
sudo nixos-rebuild --show-trace --flake .#"$target_flake" boot
|
||||||
yellow "Please keep in mind that this is only a demo of the configuration. Things might break unexpectedly."
|
yellow "Please keep in mind that this is only a demo of the configuration. Things might break unexpectedly."
|
||||||
git restore --staged /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
#+end_src
|
||||||
git restore /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
|
||||||
git restore --staged /home/"$target_user"/.dotfiles/flake.nix
|
|
||||||
git restore /home/"$target_user"/.dotfiles/flake.nix
|
|
||||||
|
#+begin_src nix :tangle pkgs/swarsel-rebuild/default.nix
|
||||||
|
{ writeShellApplication, git }:
|
||||||
|
|
||||||
|
writeShellApplication {
|
||||||
|
name = "swarsel-rebuild";
|
||||||
|
runtimeInputs = [ git ];
|
||||||
|
text = builtins.readFile ../../scripts/swarsel-rebuild.sh;
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
**** swarsel-install
|
||||||
|
|
||||||
|
This program sets up a new NixOS host.
|
||||||
|
|
||||||
|
#+begin_src shell :tangle scripts/swarsel-install.sh
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
target_flake="chaostheatre"
|
||||||
|
target_user="swarsel"
|
||||||
|
fs_type="ext4"
|
||||||
|
disk=""
|
||||||
|
|
||||||
|
function help_and_exit() {
|
||||||
|
echo
|
||||||
|
echo "Remotely installs NixOS on a target machine using this nix-config."
|
||||||
|
echo
|
||||||
|
echo "USAGE: $0 -d <disk> [OPTIONS]"
|
||||||
|
echo
|
||||||
|
echo "ARGS:"
|
||||||
|
echo " -d <disk> specify disk to install on."
|
||||||
|
echo " -f <target_flake> specify flake to deploy the nixos config of."
|
||||||
|
echo " Default: chaostheatre"
|
||||||
|
echo " -u <target_user> specify user to deploy for."
|
||||||
|
echo " Default: swarsel"
|
||||||
|
echo " -t <fs_type> specify file system type to deploy for."
|
||||||
|
echo " Default: ext4"
|
||||||
|
echo " -h | --help Print this help."
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function green() {
|
||||||
|
echo -e "\x1B[32m[+] $1 \x1B[0m"
|
||||||
|
if [ -n "${2-}" ]; then
|
||||||
|
echo -e "\x1B[32m[+] $($2) \x1B[0m"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function yellow() {
|
||||||
|
echo -e "\x1B[33m[*] $1 \x1B[0m"
|
||||||
|
if [ -n "${2-}" ]; then
|
||||||
|
echo -e "\x1B[33m[*] $($2) \x1B[0m"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
-f)
|
||||||
|
shift
|
||||||
|
target_flake=$1
|
||||||
|
;;
|
||||||
|
-u)
|
||||||
|
shift
|
||||||
|
target_user=$1
|
||||||
|
;;
|
||||||
|
-t)
|
||||||
|
shift
|
||||||
|
fs_type=$1
|
||||||
|
;;
|
||||||
|
-d)
|
||||||
|
shift
|
||||||
|
disk=$1
|
||||||
|
;;
|
||||||
|
-h | --help) help_and_exit ;;
|
||||||
|
,*)
|
||||||
|
echo "Invalid option detected."
|
||||||
|
help_and_exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
cd /home/"$target_user"
|
||||||
|
|
||||||
|
sudo rm -rf .cache/nix
|
||||||
|
sudo rm -rf .dotfiles
|
||||||
|
|
||||||
|
green "Cloning repository from GitHub"
|
||||||
|
git clone https://github.com/Swarsel/.dotfiles.git
|
||||||
|
|
||||||
|
local_keys=$(ssh-add -L || true)
|
||||||
|
pub_key=$(cat /home/"$target_user"/.dotfiles/secrets/keys/ssh/nbl-imba-2.pub)
|
||||||
|
read -ra pub_arr <<< "$pub_key"
|
||||||
|
|
||||||
|
cd .dotfiles
|
||||||
|
if [[ $local_keys != *"${pub_arr[1]}"* ]]; then
|
||||||
|
yellow "The ssh key for this configuration is not available."
|
||||||
|
green "Adjusting flake.nix so that the configuration is buildable"
|
||||||
|
sed -i '/nix-secrets = {/,/^[[:space:]]*};/d' flake.nix
|
||||||
|
git add flake.nix
|
||||||
|
fi
|
||||||
|
|
||||||
|
green "Creating /boot partition"
|
||||||
|
sudo parted -a optimal --script "$disk" mklabel gpt
|
||||||
|
sudo parted -a optimal --script "$disk" mkpart "boot" fat32 1MiB 1025MiB
|
||||||
|
sudo parted -a optimal --script "$disk" set 1 esp on
|
||||||
|
|
||||||
|
green "Creating / partition"
|
||||||
|
sudo parted -a optimal --script "$disk" mkpart "root" "$fs_type" 1025MiB 100%
|
||||||
|
sudo parted -a optimal --script "$disk" type 2 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
|
||||||
|
|
||||||
|
green "Ensuring proper file systems"
|
||||||
|
sudo mkfs.fat -F32 "$disk"1
|
||||||
|
sudo mkfs."${fs_type}" -F "$disk"2
|
||||||
|
|
||||||
|
green "Generating hardware configuration"
|
||||||
|
sudo mount "$disk"2 /mnt
|
||||||
|
sudo mkdir -p /mnt/boot
|
||||||
|
sudo mount "$disk"1 /mnt/boot
|
||||||
|
sudo nixos-generate-config --root /mnt --dir /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/
|
||||||
|
|
||||||
|
git add /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
||||||
|
# sudo rm -rf /root/.nix-defexpr/channels
|
||||||
|
# sudo rm -rf /nix/var/nix/profiles/per-user/channels
|
||||||
|
sudo mkdir -p /root/.local/share/nix/
|
||||||
|
printf '{\"extra-substituters\":{\"https://nix-community.cachix.org\":true,\"https://nix-community.cachix.org https://cache.ngi0.nixos.org/\":true},\"extra-trusted-public-keys\":{\"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=\":true,\"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= cache.ngi0.nixos.org-1:KqH5CBLNSyX184S9BKZJo1LxrxJ9ltnY2uAs5c/f1MA=\":true}}' | sudo tee /root/.local/share/nix/trusted-settings.json > /dev/null
|
||||||
|
green "Installing flake $target_flake"
|
||||||
|
sudo nixos-install --flake .#"$target_flake"
|
||||||
|
yellow "Please keep in mind that this is only a demo of the configuration. Things might break unexpectedly."
|
||||||
|
green "Installation finished! Reboot to see changes"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -5384,6 +5525,7 @@ This is used to better integrate Sway into the system on NixOS hosts. On the hom
|
||||||
export SDL_VIDEODRIVER=wayland
|
export SDL_VIDEODRIVER=wayland
|
||||||
export QT_QPA_PLATFORM=wayland-egl
|
export QT_QPA_PLATFORM=wayland-egl
|
||||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
|
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
|
||||||
|
export QT_QPA_PLATFORM_PLUGIN_PATH="${pkgs.libsForQt5.qt5.qtbase.bin}/lib/qt-${pkgs.libsForQt5.qt5.qtbase.version}/plugins";
|
||||||
export MOZ_ENABLE_WAYLAND=1
|
export MOZ_ENABLE_WAYLAND=1
|
||||||
export MOZ_DISABLE_RDD_SANDBOX=1
|
export MOZ_DISABLE_RDD_SANDBOX=1
|
||||||
'';
|
'';
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,11 @@
|
||||||
type = "app";
|
type = "app";
|
||||||
program = "${self.packages.${system}.swarsel-install}/bin/swarsel-install";
|
program = "${self.packages.${system}.swarsel-install}/bin/swarsel-install";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
rebuild = {
|
||||||
|
type = "app";
|
||||||
|
program = "${self.packages.${system}.swarsel-rebuild}/bin/swarsel-rebuild";
|
||||||
|
};
|
||||||
});
|
});
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (
|
||||||
system:
|
system:
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
WLR_ALLOW_SOFTWARE_RENDERER = 1;
|
WLR_RENDERER_ALLOW_SOFTWARE = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.qemuGuest.enable = true;
|
services.qemuGuest.enable = true;
|
||||||
|
|
|
||||||
7
pkgs/swarsel-rebuild/default.nix
Normal file
7
pkgs/swarsel-rebuild/default.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{ writeShellApplication, git }:
|
||||||
|
|
||||||
|
writeShellApplication {
|
||||||
|
name = "swarsel-rebuild";
|
||||||
|
runtimeInputs = [ git ];
|
||||||
|
text = builtins.readFile ../../scripts/swarsel-rebuild.sh;
|
||||||
|
}
|
||||||
|
|
@ -2,18 +2,23 @@ set -eo pipefail
|
||||||
|
|
||||||
target_flake="chaostheatre"
|
target_flake="chaostheatre"
|
||||||
target_user="swarsel"
|
target_user="swarsel"
|
||||||
|
fs_type="ext4"
|
||||||
|
disk=""
|
||||||
|
|
||||||
function help_and_exit() {
|
function help_and_exit() {
|
||||||
echo
|
echo
|
||||||
echo "Remotely installs NixOS on a target machine using this nix-config."
|
echo "Remotely installs NixOS on a target machine using this nix-config."
|
||||||
echo
|
echo
|
||||||
echo "USAGE: $0 [OPTIONS]"
|
echo "USAGE: $0 -d <disk> [OPTIONS]"
|
||||||
echo
|
echo
|
||||||
echo "ARGS:"
|
echo "ARGS:"
|
||||||
|
echo " -d <disk> specify disk to install on."
|
||||||
echo " -f <target_flake> specify flake to deploy the nixos config of."
|
echo " -f <target_flake> specify flake to deploy the nixos config of."
|
||||||
echo " Default: chaostheatre"
|
echo " Default: chaostheatre"
|
||||||
echo " -u <target_user> specify user to deploy for."
|
echo " -u <target_user> specify user to deploy for."
|
||||||
echo " Default: swarsel"
|
echo " Default: swarsel"
|
||||||
|
echo " -t <fs_type> specify file system type to deploy for."
|
||||||
|
echo " Default: ext4"
|
||||||
echo " -h | --help Print this help."
|
echo " -h | --help Print this help."
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
@ -41,6 +46,14 @@ while [[ $# -gt 0 ]]; do
|
||||||
shift
|
shift
|
||||||
target_user=$1
|
target_user=$1
|
||||||
;;
|
;;
|
||||||
|
-t)
|
||||||
|
shift
|
||||||
|
fs_type=$1
|
||||||
|
;;
|
||||||
|
-d)
|
||||||
|
shift
|
||||||
|
disk=$1
|
||||||
|
;;
|
||||||
-h | --help) help_and_exit ;;
|
-h | --help) help_and_exit ;;
|
||||||
*)
|
*)
|
||||||
echo "Invalid option detected."
|
echo "Invalid option detected."
|
||||||
|
|
@ -52,10 +65,11 @@ done
|
||||||
|
|
||||||
cd /home/"$target_user"
|
cd /home/"$target_user"
|
||||||
|
|
||||||
if [ ! -d /home/"$target_user"/.dotfiles ]; then
|
sudo rm -rf .cache/nix
|
||||||
|
sudo rm -rf .dotfiles
|
||||||
|
|
||||||
green "Cloning repository from GitHub"
|
green "Cloning repository from GitHub"
|
||||||
git clone https://github.com/Swarsel/.dotfiles.git
|
git clone https://github.com/Swarsel/.dotfiles.git
|
||||||
fi
|
|
||||||
|
|
||||||
local_keys=$(ssh-add -L || true)
|
local_keys=$(ssh-add -L || true)
|
||||||
pub_key=$(cat /home/"$target_user"/.dotfiles/secrets/keys/ssh/nbl-imba-2.pub)
|
pub_key=$(cat /home/"$target_user"/.dotfiles/secrets/keys/ssh/nbl-imba-2.pub)
|
||||||
|
|
@ -68,14 +82,32 @@ if [[ $local_keys != *"${pub_arr[1]}"* ]]; then
|
||||||
sed -i '/nix-secrets = {/,/^[[:space:]]*};/d' flake.nix
|
sed -i '/nix-secrets = {/,/^[[:space:]]*};/d' flake.nix
|
||||||
git add flake.nix
|
git add flake.nix
|
||||||
fi
|
fi
|
||||||
sudo nixos-generate-config --dir /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/
|
|
||||||
|
green "Creating /boot partition"
|
||||||
|
sudo parted -a optimal --script "$disk" mklabel gpt
|
||||||
|
sudo parted -a optimal --script "$disk" mkpart "boot" fat32 1MiB 1025MiB
|
||||||
|
sudo parted -a optimal --script "$disk" set 1 esp on
|
||||||
|
|
||||||
|
green "Creating / partition"
|
||||||
|
sudo parted -a optimal --script "$disk" mkpart "root" "$fs_type" 1025MiB 100%
|
||||||
|
sudo parted -a optimal --script "$disk" type 2 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
|
||||||
|
|
||||||
|
green "Ensuring proper file systems"
|
||||||
|
sudo mkfs.fat -F32 "$disk"1
|
||||||
|
sudo mkfs."${fs_type}" -F "$disk"2
|
||||||
|
|
||||||
|
green "Generating hardware configuration"
|
||||||
|
sudo mount "$disk"2 /mnt
|
||||||
|
sudo mkdir -p /mnt/boot
|
||||||
|
sudo mount "$disk"1 /mnt/boot
|
||||||
|
sudo nixos-generate-config --root /mnt --dir /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/
|
||||||
|
|
||||||
git add /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
git add /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
||||||
|
# sudo rm -rf /root/.nix-defexpr/channels
|
||||||
|
# sudo rm -rf /nix/var/nix/profiles/per-user/channels
|
||||||
sudo mkdir -p /root/.local/share/nix/
|
sudo mkdir -p /root/.local/share/nix/
|
||||||
printf '{\"extra-substituters\":{\"https://nix-community.cachix.org\":true,\"https://nix-community.cachix.org https://cache.ngi0.nixos.org/\":true},\"extra-trusted-public-keys\":{\"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=\":true,\"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= cache.ngi0.nixos.org-1:KqH5CBLNSyX184S9BKZJo1LxrxJ9ltnY2uAs5c/f1MA=\":true}}' > /root/.local/share/nix/trusted-settings.json
|
printf '{\"extra-substituters\":{\"https://nix-community.cachix.org\":true,\"https://nix-community.cachix.org https://cache.ngi0.nixos.org/\":true},\"extra-trusted-public-keys\":{\"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=\":true,\"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= cache.ngi0.nixos.org-1:KqH5CBLNSyX184S9BKZJo1LxrxJ9ltnY2uAs5c/f1MA=\":true}}' | sudo tee /root/.local/share/nix/trusted-settings.json > /dev/null
|
||||||
green "Installing flake $target_flake"
|
green "Installing flake $target_flake"
|
||||||
sudo nixos-rebuild --show-trace --flake .#"$target_flake" boot
|
sudo nixos-install --flake .#"$target_flake"
|
||||||
yellow "Please keep in mind that this is only a demo of the configuration. Things might break unexpectedly."
|
yellow "Please keep in mind that this is only a demo of the configuration. Things might break unexpectedly."
|
||||||
git restore --staged /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
green "Installation finished! Reboot to see changes"
|
||||||
git restore /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
|
||||||
git restore --staged /home/"$target_user"/.dotfiles/flake.nix
|
|
||||||
git restore /home/"$target_user"/.dotfiles/flake.nix
|
|
||||||
|
|
|
||||||
85
scripts/swarsel-rebuild.sh
Normal file
85
scripts/swarsel-rebuild.sh
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
target_flake="chaostheatre"
|
||||||
|
target_user="swarsel"
|
||||||
|
|
||||||
|
function help_and_exit() {
|
||||||
|
echo
|
||||||
|
echo "Remotely installs NixOS on a target machine using this nix-config."
|
||||||
|
echo
|
||||||
|
echo "USAGE: $0 [OPTIONS]"
|
||||||
|
echo
|
||||||
|
echo "ARGS:"
|
||||||
|
echo " -f <target_flake> specify flake to deploy the nixos config of."
|
||||||
|
echo " Default: chaostheatre"
|
||||||
|
echo " -u <target_user> specify user to deploy for."
|
||||||
|
echo " Default: swarsel"
|
||||||
|
echo " -h | --help Print this help."
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function red() {
|
||||||
|
echo -e "\x1B[31m[!] $1 \x1B[0m"
|
||||||
|
if [ -n "${2-}" ]; then
|
||||||
|
echo -e "\x1B[31m[!] $($2) \x1B[0m"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function green() {
|
||||||
|
echo -e "\x1B[32m[+] $1 \x1B[0m"
|
||||||
|
if [ -n "${2-}" ]; then
|
||||||
|
echo -e "\x1B[32m[+] $($2) \x1B[0m"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function yellow() {
|
||||||
|
echo -e "\x1B[33m[*] $1 \x1B[0m"
|
||||||
|
if [ -n "${2-}" ]; then
|
||||||
|
echo -e "\x1B[33m[*] $($2) \x1B[0m"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
-f)
|
||||||
|
shift
|
||||||
|
target_flake=$1
|
||||||
|
;;
|
||||||
|
-u)
|
||||||
|
shift
|
||||||
|
target_user=$1
|
||||||
|
;;
|
||||||
|
-h | --help) help_and_exit ;;
|
||||||
|
*)
|
||||||
|
echo "Invalid option detected."
|
||||||
|
help_and_exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
cd /home/"$target_user"
|
||||||
|
|
||||||
|
if [ ! -d /home/"$target_user"/.dotfiles ]; then
|
||||||
|
green "Cloning repository from GitHub"
|
||||||
|
git clone https://github.com/Swarsel/.dotfiles.git
|
||||||
|
else
|
||||||
|
red "A .dotfiles repository is in the way. Please (re-)move the repository and try again."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local_keys=$(ssh-add -L || true)
|
||||||
|
pub_key=$(cat /home/"$target_user"/.dotfiles/secrets/keys/ssh/nbl-imba-2.pub)
|
||||||
|
read -ra pub_arr <<< "$pub_key"
|
||||||
|
|
||||||
|
cd .dotfiles
|
||||||
|
if [[ $local_keys != *"${pub_arr[1]}"* ]]; then
|
||||||
|
yellow "The ssh key for this configuration is not available."
|
||||||
|
green "Adjusting flake.nix so that the configuration is buildable"
|
||||||
|
sed -i '/nix-secrets = {/,/^[[:space:]]*};/d' flake.nix
|
||||||
|
git add flake.nix
|
||||||
|
fi
|
||||||
|
sudo nixos-generate-config --dir /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/
|
||||||
|
git add /home/"$target_user"/.dotfiles/hosts/nixos/"$target_flake"/hardware-configuration.nix
|
||||||
|
|
||||||
|
green "Installing flake $target_flake"
|
||||||
|
sudo nixos-rebuild --show-trace --flake .#"$target_flake" boot
|
||||||
|
yellow "Please keep in mind that this is only a demo of the configuration. Things might break unexpectedly."
|
||||||
Loading…
Add table
Add a link
Reference in a new issue