{
  description = "Home Manager configuration";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    neovim = {
      url = "github:neovim/neovim?dir=contrib";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    nil.url = "github:oxalica/nil";
  };

  outputs = { nixpkgs, home-manager, neovim, ... }:
    let
      system = "x86_64-linux";                # change your system type here
      user = "nikos";                         # change your user here
      dotfilesHome = "/home/nikos/.dotfiles"; # specify your dotfiles path
      pkgs = nixpkgs.legacyPackages.${system};
    in
    {
      homeConfigurations.${user} = home-manager.lib.homeManagerConfiguration {
        inherit pkgs;

        # Specify your home configuration modules here, for example,
        # the path to your home.nix.
        modules = [
          ./home.nix

          {
            nixpkgs.overlays = [
              (final: prev: {
                neovim = neovim.packages.${system}.neovim;
              })
            ];
          }
        ];

        extraSpecialArgs = { extra = { inherit user dotfilesHome; }; };
      };
    };
}