{ description = "n8 NixOS Configuration Flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:/nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; nixvim = { url = "github:/nix-community/nixvim/nixos-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; webtray = { url = "git+https://git.nathanreiner.xyz/webtray"; inputs.nixpkgs.follows = "nixpkgs"; }; wofi-pass = { url = "git+https://git.nathanreiner.xyz/wofi-pass"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, nixpkgs-unstable, webtray, ... }@attrs: let system = "x86_64-linux"; overlay-unstable = final: prev: { unstable = import nixpkgs-unstable { inherit system; config.allowUnfree = true; }; }; host-config = name: nixpkgs.lib.nixosSystem { inherit system; specialArgs = attrs; modules = [ ( { ... }: { nixpkgs.overlays = [ overlay-unstable webtray.overlays.default ]; nixpkgs.config.allowUnfree = true; } ) ./hosts/${name} ./common ]; }; hosts = [ "template" "nixedo" "workstation" ]; in { nixosConfigurations = builtins.listToAttrs ( map (n: { name = n; value = host-config n; }) hosts ); }; }