{ inputs = { nixpkgs-unstable.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"; # nixpkgs-unstable.url = "github:gshipunov/nixpkgs?ref=nixos-unstable"; nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz"; flake-utils.url = "github:numtide/flake-utils"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-hardware.url = "github:NixOS/nixos-hardware?ref=master"; microvm = { # url = "github:astro/microvm.nix"; url = "github:microvm-nix/microvm.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; lanzaboote = { url = "github:nix-community/lanzaboote?ref=v1.1.0"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; authentik-nix = { url = "github:nix-community/authentik-nix"; }; website = { url = "git+https://git.oxapentane.com/0xa/website.git"; flake = false; }; tmux-yank = { url = "github:tmux-plugins/tmux-yank"; flake = false; }; }; outputs = inputs@{ lanzaboote, microvm, nixos-hardware, nixpkgs, nixpkgs-unstable, sops-nix, ... }: { nixosConfigurations = let microvm-stable-list = [ "forgejo" "miniflux" "stream" "cgit" ]; microvm-unstable-list = [ "auth" "immich" ]; microvm-builder = ( nixpkgs-ver: vm-list: builtins.listToAttrs ( map (vm: { name = vm; value = nixpkgs-ver.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ sops-nix.nixosModules.sops microvm.nixosModules.microvm ./microvms/${vm} ./modules/server ./modules/wg ]; }; }) vm-list ) ); microvms = (microvm-builder nixpkgs microvm-stable-list) // (microvm-builder nixpkgs-unstable microvm-unstable-list); in microvms // { toaster = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ sops-nix.nixosModules.sops lanzaboote.nixosModules.lanzaboote nixos-hardware.nixosModules.lenovo-thinkpad-t14-amd-gen3 ./hosts/toaster ./modules/basic-tools ./modules/binary-caches.nix ./modules/devtools ./modules/emacs.nix ./modules/gnome.nix ./modules/gnupg.nix ./modules/mail ./modules/radio.nix ./modules/science.nix ./modules/tlp.nix ./modules/virtualization.nix ./modules/wg ./modules/factorio.nix ./modules/zfs-common.nix ./modules/server/ssh.nix ]; }; cloud = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ sops-nix.nixosModules.sops ./hosts/cloud ./modules/basic-tools ./modules/server ./modules/binary-caches.nix ./modules/wg ]; }; minime = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ sops-nix.nixosModules.sops microvm.nixosModules.host ./hosts/minime ./modules/basic-tools ./modules/server ./modules/binary-caches.nix ./modules/wg ./modules/zfs-common.nix { config.microvm.autostart = microvm-stable-list ++ microvm-unstable-list; } ]; }; }; }; }