{
  # core
  self,
  pkgs,
  pkgsStable,
  nixLib,
  myPkgs,
  system,
  sysLib,
  nixpkgs_as_input,
  nixpkgs_open_prs,
  # modules
  home-manager,
  nixVim,
  nixos-generators,
  impermanence,
  agenix,
  ragenix,
  serverphone,
  disko,
  lanzaboote,
  nix-index-database,
  # external dependencies
  user_js,
  treefmt-nix,
  templates,
  # my binaries
  shell_library,
  river_init_lesser,
  qmk_firmware,
}: let
  treefmtEval = import ./treefmt.nix {inherit treefmt-nix pkgs;};

  nixosConfigurations = import ./nixosConfigurations {
    inherit
      self
      pkgsStable
      myPkgs
      system
      nixpkgs_as_input
      nixpkgs_open_prs
      # my things
      shell_library
      sysLib
      nixLib
      templates
      # modules
      home-manager
      nixVim
      nixos-generators
      impermanence
      agenix
      ragenix
      serverphone
      disko
      lanzaboote
      nix-index-database
      # bins
      river_init_lesser
      qmk_firmware
      # external
      user_js
      ;
  };

  tests = import ../tests {
    inherit pkgs nixpkgs_as_input myPkgs sysLib nixLib;
    inherit (pkgs) lib;
    extraModules = {
      termfilechooser = "${nixpkgs_open_prs.nixpkgs-tfc}/nixos/modules/config/xdg/portals/termfilechooser.nix";

      nixvim = {
        homeManagerModule = nixVim.homeManagerModules.nixvim;
      };
      agenix = agenix.nixosModules.default;
      disko = disko.nixosModules.default;
      serverphone = serverphone.nixosModules.default;
      inherit (home-manager.nixosModules) home-manager;
      inherit (impermanence.nixosModules) impermanence;
      inherit (lanzaboote.nixosModules) lanzaboote;
    };
  };
in {
  inherit nixosConfigurations;
  checks."${system}" =
    nixLib.warnMerge {
      inherit
        (self.packages."${system}")
        nvim
        ;
      formatting = treefmtEval.config.build.check self;
    }
    tests "flake checks";

  # legacyPackages."${system}" = pkgs;

  packages."${system}" = import ./packages {
    inherit
      nixos-generators
      pkgs
      pkgsStable
      myPkgs
      sysLib
      system
      nixVim
      self
      shell_library
      ;
    inherit (pkgs) lib;
  };

  formatter."${system}" = treefmtEval.config.build.wrapper;

  apps."${system}" = import ./apps {inherit self system;};

  devShells."${system}" = {
    default = pkgs.mkShell {
      packages = [
        # secure boot
        pkgs.sbctl

        # other
        pkgs.cocogitto
        pkgs.git-bug

        # secrets
        ragenix.packages."${system}".default
        pkgs.rage

        # shell
        pkgs.shfmt

        # rust
        pkgs.rustfmt
        pkgs.cargo

        # nix
        pkgs.alejandra

        # update
        myPkgs.generate_moz_extension # needed for the firefox extension update script
        myPkgs.lf-make-map # needed to generate the lf cd mappings
        myPkgs.update-vim-plugins
      ];
    };
  };
}