{
  description = "snowhawk: a nixos configuration flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
    lix-module = { url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; };
    neovim-overlay = { url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; };
    home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; };
    sops-nix = { url = "github:mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
    dunst-theme = { url = "github:d2718nis/rose-pine-dunst"; flake = false; };
    niri = { url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; };
    nix-gaming.url = "github:fufexan/nix-gaming";

    nh = { url = "github:viperML/nh"; inputs.nixpkgs.follows = "nixpkgs"; };

    nix-darwin = { url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; };

    repo-clone.url = "git+https://git.zynh.me/Zynh0722/repo-clone";
    zdwm = { url = "git+https://git.zynh.me/Zynh0722/dwm?ref=preanybar-systray"; flake = false; };
    zdwl = { url = "git+https://git.zynh.me/Zynh0722/dwl?ref=0.7"; inputs.nixpkgs.follows = "nixpkgs"; };
    fish_theme = { url = "git+https://git.zynh.me/Zynh0722/omf-theme"; flake = false; };
    backgrounds = { url = "git+https://git.zynh.me/Zynh0722/backgrounds"; inputs.nixpkgs.follows = "nixpkgs"; };
    umu = { url = "github:Open-Wine-Components/umu-launcher?dir=packaging/nix"; inputs.nixpkgs.follows = "nixpkgs"; };

    deploy-rs = { url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; };

    flake-parts.url = "github:hercules-ci/flake-parts";
  };

  outputs = inputs@{ flake-parts, deploy-rs, nixpkgs, self, ... }:
    flake-parts.lib.mkFlake { inherit inputs; } {
      flake =
        let builders = import ./builders.nix inputs;
        in {
          nixosConfigurations = builders.compileNixosSystems [
            { hostname = "snowhawk"; }
          ];

          darwinConfigurations = builders.compileDarwinSystems [
            { hostname = "lynx"; }
          ];

          homeConfigurations = builders.compileHomes [
            { user = "zynh"; hostname = "msiserver"; }
            { user = "val"; hostname = "caveserver"; }
            { user = "ravenshade"; hostname = "permafrost"; }
          ];

          deploy =
            let homeConfigPath = username: deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations.${username};
            in {
              sshUser = "ravenshade";
              nodes.permafrost = {
                hostname = "permafrost";
                profiles.home.path = homeConfigPath "ravenshade@permafrost";
              };
            };

          overlays.default = import ./pkgs;
        };

      systems = [ ];
    };
}