{config, pkgs, lib, inputs, vars, ...}:{
  imports = [
    #home-manager modules
    inputs.nix-index-database.hmModules.nix-index
    inputs.nixvim.homeManagerModules.default
    inputs.catppuccin.homeModules.catppuccin
    inputs.niri.homeModules.niri
    #aux files to make finding specific things easier
    ./theming.nix
    ./nixvim
    #./sway.nix
    #./hyprland.nix
    ./niri.nix
    ./packages.nix #general user packages not managed by home-manager but i want to install via hm anyways
  ];
  home = rec {
    username = vars.user; #this is set in flake.nix 
    homeDirectory = "/home/${username}"; #change this if you use a non-standard home dir
    stateVersion = "23.11";
    shell.enableBashIntegration = true;
    sessionVariables = { PASSWORD_STORE_DIR = "$HOME/sync/general/pass"; ELECTRON_OZONE_PLATFORM_HINT = "auto";};
    file = {
      ".config/waybar/config".source = (if vars.user == "alyx" then config.lib.file.mkOutOfStoreSymlink "${homeDirectory}/.config/nixos/home/waybar/terminal" else config.lib.file.mkOutOfStoreSymlink "${homeDirectory}/.config/nixos/home/waybar/modern");
      ".config/waybar/style.css".source = (if vars.user == "alyx" then config.lib.file.mkOutOfStoreSymlink "${homeDirectory}/.config/nixos/home/waybar/terminal.css" else config.lib.file.mkOutOfStoreSymlink "${homeDirectory}/.config/nixos/home/waybar/modern.css");
    };
  };
  programs.home-manager.enable = (!vars.isNixOS); #value is set in flake.nix
  programs.foot = {
    enable = true;
    settings.main.font = (if vars.user == "alyx" then "monospace:size=14" else "monospace:size=10");
    settings.colors.alpha = "0.9";
  };

  programs.ncmpcpp = {
    enable = true;
    settings = {
      tags_separator = ";";
    };
  };
  programs.password-store = {
    enable = true;
    package = pkgs.pass.withExtensions (exts: [exts.pass-otp exts.pass-import]);
    settings = { PASSWORD_STORE_DIR = "$HOME/sync/general/pass"; };
  };
  services.mpd = {
    enable = true;
    musicDirectory = "/home/${vars.user}/Music";
    extraConfig = ''
      audio_output {
        type "pipewire"
	name "default pipewire"
      }
    '';
  };
  services.mpd-mpris = {
    enable = true;
  };

  services.mpd-discord-rpc.enable = true;

  services.syncthing.enable = (vars.useSyncthing);

  programs.waybar = {
    enable = true;
  };
  programs.git = {
    enable = true;
    userName = vars.user;
    userEmail = (if vars.user == "alyx" then "cydiralis@proton.me" else "beanigit@protonmail.com");
    extraConfig = {
      commit.gpgsign = true;
      gpg.format = "ssh";
      user.signingkey = "~/.ssh/id_ed25519.pub";
      init.defaultBranch = "main";
    };
  };

  programs.irssi = {
    enable = true;
    networks = {
      classicconnect = {
        nick = vars.user;
        server = {
          address = "irc.classicconnect.net";
          port = 6677;
          autoConnect = true;
        };
        channels = {
          nick.autoJoin = true;
        };
      };
    };
  };
  services.kanshi = {
    enable = true;
    settings = [
      {
        profile.name = "maya-desktop";
	profile.outputs = [
	  { criteria = "Dell Inc. DELL P2411H MGMHG1681VAU"; position = "0,1050"; }
	  { criteria = "Samsung Electric Company SyncMaster HMDQ202016"; position = "0,0"; }
	];
      }
      {
        profile.name = "alyx-desktop";
	profile.outputs = [
	  { criteria = "ASUSTek COMPUTER INC VG279QM NCLMQS055707"; position = "2560,0"; mode = "1920x1080@239.760"; }
	  { criteria = "Dell Inc. DELL U2913WM 5YD8C5A9AZSL"; position = "0,0"; mode = "2560x1080@74.987"; }
          { criteria = "Valve Corporation Index HMD 0xEDE55842"; status = "disable"; }
	];
      }
      {
        profile.name = "steamdeck";
        profile.outputs = [
          { criteria = "Valve Corporation ANX7530 U 0x00000001"; transform = "270"; scale = 1.0; }
        ];
      }
    ];
  };

  programs.obs-studio = {
    enable = true;
    plugins = with pkgs.obs-studio-plugins; [
      wlrobs
      obs-backgroundremoval
      obs-pipewire-audio-capture
    ];
  };
}

