diff options
| author | Miguel <m.i@gmx.at> | 2021-11-07 00:57:36 +0100 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2021-11-07 00:57:36 +0100 |
| commit | 67e2d3bd1bc6fa102414cfa82aa3bac70b11d8ab (patch) | |
| tree | 2e9710ad53fcce846394852450e404aa30fc85d3 | |
| parent | 7d82a05300aff62c16c612904c9a6e9311ccb71f (diff) | |
playing with nixos-generate and nixops
| -rw-r--r-- | nixos/nixos-generate/README.md | 20 | ||||
| -rw-r--r-- | nixos/nixos-generate/config-extra.nix | 9 | ||||
| -rw-r--r-- | nixos/nixos-generate/config-iso.nix | 34 | ||||
| -rw-r--r-- | nixos/nixos-generate/miguel-quick-install.sh | 42 | ||||
| -rw-r--r-- | nixos/nixos-generate/nixops.nix | 16 |
5 files changed, 121 insertions, 0 deletions
diff --git a/nixos/nixos-generate/README.md b/nixos/nixos-generate/README.md new file mode 100644 index 0000000..8519b4f --- /dev/null +++ b/nixos/nixos-generate/README.md @@ -0,0 +1,20 @@ +WARNING: Be careful about assumptions made by this script, +as /dev/sda beeing the target disk etc.. + +nix-shell -p nixos-generators nixops + +Adapt nixos-iso.nix/ nixos-extra.nix (public key & /dev/sdX) + +cp $(nixos-generate -c config-iso.nix -f iso) my-nixos.iso + +boot the iso in fresh vm (e.g. 25G HDD, 1024 RAM) + +ssh into vm + +run : miguel-quick-install [desired-hostname] +reboot into new nixos + +back on host: +adapt nixops.nix + +run: nixops deploy .. etc diff --git a/nixos/nixos-generate/config-extra.nix b/nixos/nixos-generate/config-extra.nix new file mode 100644 index 0000000..60111be --- /dev/null +++ b/nixos/nixos-generate/config-extra.nix @@ -0,0 +1,9 @@ +{ + imports = [./config-iso.nix]; + fileSystems."/" = { + device="/dev/sda1"; + fsType="ext4"; + }; + + boot.loader.grub.enable = true; +} diff --git a/nixos/nixos-generate/config-iso.nix b/nixos/nixos-generate/config-iso.nix new file mode 100644 index 0000000..e31915b --- /dev/null +++ b/nixos/nixos-generate/config-iso.nix @@ -0,0 +1,34 @@ +# This config generates a basic NixOS ISO meant to quickly bootstrap a NixOs +# system with a single custom command: miguel-quick-install [hostname] +# +# Build ISO like that: cp ${nixos-generate -c config-iso.nix -f iso} my-nixos.iso +# + +{config,pkgs,...}: + +# FIXME: use proper derivation instead of this custom mess. +let miguel-quick-installer = + with pkgs; derivation{ name = "miguel-quick-install"; + builder = "${bash}/bin/bash"; + bash = bash; + args = [./miguel-quick-install.sh]; + coreutils = coreutils; + configextra = ./config-extra.nix; + configiso = ./config-iso.nix; + system = builtins.currentSystem; }; +in { + boot.initrd.availableKernelModules = ["ata_piix" "floppy" "sd_mod" "sr_mod"]; + virtualisation.hypervGuest.enable = true; + + boot.loader.grub.version = 2; + boot.loader.grub.device = "/dev/sda"; + + environment.systemPackages = with pkgs; [mc vim miguel-quick-installer parted]; + + services.openssh = { + enable = true; + permitRootLogin = "prohibit-password"; + passwordAuthentication = false; + }; + users.users.root.openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCpDKWgowf2Gl83b7LsLzwpeKteLWeEE+B3ukE23XAiPmrYnD552ufUnYmid4yItWhNRY4SVsLMCfrdQj8+wftVHNXwx+Y559djAYjkm7qmtBFTvUNPSgtHkX4eoLA79nCPXzd69SS3qkqM2oLGaNKJV9lqxUcaTo0KzKOy5wy7oxQau3w5zCN/kHtxU2ktXGKB6oGocfLi87jefelmoruxo604itpduq78cAhd5fcZy/uZLzNTWf1GdLuqy7ep68txfeRknJ3TKpbaAk+YOlv4AvA23nD7V1GAn757fwv6JpiGe6/VvzkrR8YFLA8sA3kC7Ev8QD1dAkK9S0jMuLzRdAtMWezr7SXNHVEFZ1MLXAbECVkqXOkM0toK8F5ulMfY5E40RWKkawZOr6iB+tHa199WphSgjhtm9frywBMBE/3J5i4purOhZHemmmxJyv4fmSKW42toyc+d6lj0fWBFo3QYWSZPOIpsYhAo4jRw+LHlYwJr7bNIPxKEjutSM5sbacM2Om0GYU+SfHnX4+P5GYaSoFY5SfsjWCpSaK98ngKuKHlBuK2oQczhmFJAFQsBQinpoTF63qfzDpUyfmquvOaDtV9GVMn3AsZemVS+yVXWHHT4ZdXYvSsbgujlM/bUyH/eGLBQnkWBU74W2OxusyFkyp8k7zLwxgj0/hfWew== Miguel_User@DESKTOP-4NH8M69" ]; +} diff --git a/nixos/nixos-generate/miguel-quick-install.sh b/nixos/nixos-generate/miguel-quick-install.sh new file mode 100644 index 0000000..369142b --- /dev/null +++ b/nixos/nixos-generate/miguel-quick-install.sh @@ -0,0 +1,42 @@ +PATH="$coreutils/bin" +mkdir -p $out/bin +cat >> $out/bin/miguel-quick-install << EOL +#!$bash/bin/bash + +set -e + +echo +echo ========================================================================= +echo -== Welcome to Miguel's Custom NixOS Quick Install ... Please Standby ==- +echo ========================================================================= +echo + +echo 1. Create Target Partitions +parted /dev/sda -- mklabel msdos +parted /dev/sda -- mkpart primary 1MiB -8GiB +mkfs.ext4 -L nixos /dev/sda1 + +echo 2. Mount Target Partitions +mkdir /mnt +mount /dev/sda1 /mnt + +echo 3. Update Nix Channel +nix-channel --update + +echo 4. Generate Configs +nixos-generate-config --root /mnt +cp $configextra /mnt/etc/nixos/configuration.nix +cp $configextra /mnt/etc/nixos/config-extra.nix +cp $configiso /mnt/etc/nixos/config-iso.nix +cp $0 /mnt/etc/nixos/miguel-quick-install.sh + +echo 5. Start NixOS Installer! +nixos-install --no-root-passwd + +echo 6. Finished +echo Please remove the installation media and reboot into your fresh NixOS! + +#reboot + +EOL +chmod +x $out/bin/miguel-quick-install diff --git a/nixos/nixos-generate/nixops.nix b/nixos/nixos-generate/nixops.nix new file mode 100644 index 0000000..08b5fd9 --- /dev/null +++ b/nixos/nixos-generate/nixops.nix @@ -0,0 +1,16 @@ +{ + network.description = "My first nix cluster"; + network.enableRollback = true; + + nixos-01 = {config, pkgs,...}: + { + imports = [ ./config-extra.nix ]; + environment.systemPackages = with pkgs; [mc]; + deployment.targetHost = "192.168.0.145"; + }; + + nixos-02 = { + imports = [ ./config-extra.nix ]; + deployment.targetHost = "192.168.0.146"; + }; +} |
