summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nixos/nixos-generate/README.md20
-rw-r--r--nixos/nixos-generate/config-extra.nix9
-rw-r--r--nixos/nixos-generate/config-iso.nix34
-rw-r--r--nixos/nixos-generate/miguel-quick-install.sh42
-rw-r--r--nixos/nixos-generate/nixops.nix16
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";
+ };
+}