{
  description = "Nixos config flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    home-manager.url = "github:nix-community/home-manager";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";

    nvf.url = "github:notashelf/nvf";
    stylix.url = "github:danth/stylix";

    milk-grub-theme.url = "github:gemakfy/MilkGrub";
  };

  outputs = inputs @ {
    self,
    nixpkgs,
    ...
  }: {
    nixosConfigurations = {
      benag = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = {inherit inputs;};
        modules = [
          ./configuration/configuration.nix
          inputs.stylix.nixosModules.stylix

          {
            home-manager.sharedModules = [
              inputs.stylix.homeModules.stylix
            ];
          }

          inputs.home-manager.nixosModules.default

          inputs.milk-grub-theme.nixosModule

          {
            home-manager = {
              backupFileExtension = "backup_nix";
              useUserPackages = true;
              useGlobalPkgs = true;
              users.benag = ./home/home.nix;
            };
          }
        ];
      };
    };
  };
}
