{
  description = "System configuration for panacea";

  nixConfig = {
    extra-substituters =
      "https://cachix.cachix.org https://nix-community.cachix.org";
    extra-trusted-public-keys = ''
      cachix.cachix.org-1:eWNHQldwUO7G2VkjpnjDbWwy4KQ/HNxht7H4SSoMckM=
            nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs='';
  };

  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
    agenix = {
      url = "github:ryantm/agenix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    openconnect-sso = {
      url = "github:vlaci/openconnect-sso";
      flake = false;
    };
    cyrus-sasl-xoauth2 = {
      url = "github:robn/sasl2-oauth";
      flake = false;
    };
    nix-index-database = {
      url = "github:Mic92/nix-index-database";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, agenix, nix-index-database, ... }@inputs:
    let
      system = "x86_64-linux";

      pkgs = import pkgs { inherit system; };

      lib = nixpkgs.lib;

    in {
      nixosConfigurations.panacea = lib.nixosSystem {
        inherit system;
        modules = [
          (import ./configuration.nix)
          agenix.nixosModules.age
          nix-index-database.nixosModules.nix-index
        ];
        specialArgs = { inherit inputs; };
      };

    };
}