{
  moduleWithSystem,
  self,
  inputs,
  ...
}: {
  flake.nixosModules.hyprland = moduleWithSystem ({
    self',
    pkgs,
    ...
  }: let
    modules = with self.nixosModules; [
      audio
      systemTheme
    ];
  in {
    imports = modules;
    programs.hyprland = {
      enable = true;
      package = self'.packages.hyprland;
    };
    services.xserver.enable = true;
    security.polkit.enable = true;
    environment.systemPackages = with pkgs; [
      hyprlock
      gsettings-desktop-schemas
    ];
  });
  perSystem = {
    self',
    system,
    inputs',
    ...
  }: {
    packages = {
      hyprland = inputs'.hyprland.packages.default.override {
        runtimePackages =
          inputs.hyprland.lib.defaultRuntimePkgs.${system}
          // {
            wpaperd = self'.packages.wpaperd;
            kitty = self'.packages.kitty;
            gotify-desktop = self'.packages.gotify-desktop;
            otter-launcher = self'.packages.otter-launcher;
            quickshell = self'.packages.quickshell;
            waybar = self'.packages.waybar;
            wlogout = self'.packages.wlogout;
            way-edges = self'.packages.way-edges;
          };
      };
    };
  };
}
