Quake 3 Arena Dedicated Server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
quakeflake/flake.nix

51 lines
1.5 KiB

{
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";
}
];
};
};
}