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.nix322
1 files changed, 322 insertions, 0 deletions
diff --git a/accounts/gkleen@skadhi/default.nix b/accounts/gkleen@skadhi/default.nix
new file mode 100644
index 00000000..5bb41677
--- /dev/null
+++ b/accounts/gkleen@skadhi/default.nix
@@ -0,0 +1,322 @@
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 ];
81 };
82
83 programs.nix-index.enable = true;
84
85 programs.alacritty = {
86 enable = true;
87 theme = "kitty";
88 settings = {
89 font = {
90 normal = {
91 family = "Fira Mono";
92 style = "Medium";
93 };
94 size = 10;
95 };
96 hints = {
97 alphabet = "aoeuhtns";
98 enabled = [
99 {
100 command = lib.getExe' pkgs.xdg-utils "xdg-open";
101 hyperlinks = true;
102 post_processing = true;
103 persist = false;
104 mouse.enabled = true;
105 binding = { key = "O"; mods = "Control|Shift"; };
106 regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\\u0000-\\u001F\\u007F-\\u009F<>\"\\\\s{-}\\\\^⟨⟩`\\\\\\\\]+";
107 }
108 {
109 command = lib.getExe' pkgs.wl-clipboard-rs "wl-copy";
110 hyperlinks = true;
111 post_processing = true;
112 persist = false;
113 mouse.enabled = true;
114 binding = { key = "Y"; mods = "Control|Shift"; };
115 regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\\u0000-\\u001F\\u007F-\\u009F<>\"\\\\s{-}\\\\^⟨⟩`\\\\\\\\]+";
116 }
117 ];
118 };
119 terminal.shell.program = lib.getExe config.programs.zsh.package;
120 };
121 };
122 systemd.user.services.alacritty = {
123 Unit = {
124 Requisite = ["graphical-session.target"];
125 After = [ "graphical-session.target" ];
126 };
127 Service = {
128 ExecStart = "${lib.getExe pkgs.alacritty} --daemon --socket %t/alacritty-activated.sock";
129 };
130 };
131 systemd.user.services.alacritty-proxy = {
132 Unit = {
133 Requires = ["alacritty.service" "alacritty-proxy.socket"];
134 After = ["alacritty.service" "alacritty-proxy.socket"];
135 };
136 Service = {
137 Type = "notify";
138 ExecStart = "${sysConfig.systemd.package}/lib/systemd/systemd-socket-proxyd %t/alacritty-activated.sock";
139 };
140 };
141 systemd.user.sockets."alacritty-proxy" = {
142 Socket = {
143 SocketMode = "0600";
144 ListenStream = "%t/alacritty.sock";
145 };
146 Install = {
147 WantedBy = ["sockets.target"];
148 };
149 };
150 programs.fuzzel = {
151 enable = true;
152 settings = {
153 main = {
154 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}";
155 layer = "overlay";
156 icon-theme = "Paper";
157 font = "Fira Sans";
158 };
159 colors = {
160 background = "000000cc";
161 text = "cdd6f4ff";
162 match = "94e2d5ff";
163 selection = "585b70ff";
164 selection-match = "94e2d5ff";
165 selection-text = "cdd6f4ff";
166 border = "b4befeff";
167 };
168 dmenu = {
169 exit-immediately-if-empty = true;
170 };
171 };
172 };
173
174 services.xembed-sni-proxy = {
175 enable = true;
176 package = pkgs.kdePackages.plasma-workspace;
177 };
178 services.network-manager-applet.enable = true;
179 services.blueman-applet.enable = true;
180
181 home.pointerCursor = {
182 enable = true;
183 package = pkgs.vanilla-dmz;
184 name = "Vanilla-DMZ-AA";
185 size = 16;
186
187 x11 = {
188 enable = true;
189 defaultCursor = "left_ptr";
190 };
191 gtk.enable = true;
192 };
193
194 gtk = {
195 enable = true;
196 font = {
197 package = pkgs.fira;
198 name = "Fira Sans";
199 size = 10;
200 };
201 theme = {
202 package = pkgs.kdePackages.breeze-gtk;
203 name = "Breeze-Dark";
204 };
205 iconTheme = {
206 package = pkgs.adwaita-icon-theme;
207 name = "Adwaita";
208 };
209 };
210 qt.enable = true;
211 qt.platformTheme.name = "gtk3";
212
213 qt.kde.settings.kwalletrc = {
214 KSecretD.Enabled = false;
215 Wallet."Default Wallet" = "store";
216 };
217
218 home.sessionVariables = {
219 QT_QPA_PLATFORMTHEME = lib.mkForce "gtk3";
220 SYSTEMD_ADJUST_TERMINAL_TITLE = "false";
221 SYSTEMD_TINT_BACKGROUND = "false";
222 };
223 home.extraProfileCommands = ''
224 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}}"
225 '';
226
227 xdg.configFile."systemd/user/home-manager.service.d/before-graphical-session.conf".text = ''
228 [Unit]
229 Before=graphical-session-pre.target
230 '';
231
232 fonts = {
233 fontconfig.enable = true;
234 };
235
236 i18n.inputMethod = {
237 enable = true;
238 type = "fcitx5";
239 fcitx5 = {
240 waylandFrontend = true;
241 settings = {
242 globalOptions."Behavior/DisabledAddons" = {
243 "0" = "clipboard";
244 };
245 inputMethod = {
246 "Groups/0" = {
247 Name = "Default";
248 "Default Layout" = "us";
249 DefaultIM = "keyboard-us";
250 };
251 "Groups/0/Items/0" = {
252 Name = "keyboard-us";
253 Layout = "";
254 };
255 "GroupOrder"."0" = "Default";
256 };
257 addons = {
258 classicui.globalSection = {
259 "Vertical Candidate List" = "True";
260 Font = "Fira Sans 10";
261 MenuFont = "Fira Sans 10";
262 TrayFont = "Fira Sans Demi-Bold 10";
263 UseDarkTheme = "True";
264 };
265 quickphrase = {
266 globalSection = {
267 "Choose Modifier" = "None";
268 Spell = "True";
269 FallbackSpellLanguage = "en";
270 };
271 sections.TriggerKey."0" = "Super+E";
272 };
273 };
274 };
275 };
276 };
277
278 home.packages = with pkgs; [
279 pwvucontrol wl-clipboard-rs element-desktop thunderbird
280 papers zoom-us wireshark virt-manager rclone worktime
281 libreoffice sieve-connect gimp3 inkscape glab remmina openscad
282 spice-record libation gnucash
283 ] ++ lib.mapAttrsToList (_name: pkg: pkgs.callPackage pkg { inherit sources flake flakeInputs; }) (customUtils.nixImport { dir = ./utils; });
284
285 dconf.settings = {
286 "org/gnome/desktop/interface".color-scheme = "prefer-dark";
287 };
288
289 services.etesync-dav = {
290 enable = true;
291 serverUrl = "https://etesync.yggdrasil.li";
292 };
293
294 programs.chromium.enable = true;
295
296 services.unison = {
297 enable = true;
298 pairs = {
299 documents = {
300 roots = ["${config.home.homeDirectory}/documents" "ssh://vidhar/documents"];
301 stateDirectory = "${config.xdg.stateHome}/documents.unison";
302 commandOptions = {
303 auto = "true";
304 batch = "true";
305 log = "false";
306 repeat = "watch";
307 sshcmd = toString (pkgs.runCommand "ssh-wrapped" {
308 buildInputs = [ pkgs.makeWrapper ];
309 } ''
310 makeWrapper ${lib.getExe' pkgs.openssh "ssh"} $out \
311 --add-flags ${lib.escapeShellArg "-o ControlMaster=no -o BatchMode=yes"}
312 '');
313 ui = "text";
314 };
315 };
316 };
317 };
318
319 programs.libreoffice.enable = true;
320 };
321 };
322}