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