started to create an installer image (gum is AWESOME)
This commit is contained in:
parent
0255a153ca
commit
112fc3ddb3
3 changed files with 82 additions and 9 deletions
|
@ -99,6 +99,11 @@
|
||||||
flux.overlays.default
|
flux.overlays.default
|
||||||
];
|
];
|
||||||
|
|
||||||
|
system.hosts.varda.modules = with inputs; [
|
||||||
|
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix"
|
||||||
|
"${nixpkgs}/nixos/modules/installer/cd-dvd/channel.nix"
|
||||||
|
];
|
||||||
|
|
||||||
homes.modules = with inputs; [
|
homes.modules = with inputs; [
|
||||||
stylix.homeModules.stylix
|
stylix.homeModules.stylix
|
||||||
plasma-manager.homeManagerModules.plasma-manager
|
plasma-manager.homeManagerModules.plasma-manager
|
||||||
|
|
|
@ -15,6 +15,8 @@ in
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.nixVersions.latest;
|
package = pkgs.nixVersions.latest;
|
||||||
|
|
||||||
|
extraOptions = "experimental-features = nix-command flakes";
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
allowed-users = [ "@wheel" ];
|
allowed-users = [ "@wheel" ];
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) mkForce;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
|
||||||
"${pkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix"
|
|
||||||
"${pkgs}/nixos/modules/installer/cd-dvd/channel.nix"
|
|
||||||
];
|
|
||||||
|
|
||||||
sneeuwvlok = {
|
sneeuwvlok = {
|
||||||
services = {
|
services = {
|
||||||
networking.ssh.enable = true;
|
networking.ssh.enable = true;
|
||||||
|
@ -17,14 +15,82 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
supportedFilesystems = mkForce ["btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs"];
|
||||||
supportedFilesystems = lib.mkForce ["btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs"];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
qemuGuest.enable = true;
|
qemuGuest.enable = true;
|
||||||
openssh.settings.PermitRootLogin = "yes";
|
openssh.settings.PermitRootLogin = mkForce "yes";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# sbctl
|
||||||
|
git
|
||||||
|
gum
|
||||||
|
(
|
||||||
|
writeShellScriptBin "rescue" ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
gum "device name"
|
||||||
|
|
||||||
|
sudo mkdir -p /mnt/{dev,proc,sys,boot}
|
||||||
|
sudo mount -o bind /dev /mnt/dev
|
||||||
|
sudo mount -o bind /proc /mnt/proc
|
||||||
|
sudo mount -o bind /sys /mnt/sys
|
||||||
|
sudo chroot /mnt /nix/var/nix/profiles/system/activate
|
||||||
|
sudo chroot /mnt /run/current-system/sw/bin/bash
|
||||||
|
|
||||||
|
sudo mount /dev/vda1 /mnt/boot
|
||||||
|
sudo cryptsetup open /dev/vda3 cryptroot
|
||||||
|
sudo mount /dev/mapper/cryptroot /mnt/
|
||||||
|
|
||||||
|
sudo nixos-enter
|
||||||
|
''
|
||||||
|
)
|
||||||
|
(
|
||||||
|
writeShellScriptBin "nix_installer"
|
||||||
|
''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
|
echo "ERROR! $(basename "$0") should be run as a regular user"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$HOME/github/sneeuwvlok/.git" ]; then
|
||||||
|
git clone https://github.com/chris-kruining/sneeuwvlok.git "$HOME/github/sneeuwvlok"
|
||||||
|
fi
|
||||||
|
|
||||||
|
TARGET_HOST=$(ls -1 ~/github/sneeuwvlok/systems/*/default.nix | cut -d'/' -f6 | grep -v iso | gum choose)
|
||||||
|
|
||||||
|
if [ ! -e "$HOME/github/sneeuwvlok/hosts/$TARGET_HOST/disks.nix" ]; then
|
||||||
|
echo "ERROR! $(basename "$0") could not find the required $HOME/github/sneeuwvlok/hosts/$TARGET_HOST/disks.nix"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
gum confirm --default=false \
|
||||||
|
"🔥 🔥 🔥 WARNING!!!! This will ERASE ALL DATA on the disk $TARGET_HOST. Are you sure you want to continue?"
|
||||||
|
|
||||||
|
echo "Partitioning Disks"
|
||||||
|
sudo nix run github:nix-community/disko \
|
||||||
|
--extra-experimental-features "nix-command flakes" \
|
||||||
|
--no-write-lock-file \
|
||||||
|
-- \
|
||||||
|
--mode zap_create_mount \
|
||||||
|
"$HOME/dotfiles/hosts/$TARGET_HOST/disks.nix"
|
||||||
|
|
||||||
|
#echo "Creating blank volume"
|
||||||
|
#sudo btrfs subvolume snapshot -r /mnt/ /mnt/root-blank
|
||||||
|
|
||||||
|
#echo "Set up attic binary cache"
|
||||||
|
#attic use prod || true
|
||||||
|
|
||||||
|
sudo nixos-install --flake "$HOME/dotfiles#$TARGET_HOST"
|
||||||
|
''
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
system.stateVersion = "23.11";
|
system.stateVersion = "23.11";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue