{
  description = "Launchpad flake";

  inputs = {
    # Switched to unstable 10/13/24 Generation 109 and below stable
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
    legacy.url = "github:NixOS/nixpkgs-channels";

    # Home manager
    home-manager.url = "github:nix-community/home-manager/release-25.05";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";

    flake-utils.url = "github:numtide/flake-utils";

    flake-compat = {
      url = "github:edolstra/flake-compat";
      flake = false;
    };

    base16.url = "github:SenchoPens/base16.nix";
    nix-colors.url = "github:misterio77/nix-colors";
    tt-schemes = {
      url = "github:tinted-theming/schemes";
      flake = false;
    };
    base16-vim = {
      url = "github:tinted-theming/base16-vim";
      flake = false;
    };

    # Zen Browser
    zen-browser.url = "github:youwen5/zen-browser-flake";
    zen-browser.inputs.nixpkgs.follows = "nixpkgs";

    # hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
    # hyprland.url = "github:hyprwm/Hyprland";

    agenix.url = "github:ryantm/agenix";

    # PIA
    pia.url = "github:Fuwn/pia.nix";
    pia.inputs.nixpkgs.follows = "nixpkgs";

    musnix.url = "github:musnix/musnix";
  };

  outputs = {
    self,
    nixpkgs,
    nixpkgs-unstable,
    legacy,
    home-manager,
    flake-utils,
    flake-compat,
    zen-browser,
    nix-colors,
    base16,
    agenix,
    musnix,
    pia,
     ...
  } @ inputs:
  let
    inherit (self) outputs;
    system = "x86_64-linux";
    lib = nixpkgs.lib;  # Import lib here explicitly from nixpkgs

    systems = [
      "aarch64-linux"
      "i686-linux"
      "x86_64-linux"
      "aarch64-darwin"
      "x86_64-darwin"
    ];
    systemSettings = {
      hostname = "launchpad";
      profile = "Professional";
      timezone = "America/Los_Angeles";
      locale = "en_US.UTF-8";
      gpuType = "nvidia";
      version = "24.11";
      name = "Vicuña";
    };
    userSettings = {
      username = "wayne";
      name = "wayne";
      email = "...";
      dotfilesDir = "~/.dotfiles";
      term = "tmux";
      font = "JetBrainsMono Nerd Font";
      editor = "lvim"; # Default editor;
    };
    forAllSystems = nixpkgs.lib.genAttrs systems;
  in {
    packages = forAllSystems (system: nixpkgs.legacyPackages.${system});
    formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);

    nixosConfigurations = {
      launchpad = nixpkgs.lib.nixosSystem {
        specialArgs = {inherit inputs outputs systemSettings userSettings lib agenix pia ;};
        modules = [
          musnix.nixosModules.musnix
          agenix.nixosModules.default
          pia.nixosModules."x86_64-linux".default

          ./configuration.nix
        ];
      };
    };

    homeConfigurations = {
        wayne = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
        extraSpecialArgs = {inherit inputs outputs systemSettings userSettings zen-browser nix-colors ;};
        modules = [
          base16.nixosModule
          # set system's scheme to nord by setting `config.scheme`
          { scheme = "${inputs.tt-schemes}/base16/nord.yaml"; }
          # import `theming.nix`, we will write it in the next, final, step
          # ./theming.nix
          ./hm/home.nix
        ];
      };
    };
  };
}
