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