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