diff options
Diffstat (limited to 'modules/desktop.nix')
| -rw-r--r-- | modules/desktop.nix | 129 |
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 | } | ||
