{
  flakes,
  config,
  pkgs,
  lib,
  ...
}: {
  imports = [
    ./systemd
    ./isolation.nix
  ];

  nix.registry = {
    "system".to = {
      type = "path";
      path = "/home/fabian/nix";
    };

    "nixpkgs".flake = flakes.nixpkgs;
    "unstable".flake = flakes.unstable;
  };

  local = {
    baseline.enable = true;

    services = {
      zsh = {
        enable = true;
        prompt = "%B[%~] \${vcs_info_msg_0_}%b";
      };
      accounts.enable = true;
      deepState.enable = true;
      gpg = {
        enable = true;
        defaultKey = "A8981D346F8F4130CA16A7775517E687FCCE0BB9";
      };
      syncthing.enable = true;
      pass.enable = true;
    };

    apps = {
      #todo move some of this to defaultDesktop pack?
      terminal.enable = true;
      neovim.enable = true;
      gaming.enable = true;
      yubikey.enable = true;
      defaultDesktopPack.enable = true;
      firefox.enable = true;
      mapping.enable = true;
      zed.enable = true;
      halloy.enable = true;
    };

    gui = {
      enable = true;
      monitors = {
        DP-1 = {
          width = "1920";
          height = "1080";
          rate = "59.94";
        };
        DP-2 = {
          width = "1920";
          height = "1080";
          rate = "143.855";
          posX = "1920";
        };
      };
    };
  };

  home = {
    packages = with pkgs; [
      darktable
      (gajim.override {
        enableSecrets = true;
        enableUPnP = true;
        enableAppIndicator = true;
        enableE2E = true;
        enableRST = true;
      })
      gnucash
      kdePackages.kdenlive
      nmap
      qbittorrent
      thunderbird
      virt-manager
    ];

    username = "fabian";
    homeDirectory = "/home/fabian";
  };

  programs.home-manager.enable = true;
}
