diff --git a/nixos-bootstrap/README.md b/nixos-bootstrap/README.md new file mode 100644 index 0000000..4d0f9c2 --- /dev/null +++ b/nixos-bootstrap/README.md @@ -0,0 +1,3 @@ +# Bootstrap ISO for NixOS + +From the root directory, run `just iso` to generate the ISO file diff --git a/nixos-bootstrap/flake.lock b/nixos-bootstrap/flake.lock new file mode 100644 index 0000000..d53aa6d --- /dev/null +++ b/nixos-bootstrap/flake.lock @@ -0,0 +1,301 @@ +{ + "nodes": { + "disko": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1750903843, + "narHash": "sha256-Ng9+f0H5/dW+mq/XOKvB9uwvGbsuiiO6HrPdAcVglCs=", + "owner": "nix-community", + "repo": "disko", + "rev": "83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "mnw": { + "locked": { + "lastModified": 1742255973, + "narHash": "sha256-XfEGVKatTgEMMOVb4SNp1LYLQOSzzrFTDMVDTZFyMVE=", + "owner": "Gerg-L", + "repo": "mnw", + "rev": "b982dbd5e6d55d4438832b3567c09bc2a129649d", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "mnw", + "type": "github" + } + }, + "nil": { + "inputs": { + "flake-utils": [ + "nvix", + "nvf", + "flake-utils" + ], + "nixpkgs": [ + "nvix", + "nvf", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1741118843, + "narHash": "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=", + "owner": "oxalica", + "repo": "nil", + "rev": "577d160da311cc7f5042038456a0713e9863d09e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "nil", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1750836778, + "narHash": "sha256-sRLyRiC7TezRbbjGJwUFOgb2xMbSr3wQ0oJKfYlQ6s0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d7bb1922f0bb3d0c990f56f9cdb767fdb20a5f22", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1740877520, + "narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "147dee35aab2193b174e4c0868bd80ead5ce755c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1750838302, + "narHash": "sha256-aVkL3/yu50oQzi2YuKo0ceiCypVZpZXYd2P2p1FMJM4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "7284e2decc982b81a296ab35aa46e804baaa1cfe", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1742288794, + "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1741865919, + "narHash": "sha256-4thdbnP6dlbdq+qZWTsm4ffAwoS8Tiq1YResB+RP6WE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "573c650e8a14b2faa0041645ab18aed7e60f0c9a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nmd": { + "flake": false, + "locked": { + "lastModified": 1705050560, + "narHash": "sha256-x3zzcdvhJpodsmdjqB4t5mkVW22V3wqHLOun0KRBzUI=", + "owner": "~rycee", + "repo": "nmd", + "rev": "66d9334933119c36f91a78d565c152a4fdc8d3d3", + "type": "sourcehut" + }, + "original": { + "owner": "~rycee", + "repo": "nmd", + "type": "sourcehut" + } + }, + "nvf": { + "inputs": { + "flake-parts": "flake-parts", + "flake-utils": "flake-utils", + "mnw": "mnw", + "nil": "nil", + "nixpkgs": "nixpkgs_4", + "nmd": "nmd", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1742471089, + "narHash": "sha256-wiGkhJcDdg2/wy4QxaudNsU98y7CzzZpB6pnjUrNNDQ=", + "owner": "notashelf", + "repo": "nvf", + "rev": "3a28d05684f7f4e314eb4e56a5af624b648ab278", + "type": "github" + }, + "original": { + "owner": "notashelf", + "repo": "nvf", + "type": "github" + } + }, + "nvix": { + "inputs": { + "nixpkgs": "nixpkgs_3", + "nvf": "nvf" + }, + "locked": { + "lastModified": 1743793029, + "narHash": "sha256-Bc1PGjBv8qUXimCaBFN0OmpWpu6JF2ku+NlN5Am6gH0=", + "owner": "TheWanderingCrow", + "repo": "nvix", + "rev": "1c204563ef9bff09c8b1571e038185d2f38fdf36", + "type": "github" + }, + "original": { + "owner": "TheWanderingCrow", + "repo": "nvix", + "type": "github" + } + }, + "root": { + "inputs": { + "disko": "disko", + "nixpkgs": "nixpkgs_2", + "nvix": "nvix" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "nvix", + "nvf", + "nil", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741055476, + "narHash": "sha256-52vwEV0oS2lCnx3c/alOFGglujZTLmObit7K8VblnS8=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "aefb7017d710f150970299685e8d8b549d653649", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nixos-bootstrap/flake.nix b/nixos-bootstrap/flake.nix new file mode 100644 index 0000000..eb9a07a --- /dev/null +++ b/nixos-bootstrap/flake.nix @@ -0,0 +1,24 @@ +{ + description = "Minimal installer/recovery ISO"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; + disko.url = "github:nix-community/disko"; + nvix.url = "github:TheWanderingCrow/nvix"; + }; + + outputs = { + self, + nixpkgs, + ... + } @ inputs: { + nixosConfigurations = { + ISO = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs;}; + modules = [ + ./installer-config.nix + ]; + }; + }; + }; +} diff --git a/nixos-bootstrap/installer-config.nix b/nixos-bootstrap/installer-config.nix new file mode 100644 index 0000000..baa649e --- /dev/null +++ b/nixos-bootstrap/installer-config.nix @@ -0,0 +1,25 @@ +{ + config, + inputs, + pkgs, + modulesPath, + lib, + ... +}: { + imports = [ + inputs.disko.nixosModules.disko + "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix" + ]; + + environment.systemPackages = with pkgs; [ + inputs.nvix.packages.${pkgs.system}.default + vim + git + just + curl + wget + ]; + + nixpkgs.hostPlatform = "x86_64-linux"; + boot.supportedFilesystems = lib.mkForce ["zfs" "btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs"]; +}