From 56f42e96f73f4a5af646e6e07a681211a52aa66f Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Sun, 16 Sep 2018 18:21:16 +0200 Subject: [PATCH] nixos-config: add vm-install-iso --- nixos-configuration/vm-install-iso/Justfile | 2 + nixos-configuration/vm-install-iso/iso.nix | 92 +++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 nixos-configuration/vm-install-iso/Justfile create mode 100644 nixos-configuration/vm-install-iso/iso.nix diff --git a/nixos-configuration/vm-install-iso/Justfile b/nixos-configuration/vm-install-iso/Justfile new file mode 100644 index 0000000..bcd3c66 --- /dev/null +++ b/nixos-configuration/vm-install-iso/Justfile @@ -0,0 +1,2 @@ +build: + nix-build '' -A config.system.build.isoImage -I nixos-config=iso.nix diff --git a/nixos-configuration/vm-install-iso/iso.nix b/nixos-configuration/vm-install-iso/iso.nix new file mode 100644 index 0000000..a93f3d9 --- /dev/null +++ b/nixos-configuration/vm-install-iso/iso.nix @@ -0,0 +1,92 @@ +# This module defines a small NixOS installation CD. It does not +# contain any graphical stuff. +{config, pkgs, lib, ...}: + +let nixos-init-script = '' + #!${pkgs.stdenv.shell} + + export HOME=/root + export PATH=${pkgs.lib.makeBinPath [ + config.nix.package pkgs.systemd pkgs.gnugrep pkgs.gnused config.system.build.nixos-rebuild + config.system.build.nixos-install pkgs.utillinux pkgs.e2fsprogs pkgs.coreutils pkgs.hdparm + ]}:$PATH + export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels + + set -xe + + fdisk -w always -W always /dev/vda < + + # Provide an initial copy of the NixOS channel so that the user + # doesn't need to run "nix-channel --update" first. + # + ]; + + isoImage.isoName = lib.mkForce "${config.isoImage.isoBaseName}-${pkgs.stdenv.hostPlatform.system}.iso"; + boot.loader.timeout = lib.mkForce 0; + boot.postBootCommands = '' + ''; + + environment.systemPackages = []; + + users.users.root = { + openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4RFtHz0sE5y0AyZZm/tH7bBBgsx55gLPt5tGsl9yZlOzih6n4qbJE/9OOdwnOY2AHRe2lrlTekbW5ewWSBBCbiBE3Vux86sLgy7LM9zoKaNC+E3hmxaoS9SExn0BTkb3kNlOcj2k6UyJhkZWEsqVMV5C21R8EWmMlLY/qm3AxptNjOyzKDwNX2zlHZ5IyjgzO4ZjIxjawmJlUrVEn7/m+M7qK3I1Tyg/ZvDSfmxVJS97sVzseYE0rVwLEWJQOnHh0wnfl27smr2McAB7Cy6sxKyPKvEGyXbNqqb8fqk4okZlRRxhq/XkKlC7IZr+uqYxlL4HN8vjkTRNlgenDUSVT cardno:000604870382" ]; + }; + + services.gpm.enable = true; + systemd.services.sshd.wantedBy = lib.mkForce [ "multi-user.target" ]; + + systemd.services.nixos-init = { + script = nixos-init-script; + path = with pkgs; [ ]; + + description = "Initialize /dev/vda from configuration.nix found at /dev/vdb"; + enable = true; + + wantedBy = [ "multi-user.target" ]; + after = [ "multi-user.target" ]; + requires = [ "network-online.target" ]; + + restartIfChanged = false; + unitConfig.X-StopOnRemoval = false; + + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + }; +}