{ config, pkgs, lib, inputs, ... }:

with lib;
{
  imports = [
    ./hardware.nix
    ./secrets.nix
  ];

  # - Basic --------------------------------------

  user.name = "marc";
  user.shell = pkgs.zsh;
  networking = {
    hostName = "skaftafell";
    firewall = {
      enable = false;
      # allowedUDPPorts = [
      #   53      # DNS (pihole + unbound)
      #   8600    # Consul DNS
      #  ];
    };
  };

  # - Bootloader ---------------------------------

  boot.loader.grub = {
    enable = true;
    device = "/dev/vda";
  };

  # - Agenix ---------------------------------

  age.identityPaths = [
    "/home/marc/.ssh/id_ed25519"
  ];

  # - Modules ------------------------------------

  samfelag.modules = {
    # - Common -----------------------------------
    # See modules/common.nix for common packages installed

    # - System -----------------------------------
    system.utils.enable = true;
    system.gpg.enable = true;
    system.pass.enable = true;
    system.ssh.enable = true;
    system.sshfs.enable = true;
    system.nvidia = {
      enable = true;
      intelBusId = "PCI:0:2:0";
      nvidiaBusId = "PCI:0:6:0";
    };

    # - Server ----------------------------------
    # server.vatnajokull.enable = true;

    # - Editors and development ------------------
    dev.git.userName = "marc";
    dev.git.userEmail = "marc@sastre.cat";

    dev.docker.enable = true;
    dev.docker.users = ["marc"];
  };

  # TODO: Move to a module
  services.ollama = {
    enable = true;
    package = pkgs.ollama-cuda;
    host = "100.74.218.64";
  };
}
