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

  inputs = {
    # Nix
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    lix-module = { url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz"; 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"; };
    nh = { url = "github:viperML/nh"; inputs.nixpkgs.follows = "nixpkgs"; };

    # Desktop
    hyprland = { url = "github:hyprwm/Hyprland"; };
    hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; };
    split-monitor-workspaces = { url = "github:Duckonaut/split-monitor-workspaces"; inputs.hyprland.follows = "hyprland"; };
    anyrun = { url = "github:anyrun-org/anyrun"; inputs.nixpkgs.follows = "nixpkgs"; };
    niri = { url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; };

    # Themeing
    dunst-theme = { url = "github:d2718nis/rose-pine-dunst"; flake = false; };
    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"; };
    rose-pine-swaync = { url = "github:rose-pine/swaync"; flake = false; };

    # Owie Sharp
    neovim-overlay = { url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; };
    chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";

    # Some of my stuff
    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"; };

    # aarch
    nix-darwin = { url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; };
    nixos-apple-silicon = { url = "github:Lederstrumpf/nixos-apple-silicon/mesa-changes"; };

    # FRC
    frc-nix = { url = "github:frc4451/frc-nix"; inputs.nixpkgs.follows = "nixpkgs"; };

    # Gaming
    umu = { url = "github:Open-Wine-Components/umu-launcher?dir=packaging/nix"; inputs.nixpkgs.follows = "nixpkgs"; };
    nix-gaming.url = "github:fufexan/nix-gaming";

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

  outputs =
    { self, nixpkgs, deploy-rs, ... }@inputs:
    let
      builders = import ./builders.nix inputs;
    in
    {
      nixosConfigurations = builders.compileNixosSystems [
        { hostname = "snowhawk"; }
        { hostname = "llynx"; system = "aarch64-linux"; }
      ];

      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.local";
            profiles.home.path = homeConfigPath "ravenshade@permafrost";
          };
        };

      overlays.default = import ./pkgs;
    };
}