btw i use nix
1{
2 pkgs,
3 lib,
4 config,
5 ...
6}:
7
8{
9 imports = [
10 ./hardware-configuration.nix
11 ./backups.nix
12 ];
13
14 custom = {
15 enable = true;
16 tailscale = true;
17 laptop = true;
18 printing = true;
19 gui.i3 = true;
20 gui.sway = true;
21 workstation = true;
22 autoUpgrade.enable = true;
23 homeManager.enable = true;
24 zsa = true;
25 };
26
27 home-manager.users.${config.custom.username} = {
28 services.kdeconnect.enable = true;
29 services.spotifyd = {
30 enable = true;
31 settings.global = {
32 username = "ryangibb321@gmail.com";
33 password_cmd = "pass show spotify/ryangibb321@gmail.com";
34 };
35 };
36 custom = {
37 machineColour = "blue";
38 mail.enable = true;
39 calendar.enable = true;
40 battery.enable = true;
41 emacs.enable = true;
42 };
43 home.sessionVariables = {
44 LEDGER_FILE = "~/vault/finaces.ledger";
45 };
46 programs.git.extraConfig.commit.gpgSign = true;
47 };
48
49 boot.loader.grub = {
50 enable = true;
51 default = "saved";
52 device = "nodev";
53 efiSupport = true;
54 useOSProber = true;
55 };
56
57 environment.systemPackages = with pkgs; [
58 gcc
59 dell-command-configure
60 file-roller
61 unzip
62 cheese
63 gparted
64 chromium
65 calibre
66 zotero
67 element-desktop
68 iamb
69 spotify
70 gimp
71 (python3.withPackages (
72 p: with p; [
73 numpy
74 matplotlib
75 pandas
76 ]
77 ))
78 lsof
79 gthumb
80 restic
81 mosquitto
82 texlive.combined.scheme-full
83 typst
84 evince
85 pdfpc
86 krop
87 transmission_4
88 transmission_4-gtk
89 libreoffice
90 obs-studio
91 xournalpp
92 inkscape
93 kdenlive
94 tor-browser-bundle-bin
95 ffmpeg
96 audio-recorder
97 speechd
98 deploy-rs
99 nix-prefetch-git
100 tcpdump
101 pandoc
102 powertop
103 toot
104 ledger
105 llm
106 (writeShellScriptBin "q" ''
107 llm -m 4 "$*"
108 '')
109 (writeShellScriptBin "qc" ''
110 llm -m 4 "$*" -c
111 '')
112 ddcutil
113 anki
114 (aspellWithDicts (
115 ps: with ps; [
116 en
117 en-computers
118 en-science
119 ]
120 ))
121 moreutils
122 gnome-calendar
123
124 # nix
125 nixd
126 nixfmt-rfc-style
127 # ocaml
128 opam
129 pkg-config
130 ocamlPackages.ocaml-lsp
131 ocamlPackages.ocamlformat
132 # rust
133 cargo
134 rustc
135 rust-analyzer
136 rustfmt
137 # haskell
138 cabal-install
139 ghc
140 haskell-language-server
141 # python
142 pyright
143 black
144 # jave
145 jdt-language-server
146 nodejs_18
147 # c
148 clang-tools
149 # lua
150 lua-language-server
151 # other
152 ltex-ls
153 typst-lsp
154 ];
155
156 services.gnome.gnome-keyring.enable = true;
157 programs.seahorse.enable = true;
158
159 programs.dconf.enable = true;
160 services.gnome.evolution-data-server.enable = true;
161 services.gnome.gnome-online-accounts.enable = true;
162
163 virtualisation.docker.enable = true;
164 users.users.ryan.extraGroups = [ "docker" ];
165
166 virtualisation.virtualbox.host.enable = true;
167 users.extraGroups.vboxusers.members = [ "ryan" ];
168
169 systemd.extraConfig = ''
170 DefaultTimeoutStopSec=30s
171 '';
172
173 programs.steam.enable = true;
174
175 security.sudo.extraConfig = ''
176 Defaults !tty_tickets
177 '';
178
179 # sometimes I want to keep the cache for operating without internet
180 nix.gc.automatic = lib.mkForce false;
181
182 # for CL VPN
183 networking.networkmanager.enableStrongSwan = true;
184
185 services = {
186 syncthing = {
187 enable = true;
188 user = config.custom.username;
189 dataDir = "/home/ryan/syncthing";
190 configDir = "/home/ryan/.config/syncthing";
191 };
192 };
193
194 networking.hostId = "e768032f";
195
196 #system.includeBuildDependencies = true;
197 nix = {
198 distributedBuilds = true;
199 extraOptions = ''
200 builders-use-substitutes = true
201 '';
202 };
203
204 # https://github.com/NixOS/nixpkgs/issues/180175
205 systemd.services.NetworkManager-wait-online.enable = false;
206
207 # https://github.com/NixOS/nixpkgs/issues/330685
208 boot.extraModprobeConfig = ''
209 options snd-hda-intel dmic_detect=0
210 '';
211
212 # ddcutil
213 hardware.i2c.enable = true;
214}