My NixOS dotfiles
1{ config, lib, pkgs, ... }: {
2 imports = [ ./hardware.nix ];
3
4 # Boot
5 boot = {
6 supportedFilesystems = [ "bcachefs" ];
7 loader.efi.canTouchEfiVariables = true;
8 loader.systemd-boot.enable = lib.mkForce false;
9 loader.limine = {
10 enable = true;
11 efiSupport = true;
12 style.wallpapers = [];
13 extraEntries = builtins.readFile ./limine.extra.conf;
14 secureBoot.enable = true;
15 };
16 initrd.systemd.enable = true;
17 kernelPackages = pkgs.linuxPackages_latest;
18 binfmt.emulatedSystems = [ "aarch64-linux" ];
19 initrd.kernelModules = [ "i915" ];
20 };
21
22 # Networking
23 networking = {
24 hostName = "riptide";
25 networkmanager = {
26 enable = true;
27 wifi.backend = "iwd";
28 };
29 firewall = {
30 allowedUDPPorts = [ 51820 ];
31 };
32 wireguard.enable = true;
33 wireguard.interfaces = {
34 wg0 = {
35 ips = [ "192.168.69.3/24" ];
36 privateKeyFile = "/root/wireguard-keys/private";
37 listenPort = 51820;
38 peers = [
39 {
40 publicKey = "gDSnymmeuX4a8az4kUHcoltMMHb8mdJCti/TYV62kwA=";
41 allowedIPs = [ "192.168.69.0/24" ];
42 endpoint = "185.44.83.60:12345";
43 persistentKeepalive = 25;
44 }
45 ];
46 };
47 };
48 };
49 hardware.bluetooth.enable = false;
50 hardware.bluetooth.powerOnBoot = false;
51
52 # Services
53 systemd.services.NetworkManager-wait-online.enable = false;
54 services = {
55 openssh.enable = true;
56 openssh.openFirewall = true;
57 openssh.settings.PasswordAuthentication = false;
58 usbmuxd = {
59 enable = true;
60 package = pkgs.usbmuxd2;
61 };
62 fwupd.enable = true;
63 pipewire = {
64 enable = true;
65 alsa.enable = true;
66 alsa.support32Bit = true;
67 pulse.enable = true;
68 jack.enable = true;
69 };
70
71 # Graphical Settings
72 desktopManager.plasma6.enable = true;
73 displayManager.sddm = {
74 enable = true;
75 wayland.enable = true;
76 wayland.compositor = "kwin";
77 };
78 xserver = {
79 xkb.layout = "us";
80 xkb.variant = "dvorak";
81 };
82 gvfs.enable = true;
83 };
84
85 # User Account Setup
86 users.groups.plugdev = { };
87 users.users.sydney = {
88 isNormalUser = true;
89 extraGroups = [
90 "wheel"
91 "wireshark"
92 "plugdev"
93 "adbusers"
94 "libvirtd"
95 ];
96 shell = pkgs.zsh;
97 description = "Sydney";
98 packages = with pkgs; [
99 ghidra
100 jujutsu
101 zig_0_15
102 zed-editor
103 fastfetch
104 hyfetch
105 firefox
106 tmux
107 texlive.combined.scheme-small
108 (python3.withPackages (
109 ppkgs: with ppkgs; [
110 pwntools
111 scapy
112 pycryptodome
113 ]
114 ))
115 thunderbird-latest
116 libreoffice-qt6-fresh
117 fragments
118 vlc
119 lean4
120 ripgrep
121 clang-tools
122 winetricks
123 wineWowPackages.stable
124 darktable
125 zoom-us
126 corefonts
127 vistafonts
128 kicad
129 ghostty
130 hut
131 tor-browser
132 ];
133 };
134
135 # System Packages and Fonts
136 environment.systemPackages = with pkgs; [
137 kdePackages.sddm-kcm
138 pciutils
139 usbutils
140 sbctl
141 lutris
142 ifuse
143 libimobiledevice
144 idevicerestore
145 ];
146 fonts.packages = with pkgs; [
147 nerd-fonts.fira-code
148 nerd-fonts.blex-mono
149 noto-fonts-cjk-sans
150 noto-fonts-emoji
151 ibm-plex
152 maple-mono.truetype-autohint
153 ];
154
155 # Program Settings
156 programs.adb.enable = true;
157 programs.nix-ld.enable = true;
158 programs.dconf.enable = true;
159 programs.wireshark.enable = true;
160 programs.wireshark.package = pkgs.wireshark;
161
162 # Misc
163 security.rtkit.enable = true;
164 hardware.graphics = {
165 enable = true;
166 enable32Bit = true;
167 extraPackages = with pkgs; [
168 intel-compute-runtime
169 intel-media-driver
170 ocl-icd
171 rocmPackages.clr.icd
172 ];
173 extraPackages32 = with pkgs.pkgsi686Linux; [
174 intel-media-driver
175 ];
176 };
177
178 virtualisation.libvirtd = {
179 enable = true;
180 qemu = {
181 package = pkgs.qemu_kvm;
182 runAsRoot = true;
183 swtpm.enable = true;
184 ovmf = {
185 enable = true;
186 packages = [(pkgs.OVMF.override {
187 secureBoot = true;
188 tpmSupport = true;
189 }).fd];
190 };
191 };
192 };
193
194 system.stateVersion = "24.05";
195}