{ outputs, config, lib, ... }:

{
  imports = [
    ./applications/common.nix
    ./applications/steam.nix
    ./applications/thunar.nix

    ./services/docker.nix
    ./services/podman.nix
    ./services/quickemu.nix
    ./services/ssh.nix
    ./services/sunshine.nix
    ./services/garbage-collection.nix
    ./services/incus.nix

    ./hardware/bluetooth.nix
    ./hardware/fprint.nix
    ./hardware/locale.nix
    ./hardware/nvidia.nix
    ./hardware/firewall.nix
    ./hardware/printing.nix

    ./desktop-environments/cosmic.nix
    ./desktop-environments/hyprland.nix
    ./desktop-environments/gnome.nix
    ./desktop-environments/niri.nix

    ./display-managers/default.nix
  ];

  options = {
    settings.hostname = lib.mkOption {
      type = lib.types.str;
      description = ''
        Set hostname of the system
      '';
    };
  };

  config = {
  	nixpkgs = {
  		overlays = [
  			outputs.overlays.unstable-packages
  			outputs.overlays.additions
  			outputs.overlays.modifications
  		];
  	};

    nix.settings = {
      experimental-features = [ "nix-command" "flakes" ];

      substituters = [
        "https://nix-community.cachix.org"
        "https://cosmic.cachix.org/"
      ];

      trusted-public-keys = [
        "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="
        "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
      ];
    };

  	networking.hostName = config.settings.hostname;
  };
}
