summaryrefslogtreecommitdiff
path: root/accounts/gkleen@skadhi/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'accounts/gkleen@skadhi/default.nix')
-rw-r--r--accounts/gkleen@skadhi/default.nix331
1 files changed, 331 insertions, 0 deletions
diff --git a/accounts/gkleen@skadhi/default.nix b/accounts/gkleen@skadhi/default.nix
new file mode 100644
index 00000000..610fa551
--- /dev/null
+++ b/accounts/gkleen@skadhi/default.nix
@@ -0,0 +1,331 @@
1{ flake, flakeInputs, userName, config, pkgs, lib, customUtils, sources, ... }:
2let
3 user = config.users.users.${userName};
4in {
5 imports = [
6 ./greetd.nix ./rzm ./email ./keepassxc.nix
7 ] ++ (with flake.nixosModules.userProfiles.${userName}; [
8 zsh mpv yt-dlp
9 ]) ++ (with flake.nixosModules.systemProfiles; [
10 niri-unstable
11 flakeInputs.nixVirt.nixosModules.default
12 ]);
13
14 config = {
15 users.users.gkleen.group = "gkleen";
16 users.groups.gkleen = {};
17 systemd.tmpfiles.settings.home-directories."/persistent/${user.home}" = lib.mkForce {
18 v = {
19 mode = user.homeMode;
20 user = user.name;
21 inherit (user) group;
22 };
23 };
24
25 programs = {
26 dconf.enable = true;
27 niri.enable = true;
28 };
29 environment.sessionVariables."GTK_USE_PORTAL" = "1";
30 services.niri-autoselect-portal.enable = true;
31 xdg.portal = {
32 enable = true;
33 extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
34 config.niri = {
35 default = lib.mkForce ["gnome" "gtk"];
36 "org.freedesktop.impl.portal.FileChooser" = ["gtk"];
37 "org.freedesktop.impl.portal.OpenFile" = ["gtk"];
38 "org.freedesktop.impl.portal.Access" = ["gtk"];
39 "org.freedesktop.impl.portal.Notification" = ["gtk"];
40 "org.freedesktop.impl.portal.Secret" = ["none"];
41 "org.freedesktop.impl.portal.Inhibit" = ["none"];
42 };
43 };
44
45 security.pam.services.quickshell = {};
46
47 services.upower.enable = true;
48 environment.persistence."/persistent".directories = [
49 "/var/lib/upower"
50 ];
51
52 services.dbus.packages = with pkgs;
53 [ dbus dconf
54 xdg-desktop-portal-gtk
55 gcr_4
56 ];
57
58 nixpkgs.externalConfig.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
59 "zoom"
60 ];
61
62 home-manager.users.${userName} = { sysConfig, config, ... }: {
63 imports = [
64 flakeInputs.nix-index-database.homeModules.nix-index
65 ./niri.nix ./shell ./emacs ./zsh ./ssh ./firefox
66 ];
67
68 home.stateVersion = "26.05";
69
70 home.persistence."/persistent" = {
71 directories = [
72 "Downloads" "documents" "screenshots" "media" "projects"
73 ".local/share/direnv" ".local/share/nix"
74 ".config/Element" ".thunderbird"
75 ".config/chromium"
76 ".config/sops"
77 ".local/share/etesync-dav"
78 (lib.removePrefix (config.home.homeDirectory + "/") config.services.unison.pairs."documents".stateDirectory)
79 ".aqbanking"
80 ".gnupg"
81 ];
82 };
83
84 programs.nix-index.enable = true;
85
86 programs.alacritty = {
87 enable = true;
88 theme = "kitty";
89 settings = {
90 font = {
91 normal = {
92 family = "Fira Mono";
93 style = "Medium";
94 };
95 size = 10;
96 };
97 hints = {
98 alphabet = "aoeuhtns";
99 enabled = [
100 {
101 command = lib.getExe' pkgs.xdg-utils "xdg-open";
102 hyperlinks = true;
103 post_processing = true;
104 persist = false;
105 mouse.enabled = true;
106 binding = { key = "O"; mods = "Control|Shift"; };
107 regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\\u0000-\\u001F\\u007F-\\u009F<>\"\\\\s{-}\\\\^⟨⟩`\\\\\\\\]+";
108 }
109 {
110 command = lib.getExe' pkgs.wl-clipboard-rs "wl-copy";
111 hyperlinks = true;
112 post_processing = true;
113 persist = false;
114 mouse.enabled = true;
115 binding = { key = "Y"; mods = "Control|Shift"; };
116 regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\\u0000-\\u001F\\u007F-\\u009F<>\"\\\\s{-}\\\\^⟨⟩`\\\\\\\\]+";
117 }
118 ];
119 };
120 terminal.shell.program = lib.getExe config.programs.zsh.package;
121 };
122 };
123 systemd.user.services.alacritty = {
124 Unit = {
125 Requisite = ["graphical-session.target"];
126 After = [ "graphical-session.target" ];
127 };
128 Service = {
129 ExecStart = "${lib.getExe pkgs.alacritty} --daemon --socket %t/alacritty-activated.sock";
130 };
131 };
132 systemd.user.services.alacritty-proxy = {
133 Unit = {
134 Requires = ["alacritty.service" "alacritty-proxy.socket"];
135 After = ["alacritty.service" "alacritty-proxy.socket"];
136 };
137 Service = {
138 Type = "notify";
139 ExecStart = "${sysConfig.systemd.package}/lib/systemd/systemd-socket-proxyd %t/alacritty-activated.sock";
140 };
141 };
142 systemd.user.sockets."alacritty-proxy" = {
143 Socket = {
144 SocketMode = "0600";
145 ListenStream = "%t/alacritty.sock";
146 };
147 Install = {
148 WantedBy = ["sockets.target"];
149 };
150 };
151 programs.fuzzel = {
152 enable = true;
153 settings = {
154 main = {
155 terminal = "${lib.getExe config.programs.alacritty.package} msg --socket /run/user/1000/alacritty.sock create-window --command ${lib.getExe' sysConfig.systemd.package "systemd-run"} --user --pty --same-dir --wait --collect --quiet --service-type=exec --expand-environment=no {cmd}";
156 layer = "overlay";
157 icon-theme = "Paper";
158 font = "Fira Sans";
159 };
160 colors = {
161 background = "000000cc";
162 text = "cdd6f4ff";
163 match = "94e2d5ff";
164 selection = "585b70ff";
165 selection-match = "94e2d5ff";
166 selection-text = "cdd6f4ff";
167 border = "b4befeff";
168 };
169 dmenu = {
170 exit-immediately-if-empty = true;
171 };
172 };
173 };
174
175 services.xembed-sni-proxy = {
176 enable = true;
177 package = pkgs.kdePackages.plasma-workspace;
178 };
179 services.network-manager-applet.enable = true;
180 services.blueman-applet.enable = true;
181
182 home.pointerCursor = {
183 enable = true;
184 package = pkgs.vanilla-dmz;
185 name = "Vanilla-DMZ-AA";
186 size = 16;
187
188 x11 = {
189 enable = true;
190 defaultCursor = "left_ptr";
191 };
192 gtk.enable = true;
193 };
194
195 gtk = {
196 enable = true;
197 font = {
198 package = pkgs.fira;
199 name = "Fira Sans";
200 size = 10;
201 };
202 theme = {
203 package = pkgs.kdePackages.breeze-gtk;
204 name = "Breeze-Dark";
205 };
206 iconTheme = {
207 package = pkgs.adwaita-icon-theme;
208 name = "Adwaita";
209 };
210 };
211 qt.enable = true;
212 qt.platformTheme.name = "gtk3";
213
214 qt.kde.settings.kwalletrc = {
215 KSecretD.Enabled = false;
216 Wallet."Default Wallet" = "store";
217 };
218
219 home.sessionVariables = {
220 QT_QPA_PLATFORMTHEME = lib.mkForce "gtk3";
221 SYSTEMD_ADJUST_TERMINAL_TITLE = "false";
222 SYSTEMD_TINT_BACKGROUND = "false";
223 };
224 home.extraProfileCommands = ''
225 export XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}''${XDG_DATA_DIRS:+:''${XDG_DATA_DIRS}}"
226 '';
227
228 xdg.configFile."systemd/user/home-manager.service.d/before-graphical-session.conf".text = ''
229 [Unit]
230 Before=graphical-session-pre.target
231 '';
232
233 fonts = {
234 fontconfig.enable = true;
235 };
236
237 i18n.inputMethod = {
238 enable = true;
239 type = "fcitx5";
240 fcitx5 = {
241 waylandFrontend = true;
242 settings = {
243 globalOptions."Behavior/DisabledAddons" = {
244 "0" = "clipboard";
245 };
246 inputMethod = {
247 "Groups/0" = {
248 Name = "Default";
249 "Default Layout" = "us";
250 DefaultIM = "keyboard-us";
251 };
252 "Groups/0/Items/0" = {
253 Name = "keyboard-us";
254 Layout = "";
255 };
256 "GroupOrder"."0" = "Default";
257 };
258 addons = {
259 classicui.globalSection = {
260 "Vertical Candidate List" = "True";
261 Font = "Fira Sans 10";
262 MenuFont = "Fira Sans 10";
263 TrayFont = "Fira Sans Demi-Bold 10";
264 UseDarkTheme = "True";
265 };
266 quickphrase = {
267 globalSection = {
268 "Choose Modifier" = "None";
269 Spell = "True";
270 FallbackSpellLanguage = "en";
271 };
272 sections.TriggerKey."0" = "Super+E";
273 };
274 };
275 };
276 };
277 };
278
279 home.packages = with pkgs; [
280 pwvucontrol wl-clipboard-rs element-desktop thunderbird
281 papers zoom-us wireshark virt-manager rclone worktime
282 libreoffice sieve-connect gimp3 inkscape glab remmina openscad
283 spice-record libation gnucash
284 ] ++ lib.mapAttrsToList (_name: pkg: pkgs.callPackage pkg { inherit sources flake flakeInputs; }) (customUtils.nixImport { dir = ./utils; });
285
286 dconf.settings = {
287 "org/gnome/desktop/interface".color-scheme = "prefer-dark";
288 };
289
290 services.etesync-dav = {
291 enable = true;
292 serverUrl = "https://etesync.yggdrasil.li";
293 };
294
295 programs.chromium.enable = true;
296
297 services.unison = {
298 enable = true;
299 pairs = {
300 documents = {
301 roots = ["${config.home.homeDirectory}/documents" "ssh://vidhar/documents"];
302 stateDirectory = "${config.xdg.stateHome}/documents.unison";
303 commandOptions = {
304 auto = "true";
305 batch = "true";
306 log = "false";
307 repeat = "watch";
308 sshcmd = toString (pkgs.runCommand "ssh-wrapped" {
309 buildInputs = [ pkgs.makeWrapper ];
310 } ''
311 makeWrapper ${lib.getExe' pkgs.openssh "ssh"} $out \
312 --add-flags ${lib.escapeShellArg "-o ControlMaster=no -o BatchMode=yes"}
313 '');
314 ui = "text";
315 };
316 };
317 };
318 };
319
320 programs.libreoffice.enable = true;
321
322 programs.imv.enable = true;
323
324 sops.secrets."nixpkgs-pr-watch.toml" = {
325 format = "binary";
326 sopsFile = ./nixpkgs-pr-watch.toml;
327 path = ".config/nixpkgs-pr-watch.toml";
328 };
329 };
330 };
331}