Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iso: copy input closourse into iso to avoide re-download #191

Merged
merged 4 commits into from
Mar 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions doc/start/iso.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,18 @@ _Note: the [static link-local IPv6 address][staticLLA] and [MulticastDNS][mDNS]
configured on the live installer. If you wish to enable [MulticastDNS][mDNS]
for your environment, you ought to configure that in a regular [profile](../../profiles)._

## ISO image nix store & cache

The iso image holds the store to the live environment and _also_ acts as a binay cache
to the installer. To considerably speed up things, the image already includes all flake
`inputs` as well as the `devshell` closures.

While you _could_ provision any machine with a single stick, a bespoke iso maximises
those local cache hits.

For hosts that don't differ too much, a common usb stick might be ok, whereas when
there are bigger differences, a bespoke usb stick will be considerably faster.

## EUI-64 LLA & Host Identity

The iso's IPv6 Link Local Address (LLA) is configured with a static 64-bit Extended
Expand Down Expand Up @@ -97,11 +109,6 @@ $ flk install NixOS --impure # use same host as above

<!-- TODO: find out why --impure is necesary / PRs welcome! -->

_Note: You _could_ install another machine than the one your iso was built for,
but the iso doesn't carry all the necesary build artifacts so the target would
start to build the missing parts on demand instead of substituting them from
the iso itself._

[manual]: https://nixos.org/manual/nixos/stable/index.html#sec-installation-partitioning
[mDNS]: https://en.wikipedia.org/wiki/Multicast_DNS
[NDP]: https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol
Expand Down
2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
overlay = import ./pkgs;
overlays = lib.pathsToImportedAttrs (lib.pathsIn ./overlays);

lib = import ./lib { inherit nixos pkgs self; };
lib = import ./lib { inherit nixos pkgs self inputs; };

templates.flk.path = ./.;
templates.flk.description = "flk template";
Expand Down
6 changes: 5 additions & 1 deletion lib/devos/devosSystem.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ lib, nixos, self, ... }:
{ lib, nixos, self, inputs, ... }:

{ modules, ... } @ args:
lib.nixosSystem (args // {
Expand All @@ -17,6 +17,10 @@ lib.nixosSystem (args // {
source = self;
target = "/devos/";
}];
nix.registry = lib.mapAttrs (n: v: { flake = v; }) inputs;
isoImage.storeContents = [
self.devShell.${config.nixpkgs.system}
];
# confilcts with networking.wireless which might be slightly
# more useful on a stick
networking.networkmanager.enable = lib.mkForce false;
Expand Down