From dfe95b66b0264f9601c6319c09d730fd809586cf Mon Sep 17 00:00:00 2001 From: William P Date: Wed, 23 Jul 2025 13:31:38 -0400 Subject: [PATCH] create bootable nixos system --- flake.lock | 37 +++++++++++++++++++++++++++++++++++++ flake.nix | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/flake.lock b/flake.lock index ddff142..369d8bd 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,41 @@ { "nodes": { + "nixlib": { + "locked": { + "lastModified": 1736643958, + "narHash": "sha256-tmpqTSWVRJVhpvfSN9KXBvKEXplrwKnSZNAoNPf/S/s=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "1418bc28a52126761c02dd3d89b2d8ca0f521181", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixos-generators": { + "inputs": { + "nixlib": "nixlib", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1751903740, + "narHash": "sha256-PeSkNMvkpEvts+9DjFiop1iT2JuBpyknmBUs0Un0a4I=", + "owner": "nix-community", + "repo": "nixos-generators", + "rev": "032decf9db65efed428afd2fa39d80f7089085eb", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixos-generators", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1751637120, @@ -17,6 +53,7 @@ }, "root": { "inputs": { + "nixos-generators": "nixos-generators", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index 95e087d..fa404c7 100644 --- a/flake.nix +++ b/flake.nix @@ -3,9 +3,13 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; + nixos-generators = { + url = "github:nix-community/nixos-generators"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { self, nixpkgs }: + outputs = { self, nixpkgs, nixos-generators, ... }: let lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101"; version = builtins.substring 0 8 lastModifiedDate; @@ -25,6 +29,34 @@ src = ./client; vendorHash = null; }; + boot-env-iso = nixos-generators.nixosGenerate { + inherit system; + format = "iso"; + modules = [ + ({modulesPath, ...}: { + imports = [ + (modulesPath + "/profiles/minimal.nix") + (modulesPath + "/profiles/base.nix") + ]; + + # Disable unneeded features + ## boot.loader.grub.enable = true; + ## boot.loader.grub.device = "nodev"; + documentation.enable = false; + fonts.fontconfig.enable = false; + services.udisks2.enable = false; + + services.getty.autologinUser = "root"; + + environment.etc."profile.local".text = '' + # Minimal shell prompt + echo "It works!" + ''; + + isoImage.squashfsCompression = "gzip -Xcompression-level 1"; + }) + ]; + }; }); devShells = forAllSystems (system: