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