You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
Nix
52 lines
1.5 KiB
Nix
{
|
|
description = "Quake 3 Arena Dedicated Server";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/release-21.11";
|
|
};
|
|
|
|
outputs = inputs@{ self, nixpkgs }: {
|
|
|
|
packages = builtins.mapAttrs (system: _:
|
|
let
|
|
inherit (self.nixosConfigurations) quakeserver;
|
|
|
|
remoteCommand = "ssh -Co ClearAllForwardings=yes sbz -- sudo lxc-attach -n quake-astro --";
|
|
in rec {
|
|
rootfs = quakeserver.config.system.build.toplevel;
|
|
container = quakeserver.config.system.build.tarball;
|
|
|
|
deploy = with nixpkgs.legacyPackages.${system};
|
|
writeScriptBin "deploy" ''
|
|
#! ${runtimeShell} -e
|
|
|
|
nix-store --export $(cat ${writeReferencesToFile rootfs}) | pv -brep | ${remoteCommand} /run/current-system/sw/bin/nix-store --import
|
|
${remoteCommand} ${rootfs}/bin/switch-to-configuration switch
|
|
'';
|
|
} //
|
|
import ./pkgs/baseq3.nix (inputs // { inherit system; })
|
|
) { x86_64-linux = true; };
|
|
|
|
nixosModules = {
|
|
container = import ./nixos-modules/container.nix;
|
|
quake3ded = import ./nixos-modules/quake3ded.nix;
|
|
};
|
|
|
|
nixosConfigurations.quakeserver = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
extraArgs = {
|
|
inherit self;
|
|
};
|
|
modules = [
|
|
"${nixpkgs}/nixos/modules/virtualisation/lxc-container.nix"
|
|
self.nixosModules.container
|
|
self.nixosModules.quake3ded
|
|
{
|
|
networking.hostName = "quakeserver";
|
|
}
|
|
];
|
|
};
|
|
|
|
};
|
|
}
|