{
  withSystem,
  inputs,
  self,
  ...
}: {
  flake.nixosConfigurations.miyagi = withSystem "x86_64-linux" ({
    system,
    self',
    ...
  }: let
    inherit (inputs) fenix nur nixpkgs home-manager hyprland;
    user = self'.lib.const.user;
  in
    self'.lib.mkSystem {
      system = {
        pkgs,
        lib,
        ...
      }: {
        imports = [
          ./configuration.nix
          ../../nixos/ssh.nix
          hyprland.nixosModules.default
        ];

        environment.systemPackages = [pkgs.fbterm];
        security.wrappers.fbterm = {
          source = "${pkgs.fbterm}/bin/fbterm";
          capabilities = "cap_sys_tty_config+ep";
          owner = "root";
          group = "root";
        };

        programs.hyprland = {
          enable = true;
          xwayland = {
            enable = true;
            hidpi = true;
          };
        };

        security.pam.services.swaylock = {};
        services.openssh.settings.PasswordAuthentication = lib.mkForce true;
      };

      user = {
        pkgs,
        lib,
        osConfig,
        ...
      }: let
        # TODO: Move to hyprland module
        ewwDeps = with pkgs; [
          bash
          bc
          blueberry
          bluez
          coreutils
          dbus
          dunst
          findutils
          gawk
          gnused
          gojq
          imagemagick
          jaq
          light
          networkmanager
          pavucontrol
          procps
          pulseaudio
          ripgrep
          socat
          udev
          upower
          util-linux
          wget
          wireplumber
          wlogout
        ];
        # TODO: Move to desktop module
        bwDeps = with pkgs; [
          wtype
          pinentry.curses
          rbw
          rofi-rbw
        ];
      in {
        imports = [
          # ../../home-manager/desktop/xorg/i3.nix
          # ../../home-manager/desktop/wayland/sway.nix
          ../../home-manager/desktop/common.nix
          ../../home-manager/desktop/qute.nix
          ../../home-manager/node.nix
          ../../home-manager/pijul.nix
          ../../home-manager/emacs.nix
          # ../../home-manager/desktop/chromium.nix
        ];

        # TODO: CTF module
        home.packages = with pkgs; [virt-manager steam-run slack logseq ghidra-bin pwndbg (zathuraPkgs.override {useMupdf = true;}).zathuraWrapper swaybg] ++ ewwDeps ++ bwDeps;

        niko = {
          desktop.hyprland.enable = true;
          desktop.hyprland.extraConfig = ''
            monitor = HDMI-A-1, highres, auto, 1
            monitor = DP-1, highres, auto, 1
            monitor = DP-1, transform, 3
            bind = $mod, B, exec, rofi-rbw --selector rofi
            exec-once = hyprctl setcursor Catppuccin-Mocha-Dark-Cursors 20
            exec-once = swaybg -i ~/.wallpaper.jpg -m fill
          '';
          desktop.alacritty = {
            enable = true;
            fontSize = 11;
          };
          dev.rust.enable = true;
        };

        programs.git = {
          userEmail = "nrabulinski@antmicro.com";
          signing.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEIf4Ypws+1v9WL9MibW1dELpa/7YixElaBE7S71jsTy";
          extraConfig.gpg.format = "ssh";
        };

        programs.gpg.enable = lib.mkForce false;
        services.gpg-agent.enable = lib.mkForce false;

        programs.eww = {
          enable = true;
          package = pkgs.eww-wayland;
          configDir = ./eww;
        };
      };
    });
}