This repository has no description
2.4 kB
96 lines
1{ config, pkgs, ... }:
2
3let
4 mainUser = config.users.extraUsers.mainUser;
5 vdoom = pkgs.writers.writeDash "vdoom" ''
6 ${pkgs.zandronum}/bin/zandronum \
7 -fov 120 \
8 "$@"
9 '';
10 doom = pkgs.writers.writeDash "doom" ''
11 DOOM_DIR=''${DOOM_DIR:-~/doom/}
12 ${vdoom} \
13 -file $DOOM_DIR/lib/brutalv21.pk3 \
14 "$@"
15 '';
16 doom1 = pkgs.writers.writeDashBin "doom1" ''
17 DOOM_DIR=''${DOOM_DIR:-~/doom/}
18 ${doom} -iwad $DOOM_DIR/wads/stock/doom.wad "$@"
19 '';
20 doom2 = pkgs.writers.writeDashBin "doom2" ''
21 DOOM_DIR=''${DOOM_DIR:-~/doom/}
22 ${doom} -iwad $DOOM_DIR/wads/stock/doom2.wad "$@"
23 '';
24 vdoom1 = pkgs.writers.writeDashBin "vdoom1" ''
25 DOOM_DIR=''${DOOM_DIR:-~/doom/}
26 ${vdoom} -iwad $DOOM_DIR/wads/stock/doom.wad "$@"
27 '';
28 vdoom2 = pkgs.writers.writeDashBin "vdoom2" ''
29 DOOM_DIR=''${DOOM_DIR:-~/doom/}
30 ${vdoom} -iwad $DOOM_DIR/wads/stock/doom2.wad "$@"
31 '';
32
33 doomservercfg = pkgs.writeText "doomserver.cfg" ''
34 skill 7
35 #survival true
36 #sv_maxlives 4
37 #sv_norespawn true
38 #sv_weapondrop true
39 no_jump true
40 #sv_noweaponspawn true
41 sv_sharekeys true
42 sv_survivalcountdowntime 1
43 sv_noteamselect true
44 sv_updatemaster false
45 #sv_coop_loseinventory true
46 #cl_startasspectator false
47 #lms_spectatorview false
48 '';
49
50 vdoomserver = pkgs.writers.writeDashBin "vdoomserver" ''
51 DOOM_DIR=''${DOOM_DIR:-~/doom/}
52
53 ${pkgs.zandronum}/bin/zandronum-server \
54 +exec ${doomservercfg} \
55 "$@"
56 '';
57
58in {
59 users.extraUsers = {
60 games = {
61 name = "games";
62 description = "user playing games";
63 home = "/home/games";
64 extraGroups = [ "audio" "video" "input" "loot" "pipewire" ];
65 createHome = true;
66 useDefaultShell = true;
67 packages = with pkgs; [
68 # minecraft
69 # ftb
70 # steam-run
71 # scummvm
72 # dolphinEmu
73 # doom1
74 # doom2
75 # protontricks
76 # vdoom1
77 # vdoom2
78 # vdoomserver
79 retroarchBare
80 ];
81 isNormalUser = true;
82 };
83 };
84
85 hardware.opengl.driSupport32Bit = true;
86 hardware.pulseaudio.support32Bit = true;
87
88 security.sudo.extraConfig = ''
89 ${mainUser.name} ALL=(games) NOPASSWD: ALL
90 '';
91
92 krebs.iptables.tables.filter.INPUT.rules = [
93 { predicate = "-p tcp --dport 10666"; target = "ACCEPT"; }
94 { predicate = "-p udp --dport 10666"; target = "ACCEPT"; }
95 ];
96}