{user}: {
  lib,
  pkgs,
  config,
  ...
}: {
  services.greetd = {
    enable = true;
    settings = rec {
      sway_session = {
        command = "sway";
        user = user;
      };
      default_session = sway_session;
    };
  };

  home-manager.users.${user}.imports = [
    (import ./home/swaylock.nix)
    {
      xdg.portal = {
        enable = true;
        configPackages = [pkgs.sway];
        extraPortals = [pkgs.xdg-desktop-portal-sway pkgs.xdg-desktop-portal-gtk];
      };

      wayland.windowManager.sway = {
        enable = true;
      };

      services.swayidle = {
        enable = true;
        systemdTarget = "graphical-session.target";
        events = [
          {
            event = "before-sleep";
            command = "${pkgs.swaylock-effects}/bin/swaylock";
          }
          {
            event = "lock";
            command = "${pkgs.swaylock-effects}/bin/swaylock";
          }
        ];
        timeouts = [
          {
            timeout = 300;
            command = "${pkgs.swaylock-effects}/bin/swaylock -f";
          }
          {
            timeout = 600;
            command = "systemctl suspend";
          }
        ];
      };

      services.mako.enable = true;

      programs.waybar = {
        enable = true;
        settings = {
          mainBar = {
            layer = "top";
            position = "top";
            height = 36;
            modules-left = ["sway/workspaces" "sway/window"];
            modules-right = ["mpris" "pulseaudio" "clock" "tray" "battery"];
            clock = {
              format = "📅 {:%a %b-%d %I:%M %p}";
            };
            pulseaudio = {
              format-muted = "🔇 {volume}";
              format = "{icon} {volume}";
              format-icons.default = ["🔈" "🔉" "🔊"];
              on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
            };
            mpris = {
              format = "{player_icon} {artist} - {title}";
              format-paused = "{status_icon} {player_icon} {artist} - {title}";
              player-icons = {
                default = "▶️";
                mpd = "🎵";
                kdeconnect = "☎️";
              };
              status-icons = {
                paused = "⏸️";
              };
            };
            battery = {
              format = "{icon} {capacity}%";
              format-icons = ["🤏" "🪫" "🔋" "🔋"];
              format-charging = "🔌 {capacity}%";
              states = {
                warning = 30;
                critical = 15;
              };
            };
          };
        };
        systemd = {
          enable = true;
          target = "graphical-session.target";
        };
      };
    }
  ];
}
