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