{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; sops-nix.url = "github:Mic92/sops-nix"; sops-nix.inputs.nixpkgs.follows = "nixpkgs"; impermanence.url = "github:nix-community/impermanence"; stylix.url = "github:danth/stylix"; nix-alien.url = "github:thiagokokada/nix-alien"; nvf = { url = "github:NotAShelf/nvf"; inputs.nixpkgs.follows = "nixpkgs"; }; zen-browser = { url = "github:0xc000022070/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-minecraft.url = "git+https://codeberg.org/nix-astral/nix-minecraft.git"; # nix-minecraft.url = "github:Infinidoge/nix-minecraft"; valheim-server.url = "github:kmjayadeep/valheim-server-flake"; valheim-server.inputs.nixpkgs.follows = "nixpkgs"; nix-flatpak.url = "github:gmodena/nix-flatpak?ref=latest"; }; outputs = inputs @ { nixpkgs, home-manager, stylix, ... }: let system = "x86_64-linux"; pkgs = import inputs.nixpkgs {inherit system;}; sources = import ./_sources/generated.nix { inherit (pkgs) fetchurl fetchgit fetchFromGitHub dockerTools; }; utils = import ./utils.nix {inherit inputs system sources;}; # Discover hosts: all subdirectories of hosts/ hosts = builtins.attrNames (nixpkgs.lib.filterAttrs (_: type: type == "directory") (builtins.readDir ./hosts)); nixosConfigs = builtins.listToAttrs (map (host: { name = host; value = utils.mkHost ./hosts/${host}/configuration.nix; }) hosts); in { nixosConfigurations = nixosConfigs; homeManagerModules.default = ./modules/home; # Standalone HM configurations — one per host. # osConfig is injected so all modules using it continue to work. # Use: home-manager switch --flake '.#muon@' homeConfigurations = builtins.listToAttrs (map (host: { name = "muon@${host}"; value = utils.mkHome { hostConfig = nixosConfigs.${host}; homeFile = ./hosts/${host}/home.nix; }; }) hosts); colmena = { meta = { nixpkgs = import inputs.nixpkgs {inherit system;}; specialArgs = {inherit nixpkgs inputs system sources;}; }; # Remote host name "mups" = { name, nodes, ... }: { deployment.targetHost = "muon.host"; # SSH IP deployment.targetUser = "root"; # SSH username # modules imports = [ ./hosts/mups/configuration.nix ./modules/nixos inputs.home-manager.nixosModules.default inputs.stylix.nixosModules.stylix ]; }; # "muho" = { name, nodes, ... }: { # deployment.targetHost = "muho"; # SSH IP # deployment.targetUser = "muon"; # SSH username # # modules # imports = [ # ./hosts/muho/configuration.nix # ./modules/nixos # inputs.home-manager.nixosModules.default # inputs.stylix.nixosModules.stylix # ]; # }; }; }; }