server/flake.nix

98 lines
2.6 KiB
Nix

{
description = "Submission server/infrastructure for the SRS challenge at FIC";
inputs.nixpkgs.url = "nixpkgs/nixos-unstable";
inputs.flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
outputs = { self, nixpkgs, ... }:
let
# Generate a version based on date
version = builtins.substring 0 12 self.lastModifiedDate;
vendorSha256 = "sha256-n271oFjC13gelSNV1bZdr/KH724ewoOF1NZ6U7il56I=";
# System types to support.
supportedSystems =
[ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" "arm-linux" ];
# Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
# Nixpkgs instantiated for supported system types.
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
in {
# Provide some binary packages for selected system types.
packages = forAllSystems (system:
let pkgs = nixpkgsFor.${system};
in {
fic-admin = pkgs.buildGoModule {
pname = "admin";
inherit version vendorSha256;
src = ./.;
subPackages = [ "admin" ];
};
fic-backend = pkgs.buildGoModule {
pname = "backend";
inherit version vendorSha256;
src = ./.;
subPackages = [ "backend" ];
};
fic-dashboard = pkgs.buildGoModule {
pname = "dashboard";
inherit version vendorSha256;
src = ./.;
subPackages = [ "dashboard" ];
};
fic-frontend = pkgs.buildGoModule {
pname = "frontend";
inherit version vendorSha256;
src = ./.;
subPackages = [ "frontend" ];
};
fic-qa = pkgs.buildGoModule {
pname = "qa";
inherit version vendorSha256;
src = ./.;
subPackages = [ "qa" ];
};
fic-remote-scores-sync-zqds = pkgs.buildGoModule {
pname = "scores-sync-zqds";
inherit version vendorSha256;
src = ./.;
subPackages = [ "remote/scores-sync-zqds" ];
};
fic-repochecker = pkgs.buildGoModule {
pname = "repochecker";
inherit version vendorSha256;
src = ./.;
subPackages = [ "repochecker" ];
};
});
devShell = forAllSystems (system:
let pkgs = nixpkgsFor.${system};
in pkgs.mkShell {
buildInputs = with pkgs; [ go ];
});
};
}