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.nix239
1 files changed, 218 insertions, 21 deletions
diff --git a/accounts/gkleen@skadhi/default.nix b/accounts/gkleen@skadhi/default.nix
index 4c0c4028..18e23131 100644
--- a/accounts/gkleen@skadhi/default.nix
+++ b/accounts/gkleen@skadhi/default.nix
@@ -1,10 +1,13 @@
1{ flake, flakeInputs, userName, config, lib, ... }: 1{ flake, flakeInputs, userName, config, pkgs, lib, sources, ... }:
2let 2let
3 user = config.users.users.${userName}; 3 user = config.users.users.${userName};
4in { 4in {
5 imports = with flake.nixosModules.userProfiles.${userName}; [ 5 imports = (with flake.nixosModules.userProfiles.${userName}; [
6 zsh 6 zsh mpv yt-dlp ./greetd.nix
7 ]; 7 ]) ++ (with flake.nixosModules.systemProfiles; [
8 niri-unstable
9 flakeInputs.nixVirt.nixosModules.default
10 ]);
8 11
9 config = { 12 config = {
10 users.users.gkleen.group = "gkleen"; 13 users.users.gkleen.group = "gkleen";
@@ -17,9 +20,37 @@ in {
17 }; 20 };
18 }; 21 };
19 22
20 home-manager.users.${userName} = let sysConfig = config; in { config, ... }: { 23 programs = {
24 dconf.enable = true;
25 niri.enable = true;
26 };
27 environment.sessionVariables."GTK_USE_PORTAL" = "1";
28 services.niri-autoselect-portal.enable = true;
29 xdg.portal = {
30 enable = true;
31 extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
32 config.niri = {
33 default = lib.mkForce ["gnome" "gtk"];
34 "org.freedesktop.impl.portal.FileChooser" = ["gtk"];
35 "org.freedesktop.impl.portal.OpenFile" = ["gtk"];
36 "org.freedesktop.impl.portal.Access" = ["gtk"];
37 "org.freedesktop.impl.portal.Notification" = ["gtk"];
38 "org.freedesktop.impl.portal.Secret" = ["none"];
39 "org.freedesktop.impl.portal.Inhibit" = ["none"];
40 };
41 };
42
43 security.pam.services.quickshell = {};
44
45 services.upower.enable = true;
46 environment.persistence."/persistent".directories = [
47 "/var/lib/upower"
48 ];
49
50 home-manager.users.${userName} = { sysConfig, config, ... }: {
21 imports = [ 51 imports = [
22 flakeInputs.nix-index-database.homeModules.nix-index 52 flakeInputs.nix-index-database.homeModules.nix-index
53 ./niri.nix ./shell ./emacs ./zsh
23 ]; 54 ];
24 55
25 home.stateVersion = "26.05"; 56 home.stateVersion = "26.05";
@@ -30,26 +61,192 @@ in {
30 ]; 61 ];
31 }; 62 };
32 63
33 programs.zsh.dirHashes = let 64 programs.nix-index.enable = true;
34 flakeHashes = lib.mapAttrs' (n: v: lib.nameValuePair (inputNames.${n} or n) (toString v)) flakeInputs; 65
35 inputNames = { 66 programs.alacritty = {
36 self = "nixos"; 67 enable = true;
68 theme = "kitty";
69 settings = {
70 font = {
71 normal = {
72 family = "Fira Mono";
73 style = "Medium";
74 };
75 size = 10;
76 };
77 hints = {
78 alphabet = "aoeuhtns";
79 enabled = [
80 {
81 command = lib.getExe' pkgs.xdg-utils "xdg-open";
82 hyperlinks = true;
83 post_processing = true;
84 persist = false;
85 mouse.enabled = true;
86 binding = { key = "O"; mods = "Control|Shift"; };
87 regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\\u0000-\\u001F\\u007F-\\u009F<>\"\\\\s{-}\\\\^⟨⟩`\\\\\\\\]+";
88 }
89 {
90 command = lib.getExe' pkgs.wl-clipboard-rs "wl-copy";
91 hyperlinks = true;
92 post_processing = true;
93 persist = false;
94 mouse.enabled = true;
95 binding = { key = "Y"; mods = "Control|Shift"; };
96 regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\\u0000-\\u001F\\u007F-\\u009F<>\"\\\\s{-}\\\\^⟨⟩`\\\\\\\\]+";
97 }
98 ];
99 };
100 terminal.shell.program = lib.getExe config.programs.zsh.package;
101 };
102 };
103 systemd.user.services.alacritty = {
104 Unit = {
105 Requisite = ["graphical-session.target"];
106 After = [ "graphical-session.target" ];
37 }; 107 };
38 in flakeHashes // { 108 Service = {
39 docs = "$HOME/documents"; 109 ExecStart = "${lib.getExe pkgs.alacritty} --daemon --socket %t/alacritty-activated.sock";
40 dl = "$HOME/Downloads"; 110 };
41 scrot = "$HOME/screenshots"; 111 };
42 media = "$HOME/media"; 112 systemd.user.services.alacritty-proxy = {
113 Unit = {
114 Requires = ["alacritty.service" "alacritty-proxy.socket"];
115 After = ["alacritty.service" "alacritty-proxy.socket"];
116 };
117 Service = {
118 Type = "notify";
119 ExecStart = "${sysConfig.systemd.package}/lib/systemd/systemd-socket-proxyd %t/alacritty-activated.sock";
120 };
121 };
122 systemd.user.sockets."alacritty-proxy" = {
123 Socket = {
124 SocketMode = "0600";
125 ListenStream = "%t/alacritty.sock";
126 };
127 Install = {
128 WantedBy = ["sockets.target"];
129 };
130 };
131 programs.fuzzel = {
132 enable = true;
133 settings = {
134 main = {
135 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}";
136 layer = "overlay";
137 icon-theme = "Paper";
138 font = "Fira Sans";
139 };
140 colors = {
141 background = "000000cc";
142 text = "cdd6f4ff";
143 match = "94e2d5ff";
144 selection = "585b70ff";
145 selection-match = "94e2d5ff";
146 selection-text = "cdd6f4ff";
147 border = "b4befeff";
148 };
149 dmenu = {
150 exit-immediately-if-empty = true;
151 };
43 }; 152 };
44 programs.starship.settings = {
45 directory.substitutions = lib.mapAttrs' (name: value: let
46 value' = builtins.unsafeDiscardStringContext value;
47 value'' = if lib.hasPrefix "$HOME/" value' then "~" + lib.removePrefix "$HOME" value' else value';
48 in lib.nameValuePair value'' "~${name}"
49 ) config.programs.zsh.dirHashes;
50 }; 153 };
51 154
52 programs.nix-index.enable = true; 155 services.xembed-sni-proxy = {
156 enable = true;
157 package = pkgs.kdePackages.plasma-workspace;
158 };
159 services.network-manager-applet.enable = true;
160 services.blueman-applet.enable = true;
161
162 home.pointerCursor = {
163 package = pkgs.vanilla-dmz;
164 name = "Vanilla-DMZ-AA";
165 size = 16;
166
167 x11 = {
168 enable = true;
169 defaultCursor = "left_ptr";
170 };
171 gtk.enable = true;
172 };
173
174 gtk = {
175 enable = true;
176 font = {
177 package = pkgs.fira;
178 name = "Fira Sans";
179 size = 10;
180 };
181 theme = {
182 package = pkgs.kdePackages.breeze-gtk;
183 name = "Breeze-Dark";
184 };
185 iconTheme = {
186 package = pkgs.adwaita-icon-theme;
187 name = "Adwaita";
188 };
189 };
190 qt.enable = true;
191 qt.platformTheme.name = "gtk";
192
193 home.sessionVariables = {
194 QT_QPA_PLATFORMTHEME = lib.mkForce "gtk3";
195 };
196 home.extraProfileCommands = ''
197 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}}"
198 '';
199
200 xdg.configFile."systemd/user/home-manager.service.d/before-graphical-session.conf".text = ''
201 [Unit]
202 Before=graphical-session-pre.target
203 '';
204
205 fonts = {
206 fontconfig.enable = true;
207 };
208
209 i18n.inputMethod = {
210 enable = true;
211 type = "fcitx5";
212 fcitx5 = {
213 waylandFrontend = true;
214 settings = {
215 globalOptions."Behavior/DisabledAddons" = {
216 "0" = "clipboard";
217 };
218 inputMethod = {
219 "Groups/0" = {
220 Name = "Default";
221 "Default Layout" = "us";
222 DefaultIM = "keyboard-us";
223 };
224 "Groups/0/Items/0" = {
225 Name = "keyboard-us";
226 Layout = "";
227 };
228 "GroupOrder"."0" = "Default";
229 };
230 addons = {
231 classicui.globalSection = {
232 "Vertical Candidate List" = "True";
233 Font = "Fira Sans 10";
234 MenuFont = "Fira Sans 10";
235 TrayFont = "Fira Sans Demi-Bold 10";
236 UseDarkTheme = "True";
237 };
238 quickphrase = {
239 globalSection = {
240 "Choose Modifier" = "None";
241 Spell = "True";
242 FallbackSpellLanguage = "en";
243 };
244 sections.TriggerKey."0" = "Super+E";
245 };
246 };
247 };
248 };
249 };
53 }; 250 };
54 }; 251 };
55} 252}