{
  lib,
  pkgs,
  config,
  ...
}:
let
  inherit (lib.modules)
    mkIf
    mkForce
    mkMerge
    mkDefault
    mkOverride
    ;
  inherit (lib.lists) optionals;
  inherit (lib.options) mkOption mkEnableOption literalExpression;
  inherit (lib.types)
    str
    raw
    listOf
    package
    ;

  cfg = config.garden.system.boot;
in
{
  options.garden.system.boot = {
    enableKernelTweaks = mkEnableOption "security and performance related kernel parameters";
    recommendedLoaderConfig = mkEnableOption "tweaks for common bootloader configs per my liking";
    loadRecommendedModules = mkEnableOption "kernel modules that accommodate for most use cases";
    tmpOnTmpfs = mkEnableOption "`/tmp` living on tmpfs. false means it will be cleared manually on each reboot";

    kernel = mkOption {
      type = raw;
      default = pkgs.linuxPackages_latest;
      description = "The kernel to use for the system.";
    };

    initrd = {
      enableTweaks = mkEnableOption "quality of life tweaks for the initrd stage";
      optimizeCompressor = mkEnableOption ''
        initrd compression algorithm optimizations for size.
        Enabling this option will force initrd to use zstd (default) with
        level 19 and -T0 (STDIN). This will reduce thee initrd size greatly
        at the cost of compression speed.
        Not recommended for low-end hardware.
      '';
    };

    extraModprobeConfig = mkOption {
      type = str;
      default = ''options hid_apple fnmode=1'';
      description = "Extra modprobe config that will be passed to system modprobe config.";
    };

    silentBoot =
      mkEnableOption ''
        almost entirely silent boot process through `quiet` kernel parameter
      ''
      // {
        default = cfg.plymouth.enable;
      };

    extraKernelParams = mkOption {
      type = listOf str;
      default = [ ];
    };

    extraModulePackages = mkOption {
      type = listOf package;
      default = [ ];
      example = literalExpression ''with config.boot.kernelPackages; [acpi_call]'';
      description = "Extra kernel modules to be loaded.";
    };
  };

  config = {
    boot = {
      consoleLogLevel = 3;

      # we set the kernel to be defaulted to the one set by our settings
      # we happen to default this to the latest kernel sooo:
      # always use the latest kernel, love the unstablity
      kernelPackages = mkOverride 500 cfg.kernel;

      extraModulePackages = mkDefault cfg.extraModulePackages;
      extraModprobeConfig = mkDefault cfg.extraModprobeConfig;

      # whether to enable support for Linux MD RAID arrays
      # as of 23.11>, this throws a warning if neither MAILADDR nor PROGRAM are set
      swraid.enable = mkDefault false;

      # shared config between bootloaders
      # they are set unless system.boot.loader != none
      loader = {
        # if set to 0, space needs to be held to get the boot menu to appear
        timeout = mkForce 2;

        # copy boot files to /boot so that /nix/store is not required to boot
        # it takes up more space but it makes my messups a bit safer
        generationsDir.copyKernels = true;

        # we need to allow installation to modify EFI variables
        efi.canTouchEfiVariables = true;
      };

      # increase the map count, this is important for applications that require a lot of memory mappings
      # such as games and emulators
      kernel.sysctl."vm.max_map_count" = 2147483642;

      # if you have a lack of ram, you should avoid tmpfs to prevent hangups while compiling
      tmp = {
        # /tmp on tmpfs, lets it live on your ram
        useTmpfs = cfg.tmpOnTmpfs;

        # If not using tmpfs, which is naturally purged on reboot, we must clean
        # we have to clean /tmp
        cleanOnBoot = mkDefault (!config.boot.tmp.useTmpfs);

        # this defaults to 50% of your ram
        # but i want to build code sooo
        # tmpfsSize = mkDefault "75%";
      };

      # initrd and kernel tweaks
      # read what each parameter or module does before doing so, it will defo break something otherwise
      initrd = mkMerge [
        (mkIf cfg.initrd.enableTweaks {
          # Verbosity of the initrd
          # disabling verbosity removes only the mandatory messages generated by the NixOS
          verbose = false;

          systemd = {
            # enable systemd in initrd (experimental)
            enable = true;

            # strip copied binaries and libraries from inframs
            # saves some nice space
            strip = true;
          };

          kernelModules = [
            "nvme"
            "xhci_pci"
            "ahci"
            "btrfs"
            "sd_mod"
            "dm_mod"
          ];

          availableKernelModules = [
            "vmd"
            "usbhid"
            "sd_mod"
            "sr_mod"
            "dm_mod"
            "uas"
            "usb_storage"
            "rtsx_usb_sdmmc"
            "rtsx_pci_sdmmc" # Realtek SD card interface (btw i hate realtek)
            "ata_piix"
            "virtio_pci"
            "virtio_scsi"
            "ehci_pci"
          ];
        })

        (mkIf cfg.initrd.optimizeCompressor {
          compressor = "zstd";
          compressorArgs = [
            "-19"
            "-T0"
          ];
        })
      ];

      # https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
      kernelParams =
        optionals cfg.enableKernelTweaks [
          # https://en.wikipedia.org/wiki/Kernel_page-table_isolation
          # auto means kernel will automatically decide the pti state
          "pti=auto" # on || off

          # disable the intel_idle (it stinks anyway) driver and use acpi_idle instead
          "idle=nomwait"

          # enable IOMMU for devices used in passthrough and provide better host performance
          "iommu=pt"

          # disable usb autosuspend
          "usbcore.autosuspend=-1"

          # isables resume and restores original swap space
          "noresume"

          # allow systemd to set and save the backlight state
          "acpi_backlight=native"

          # prevent the kernel from blanking plymouth out of the fb
          "fbcon=nodefer"

          # disable boot logo
          "logo.nologo"

          # disable the cursor in vt to get a black screen during intermissions
          "vt.global_cursor_default=0"
        ]
        ++ optionals cfg.silentBoot [
          # tell the kernel to not be verbose, the voices are too loud
          "quiet"

          # kernel log message level
          "loglevel=3" # 1: system is unusable | 3: error condition | 7: very verbose

          # udev log message level
          "udev.log_level=3"

          # lower the udev log level to show only errors or worse
          "rd.udev.log_level=3"

          # disable systemd status messages
          # rd prefix means systemd-udev will be used instead of initrd
          "systemd.show_status=auto"
          "rd.systemd.show_status=auto"
        ];
    };
  };
}
