···145145> the configuration is now structured around features, not hostnames. It is a shift in the axis of composition, essentially an inversion of configuration control. What may seem like a subtle change at first has profound implications for flexibility, reuse, and maintainability.
146146147147You will notice that you start naming your files around the `aspect`s (features) they define
148148-instead of where they are applied.
148148+instead of where they are specifically applied.
149149+150150+In the following example, the `scrolling-desktop` aspect is included accross different operating systems:
151151+On Linux, `flake.modules.nixos.scrolling-destop` might enable [`niri`](https://variety4me.github.io/niri_docs/) and on MacOS, `flake.modules.darwin.scrolling-desktop` might enable [`PaperWM.spoon`](https://github.com/mogenson/PaperWM.spoon).
152152+153153+```nix
154154+# ./modules/hosts.nix
155155+{ inputs, ... }:
156156+{
157157+ flake.nixosConfigurations.my-host = inputs.nixpkgs.lib.nixosSystem {
158158+ system = "aarm64-linux";
159159+ modules = with inputs.self.modules.nixos; [ ai ssh vpn mac-like-keyboard scrolling-desktop ];
160160+ };
161161+ flake.darwinConfigurations.my-host = inputs.nix-darwin.lib.darwinSystem {
162162+ system = "aarm64-darwin";
163163+ modules = with inputs.self.modules.darwin; [ ai ssh vpn scrolling-desktop ];
164164+ };
165165+}
166166+```
149167150168### Feature _Closures_
151169