nix machine / user configurations
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}