{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    stylix.url = "github:danth/stylix";
    spicetify-nix.url = "github:Gerg-L/spicetify-nix";
    nixvim.url = "github:nix-community/nixvim";
    home-manager.url = "github:nix-community/home-manager";

    ignis = {
      url = "github:ignis-sh/ignis";
      inputs.nixpkgs.follows = "nixpkgs"; # recommended
    };
    lanzaboote = {
      url = "github:nix-community/lanzaboote/v1.0.0";

      # Optional but recommended to limit the size of your system closure.
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs =
    {
      self,
      nixpkgs,
      stylix,
      spicetify-nix,
      nixvim,
      home-manager,
      lanzaboote,
      ...
    }@inputs:
    let
      system = "x86_64-linux";
      pkgs = import nixpkgs { inherit system; };
    in
    {
      nixosConfigurations.cyberia = nixpkgs.lib.nixosSystem {
        inherit system;

        modules = [
          stylix.nixosModules.stylix
          home-manager.nixosModules.home-manager
          lanzaboote.nixosModules.lanzaboote
          (
            {
              pkgs,
              lib,
              config,
              ...
            }:
            {
              networking.hostName = "cyberia";

              environment.systemPackages = [
                pkgs.sbctl
              ];
              services.xserver.videoDrivers = [ "nvidia" ];
              hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
              hardware.nvidia.modesetting.enable = true;
              hardware.nvidia.open = true;

              # Lanzaboote currently replaces the systemd-boot module.
              # This setting is usually set to true in configuration.nix
              # generated at installation time. So we force it to false
              # for now.
              boot.loader.systemd-boot.enable = lib.mkForce false;

              boot.lanzaboote = {
                enable = true;
                pkiBundle = "/var/lib/sbctl";
              };
            }
          )
          ./configuration.nix

          {
            home-manager.useUserPackages = true;
            home-manager.useGlobalPkgs = true;
            home-manager.users.lucy = {
              imports = [
                inputs.ignis.homeManagerModules.default
                nixvim.homeModules.nixvim
                spicetify-nix.homeManagerModules.spicetify
                ./home/home.nix

              ];
            };
          }

        ];
      };

      homeConfigurations.lucy = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.${system};
        extraSpecialArgs = { inherit inputs; };
        modules = [
          stylix.homeModules.stylix
          nixvim.homeModules.nixvim
          ./home/home.nix
          ./home/programs.nix
        ];
      };
    };
}
