{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nixvim = { url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; nixcord = { url = "github:kaylorben/nixcord"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-flatpak.url = "github:gmodena/nix-flatpak"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; lanzaboote = { url = "github:nix-community/lanzaboote"; inputs = { nixpkgs.follows = "nixpkgs"; rust-overlay.follows = "rust-overlay"; }; }; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-wsl = { url = "github:nix-community/NixOS-WSL/main"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, home-manager, ... } @ inputs: let rootPath = ./.; systems = [ "x86_64-linux" "aarch64-linux" ]; forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system); in { nixosConfigurations = { nixos = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs rootPath; }; modules = [ ./hosts/nixos/configuration.nix ]; }; wsl = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs rootPath; }; modules = [ ./hosts/wsl/configuration.nix ]; }; vps = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs rootPath; }; modules = [ ./hosts/vps/configuration.nix ]; }; }; homeConfigurations = { "toast@nixos" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.x86_64-linux; extraSpecialArgs = { inherit inputs rootPath; }; modules = [ ./home/hosts/nixos.nix ]; }; "toast@wsl" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.x86_64-linux; extraSpecialArgs = { inherit inputs rootPath; }; modules = [ ./home/hosts/wsl.nix ]; }; "android@y2q" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.aarch64-linux; extraSpecialArgs = { inherit inputs rootPath; }; modules = [ ./home/hosts/y2q.nix ]; }; }; devShells = forAllSystems (system: let pkgs = import nixpkgs { inherit system; }; in { default = pkgs.mkShell { buildInputs = [ pkgs.nix pkgs.home-manager pkgs.sops ]; shellHook = '' HOST=$(hostname) deploy-nixos() { sudo nixos-rebuild switch --flake .#$HOST "$@" } deploy-vps() { nixos-rebuild switch --flake .#vps --target-host root@vps "$@" } deploy-home() { home-manager switch --flake .#$USER@$HOST } ''; }; } ); }; }