{
  description = "marleyOS";

  outputs = inputs:
    inputs.snowfall-lib.mkFlake {
      inherit inputs;
      src = ./.;

      snowfall = {
        namespace = "marleyos";
        title = "marleyOS";
      };

      channels-config = {
        allowUnfree = true;
      };

      overlays = with inputs; [
        lix.overlays.default
        nur.overlays.default
        niri-flake.overlays.niri
      ];

      systems.modules.nixos = with inputs; [
        stylix.nixosModules.stylix
        niri-flake.nixosModules.niri
      ];

      systems.modules.darwin = with inputs; [
        lix.nixosModules.default
      ];

      # homes.modules = with inputs; [
      # ];

      outputs-builder = channels: {
        formatter = channels.nixpkgs.alejandra;
      };
    };

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
    unstable.url = "github:nixos/nixpkgs/nixos-unstable";

    nur = {
      url = "github:nix-community/NUR";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    lix = {
      url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    snowfall-lib = {
      url = "github:snowfallorg/lib";
      inputs.nixpkgs.follows = "nixpkgs";
    };

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

    home-manager = {
      url = "github:nix-community/home-manager/release-24.11";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nixgl = {
      url = "github:nix-community/nixGL";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    stylix.url = "github:danth/stylix/release-24.11";

    niri-flake.url = "github:sodiboo/niri-flake";

    wezterm = {
      url = "github:wez/wezterm?dir=nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    marleyvim.url = "git+https://codewith.babesonthe.net/punkfairie/marleyvim";
  };
}
