{
  description = "system";

  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
    nixpkgs-stable.url = "nixpkgs/nixos-23.11";
    nixpkgs-unstable-small.url = "nixpkgs/nixos-unstable-small";
    helix-inline-diags = {
      url = "github:pascalkuthe/helix/inline-diagnostics";
      inputs = {
        crane.follows = "crane";
        nixpkgs.follows = "nixpkgs";
      };
    };
    lix = {
      url = "git+https://git@git.lix.systems/lix-project/lix?ref=refs/tags/2.90-beta.1";
      flake = false;
    };
    lix-module = {
      url = "git+https://git.lix.systems/lix-project/nixos-module";
      inputs.lix.follows = "lix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    nixos-hardware.url = "github:networkException/nixos-hardware/apple-t2-init";
    mac-brcm-fw = {
      url = "path:/home/jade/nix-configs/mac-brcm-fw";
      flake = false;
    };
    crane = {
      url = "github:ipetkov/crane";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
    fenix = {
      url = "github:nix-community/fenix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = {
    self,
    nixpkgs,
    nixpkgs-stable,
    nixpkgs-unstable-small,
    helix-inline-diags,
    lix-module,
    home-manager,
    nixos-hardware,
    mac-brcm-fw,
    fenix,
    crane,
    ...
  } @ inputs: let
    system = "x86_64-linux";
    pkgs = nixpkgs.legacyPackages.${system};
    pkgs-stable = nixpkgs-stable.legacyPackages.${system};
    pkgs-unstable-small = nixpkgs-unstable-small.legacyPackages.${system};
    crane-lib = crane.lib.${system};
    rs-toolchain = with fenix.packages.${system};
      combine [
        default.toolchain
        rust-analyzer
      ];
    # rs-platform = pkgs.makeRustPlatform {
    #   cargo = rs-toolchain;
    #   rustc = rs-toolchain;
    # };
    rs-programs = final: prev: {
      # s10e-jrnl = rs-platform.buildRustPackage {
      #   pname = "jrnl";
      #   version = "0.0.1";
      #   src = ./programs/jrnl;
      #   cargoLock.lockFile = ./programs/jrnl/Cargo.lock;
      # };
      s10e-jrnl = crane-lib.buildPackage {
        pname = "s10e-bs";
        version = "0.0.1";
        src = crane-lib.cleanCargoSource (crane-lib.path ./.);
      };
    };
  in {
    devShells."x86_64-linux".default = pkgs.mkShell {
      buildInputs = [
        (pkgs.haskellPackages.ghcWithPackages
          (pkgs:
            with pkgs; [
              xmonad
              xmonad-contrib
              xmobar
              statgrab
            ]))
        rs-toolchain
        pkgs.haskell-language-server
      ];
    };
    nixosConfigurations = {
      monosodium-glutamate-g = nixpkgs.lib.nixosSystem {
        specialArgs = {
          inherit inputs pkgs-unstable-small pkgs-stable rs-programs lix-module helix-inline-diags;
        };
        system = "x86_64-linux";
        modules = [
          ./hosts/monosodium-glutamate-g/configuration.nix
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = {
              inherit pkgs-unstable-small pkgs-stable;
            };
            home-manager.users.jade = {
              nixosConfig,
              pkgs,
              ...
            }: {
              home.sessionVariables.TZ = nixosConfig.time.timeZone;
              home.stateVersion = "${nixosConfig.system.stateVersion}";
            };
          }
        ];
      };
      catbook-j = nixpkgs.lib.nixosSystem {
        specialArgs = {
          inherit inputs pkgs-unstable-small pkgs-stable rs-programs lix-module helix-inline-diags;
        };
        system = "x86_64-linux";
        modules = [
          ./hosts/catbook-j/configuration.nix
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = {
              inherit pkgs-unstable-small pkgs-stable;
            };
            home-manager.users.jade = {
              nixosConfig,
              pkgs,
              ...
            }: {
              home.sessionVariables.TZ = nixosConfig.time.timeZone;
              home.stateVersion = "22.11";
            };
          }
        ];
      };
      potatobook-g = nixpkgs.lib.nixosSystem {
        specialArgs = {
          inherit inputs pkgs-unstable-small rs-programs lix-module helix-inline-diags;
        };
        system = "x86_64-linux";
        modules = [
          "${mac-brcm-fw}"
          ./hosts/potatobook-g/configuration.nix
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = {
              inherit pkgs-unstable-small pkgs-stable;
            };
            home-manager.users.jade = {
              nixosConfig,
              pkgs,
              ...
            }: {
              home.sessionVariables.TZ = nixosConfig.time.timeZone;
              home.stateVersion = "${nixosConfig.system.stateVersion}";
            };
          }
          nixos-hardware.nixosModules.apple-t2
        ];
      };
    };
  };
}
