{
  description = "My NixOS and home-manager configs";

  inputs = {
    # Nixpkgs
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";

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

    # Zen browser
    zen-browser.url = "github:0xc000022070/zen-browser-flake";

    # Grayjay
    grayjay.url = "github:rishabh5321/grayjay-flake";

    # AGS
    ags.url = "github:Aylur/ags";
    ags.inputs.nixpkgs.follows = "nixpkgs";

    # Neovim plugins not in nixpkgs
    plugin-rainbow-delimiters-nvim.url = "gitlab:HiPhish/rainbow-delimiters.nvim";
    plugin-rainbow-delimiters-nvim.flake = false;

    plugin-undotree-nvim.url = "github:jiaoshijie/undotree";
    plugin-undotree-nvim.flake = false;

    plugin-harpoon1.url = "github:ThePrimeagen/harpoon";
    plugin-harpoon1.flake = false;

    hyprland.url = "github:hyprwm/hyprland";

    nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
    nixos-cosmic.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs =
    {
      self,
      nixpkgs,
      home-manager,
      ...
    }@inputs:
    let
      inherit (self) outputs;
    in
    {
      overlays = import ./overlays { inherit inputs; };

      nixosConfigurations = {
        "kalle-pc" = nixpkgs.lib.nixosSystem {
          specialArgs = {
            inherit inputs outputs;
          };
          modules = [ ./hosts/kalle-pc ];
        };
        "kalle-laptop" = nixpkgs.lib.nixosSystem {
          specialArgs = {
            inherit inputs outputs;
          };
          modules = [ ./hosts/kalle-laptop ];
        };
      };
    };
}