summaryrefslogtreecommitdiff
path: root/modules/desktop.nix
diff options
context:
space:
mode:
authorvin <vin@vineetk.net>2025-10-03 21:55:19 -0400
committervin <vin@vineetk.net>2025-10-03 21:59:16 -0400
commitb978d3406df70995fbbbedad5101450f5a5c4fdb (patch)
treec57fd954455ce771e714c3aaaa71bb58c957df12 /modules/desktop.nix
parentd52dba106ba98dc9bd8e04d289050122e3e3b690 (diff)
modularize more
Diffstat (limited to 'modules/desktop.nix')
-rw-r--r--modules/desktop.nix129
1 files changed, 129 insertions, 0 deletions
diff --git a/modules/desktop.nix b/modules/desktop.nix
new file mode 100644
index 0000000..fb153e7
--- /dev/null
+++ b/modules/desktop.nix
@@ -0,0 +1,129 @@
1{
2 config,
3 home-manager,
4 lib,
5 pkgs,
6 inputs,
7 llama-cpp,
8 ...
9}:
10
11{
12 imports = [
13 home-manager.nixosModules.default
14 ];
15
16 # boot options
17 boot = {
18 kernel.sysctl = {
19 "net.ipv4.ip_forward" = true;
20 "net.ipv6.conf.all.forwarding" = true;
21 };
22
23 kernelPackages = pkgs.linuxPackages_6_16;
24
25 loader = {
26 systemd-boot.enable = true;
27 efi.canTouchEfiVariables = true;
28 };
29
30 supportedFilesystems = [ "zfs" ];
31
32 zfs = {
33 devNodes = "/dev/disk/by-partuuid";
34 forceImportRoot = false;
35 };
36 };
37
38 services = {
39 # vpn
40 # TODO replace with wireguard again
41 tailscale = {
42 enable = true;
43 disableTaildrop = true;
44 disableUpstreamLogging = true;
45 extraUpFlags = [ "--login-server=https://controlplane.tailscale.com" ];
46 openFirewall = true;
47 useRoutingFeatures = "both";
48 };
49
50 # automatically scrub zfs pools (every week by default)
51 zfs.autoScrub.enable = true;
52
53 # graphical input
54 libinput = {
55 enable = true;
56
57 mouse.accelProfile = "flat";
58
59 touchpad = {
60 accelProfile = "flat";
61 tapping = true;
62 tappingButtonMap = "lrm";
63 };
64 };
65
66 # ssh
67 openssh = {
68 enable = true;
69
70 settings = {
71 KbdInteractiveAuthentication = false;
72 PasswordAuthentication = true;
73 PermitRootLogin = "no";
74 X11Forwarding = true;
75 };
76 };
77
78 # for yubikey
79 pcscd.enable = true;
80
81 # sound. for some reason, pipewire enabled itself when I tried
82 # using pulseaudio and home-manager, so had to disable pulseaudio.
83 pipewire = {
84 enable = true;
85 alsa.enable = true;
86 audio.enable = true;
87 pulse.enable = true;
88 wireplumber = {
89 enable = true;
90 extraConfig = {
91 "51-set-default-eq.conf" = {
92 text = ''
93 monitor.rules = [
94 {
95 matches = [
96 {
97 # This rule matches the node with the name of your sink (node 35)
98 "node.name" = "effect_input.eq6"
99 }
100 ]
101 actions = {
102 update-props = {
103 # This sets a very high priority, making it the default.
104 # Standard hardware is usually around 1000.
105 "priority.session" = 2001
106 }
107 }
108 }
109 ]
110 '';
111 };
112 };
113 };
114 };
115
116 # to get startx and use amdgpu driver
117 # WM in home-manager
118 xserver = {
119 enable = true;
120 autorun = false;
121 displayManager.startx.enable = true;
122 modules = [ pkgs.xf86_input_wacom ];
123 wacom.enable = true;
124 };
125 };
126
127 # extra systemd stuff
128 systemd.services.sshd.after = [ "tailscaled-autoconnect.service" ];
129}