{ self, inputs, ... }:
{
  flake.nixosModules.nixConfig = { config, pkgs, inputs, ...}: {
    programs = {
      direnv = {
        enable = true;
        silent = true;
        enableZshIntegration = true;
      };
    };

    nix = {
      gc = {
        automatic = true;
        options = "--delete-older-than 2d";
      };

      settings = {
        experimental-features = [ "nix-command" "flakes" ];

        auto-optimise-store = true;

        substituters = [
          "https://cache.nixos.org"
          "https://nix-community.cachix.org"
          "https://hyprland.cachix.org"
	        "https://nix-citizen.cachix.org"
        ];
        trusted-public-keys = [
          "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
	        "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
          "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
          "nix-citizen.cachix.org-1:lPMkWc2X8XD4/7YPEEwXKKBg+SVbYTVrAaLA2wQTKCo="
	      ];
      };
    };

    nixpkgs = {
      config = {
        allowUnfree = true;
      };
    };
  };
}
