···6161 };
6262 };
63636464- # This one can be included on igloo host to make USB/VM installers.
6464+ # This one can be included on a host to make USB/VM installers.
6565 vm-bootable =
6666- { host, ... }:
6666+ { ... }:
6767 {
6868 nixos =
6969 { modulesPath, ... }:
7070 {
7171- networking.hostName = host.hostName;
7271 imports = [ (modulesPath + "/installer/cd-dvd/installation-cd-graphical-base.nix") ];
7372 };
7473 };
7574 };
76757777- den.aspects.igloo.includes =
7878- let
7979- # an small parametric aspect that needs access to contextual host data.
8080- hostname =
8181- { host, ... }:
8282- {
8383- nixos.networking.hostName = host.name;
8484- };
8585- in
8686- [
8787- hostname
8888- den.aspects.common._.vm-bootable
8989- den.aspects.common._.xfce-desktop
9090- ];
7676+ den.aspects.igloo.includes = [
7777+ den.aspects.common._.vm-bootable
7878+ den.aspects.common._.xfce-desktop
7979+ ];
91809281 # NixOS configuration for igloo.
9382 den.aspects.igloo.nixos =
···144133145134 # Disable booting when running on CI on all NixOS hosts.
146135 (if config ? _module.args.CI then den.aspects.ci-no-boot else { })
136136+137137+ # NOTE: be cautious when adding fully parametric functions to defaults.
138138+ # defaults are included on EVERY host/user/home, and IF you are not careful
139139+ # you could be duplicating config values. For example:
140140+ #
141141+ # # This will append 42 into foo option for the {host} and for EVERY {host,user}
142142+ # ({ host, ... }: { nixos.foo = [ 42 ]; }) # DO-NOT-DO-THIS.
143143+ #
144144+ # # Instead try to be explicit if a function is intended for ONLY { host }.
145145+ (den.lib.take.exactly (
146146+ { host }:
147147+ {
148148+ nixos.networking.hostName = host.hostName;
149149+ }
150150+ ))
151151+147152 ];
148153149154 den.aspects.ci-no-boot = {