{
  description = "server flake";
  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
    noshell.url = "github:viperML/noshell";
    spacebar-server.url = "github:spacebarchat/server";
    simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master";
    blog.url = "git+https://git.mtgmonkey.net/Andromeda/blog";
    jank-client.url = "git+https://git.mtgmonkey.net/Andromeda/jank-client-fork";
    math-project.url = "git+https://git.mtgmonkey.net/Andromeda/math-project";
  };

  outputs = {
    self,
    nixpkgs,
    noshell,
    spacebar-server,
    simple-nixos-mailserver,
    jank-client,
    math-project,
    blog,
    ...
  }: let
    system = "x86_64-linux";
  in {
    nixosConfigurations."server" = nixpkgs.lib.nixosSystem {
      inherit system;
      specialArgs = {
        inherit self;
        inherit system;
        inherit spacebar-server;
        inherit simple-nixos-mailserver;
        inherit math-project;
        inherit blog;
        ssh-pub-keys = import ./ssh-pub-keys.nix;
      };
      modules = [
        ./configuration.nix

        ./services/blog.nix
        ./services/elmskell.nix
        ./services/ferron.nix
        ./services/gitea.nix
        # ./services/mailserver.nix
        # ./services/minecraft-server.nix
        # ./services/rgit.nix
        ./services/math-project.nix
        ./services/spacebar.nix
        ./services/translate.nix

        jank-client.nixosModules.x86_64-linux.default
        math-project.nixosModules.x86_64-linux.default
        noshell.nixosModules.default
        simple-nixos-mailserver.nixosModule
        {
          programs.noshell.enable = true;
          services.math-project.enable = true;
        }
      ];
    };
  };
}
