{ description = "tux's NixOS Flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:nixos/nixpkgs/release-24.11"; nixos-wsl = { url = "github:nix-community/nixos-wsl"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-vscode-extensions = { url = "github:nix-community/nix-vscode-extensions"; inputs.nixpkgs.follows = "nixpkgs"; }; wezterm-flake = { url = "github:wez/wezterm/main?dir=nix"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; ghostty.url = "github:ghostty-org/ghostty"; nixos-hardware.url = "github:nixos/nixos-hardware"; nixpkgs-f2k.url = "github:moni-dz/nixpkgs-f2k"; nur.url = "github:nix-community/nur"; sops-nix.url = "github:Mic92/sops-nix"; impermanence.url = "github:nix-community/impermanence"; }; outputs = { self, nixpkgs, home-manager, ... } @ inputs: let inherit (self) outputs; forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" ]; username = "tux"; email = "t@tux.rs"; in { packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system}); formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra); # Custom packages and modifications, exported as overlays overlays = import ./overlays {inherit inputs;}; # NixOS configuration entrypoint # 'nixos-rebuild switch --flake .#your-hostname' nixosConfigurations = { arcturus = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs username email;}; modules = [./hosts/arcturus]; }; canopus = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs username email;}; modules = [./hosts/canopus]; }; alpha = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs username email;}; modules = [./hosts/alpha]; }; sirius = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs username email;}; modules = [./hosts/sirius]; }; vega = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs username email;}; modules = [./hosts/vega]; }; capella = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs username email;}; modules = [./hosts/capella]; }; vps = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs username email;}; modules = [./hosts/vps]; }; isoImage = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs username email;}; modules = [./hosts/isoImage]; }; }; # Standalone home-manager configuration entrypoint # home-manager switch --flake .#your-username@your-hostname' homeConfigurations = { "${username}@canopus" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.x86_64-linux; extraSpecialArgs = {inherit inputs outputs username email;}; modules = [ ./modules/home-manager ]; }; }; }; }