1{
2 pkgs,
3 lib,
4 tlib,
5 config,
6 terra,
7 ...
8}@globalAttrs:
9let
10 l = lib // builtins;
11
12 nixosConfig = globalAttrs.config;
13in
14{
15 imports = [ ./stylix.nix ];
16
17 users.users.mayer = {
18 isNormalUser = true;
19 createHome = true;
20 home = "/home/mayer";
21 extraGroups = l.flatten [
22 "wheel"
23 "adbusers"
24 "dialout"
25 "video"
26 "input"
27 ];
28 shell = pkgs.nushell;
29 hashedPassword = "$6$spzqhAyJfhHy$iHgLBlhjGn1l8PnbjJdWTn1GPvcjMqYNKUzdCe/7IrX6sHNgETSr/Nfpdmq9FCXLhrAfwHOd/q/8SvfeIeNX4/";
30 };
31
32 environment.shells = with pkgs; [
33 bashInteractive
34 nushell
35 ];
36 programs = {
37 steam = {
38 enable = true;
39 package = pkgs.steam.override {
40 extraPkgs = pkgs': with pkgs'; [
41 vulkan-loader
42 wayland
43 wayland-protocols
44 xorg.libXcursor
45 xorg.libXi
46 xorg.libXinerama
47 xorg.libXScrnSaver
48 libpng
49 libpulseaudio
50 libvorbis
51 stdenv.cc.cc.lib # Provides libstdc++.so.6
52 libkrb5
53 keyutils
54 ];
55 };
56 extraCompatPackages = with pkgs; [
57 proton-ge-bin
58 ];
59 };
60 gamescope = {
61 enable = true;
62 capSysNice = true;
63 };
64 gamemode.enable = true;
65 appimage = {
66 enable = true;
67 binfmt = true;
68 };
69 niri.enable = true;
70 };
71 systemd = {
72 targets.network-online.enable = false;
73 services = {
74 systemd-networkd-wait-online.enable = false;
75 NetworkManager-wait-online.enable = false;
76 };
77 };
78
79 services.gnome.gnome-keyring.enable = true;
80 security.polkit.enable = true;
81
82 security.pam.loginLimits = [
83 {
84 domain = "@users";
85 item = "rtprio";
86 type = "-";
87 value = 1;
88 }
89 ];
90
91 xdg.portal = {
92 enable = true;
93 wlr.enable = true;
94 xdgOpenUsePortal = true;
95 };
96
97 services.joycond.enable = true;
98
99 home-manager.users.mayer =
100 {
101 pkgs,
102 inputs,
103 ...
104 }:
105 {
106 imports =
107 let
108 modulesToEnable = l.flatten [
109 [
110 "settings"
111 "niri"
112 "foot"
113 ]
114 # cli stuff
115 [
116 "zoxide"
117 "direnv"
118 "nushell"
119 ]
120 # dev stuff
121 [
122 "zed"
123 "helix"
124 "git"
125 "ssh"
126 ]
127 [
128 "zen"
129 "discord"
130 ]
131 ];
132 in
133 l.flatten [
134 (tlib.prefixStrings "${inputs.self}/users/modules/" modulesToEnable)
135 ];
136
137 home = {
138 homeDirectory = nixosConfig.users.users.mayer.home;
139 packages = (with pkgs; [
140 # Font stuff
141 noto-fonts-cjk-sans
142 font-awesome
143 dejavu_fonts
144 # Programs
145 imv
146 mpv
147 ffmpeg
148 mupdf
149 xdg-utils
150 transmission_4-gtk
151 prismlauncher
152 lutris
153 gearlever
154 signal-desktop
155 bs-manager
156 cemu
157 tor-browser
158 supersonic-wayland
159 ]) ++ [terra.helium];
160 };
161
162 fonts.fontconfig.enable = l.mkForce true;
163 };
164}