diff --git a/users/blake/dots/default.nix b/users/blake/dots/default.nix
index ec85681..48283f5 100644
--- a/users/blake/dots/default.nix
+++ b/users/blake/dots/default.nix
@@ -11,7 +11,7 @@
./waybar
./hypr
- ./neovim
+ ./nvf
./lf
./zsh
./ssh
diff --git a/users/blake/dots/git/default.nix b/users/blake/dots/git/default.nix
index 483bdf1..f779385 100644
--- a/users/blake/dots/git/default.nix
+++ b/users/blake/dots/git/default.nix
@@ -4,17 +4,31 @@
lib,
inputs,
...
-}: {
- # configure git
- programs.git = {
- enable = true;
- userName = "blake";
- userEmail = "me@blakedheld.xyz";
- extraConfig = {
- init.defaultBranch = "trunk";
- core.editor = "nvim";
- pull.rebase = true;
- push.autoSetupRemote = true;
+}:
+let
+ program = "git";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
+
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
+ };
+
+ config = lib.mkIf cfg.enable {
+
+
+ # configure git
+ programs.${program} = {
+ enable = true;
+ userName = "blake";
+ userEmail = "me@blakedheld.xyz";
+ extraConfig = {
+ init.defaultBranch = "trunk";
+ core.editor = "nvim";
+ pull.rebase = true;
+ push.autoSetupRemote = true;
+ };
};
};
}
diff --git a/users/blake/dots/gpg/default.nix b/users/blake/dots/gpg/default.nix
index 1b50a71..4088ae3 100644
--- a/users/blake/dots/gpg/default.nix
+++ b/users/blake/dots/gpg/default.nix
@@ -3,18 +3,31 @@
lib,
config,
...
-}: {
- programs.gpg = {
- enable = true;
+}:
+let
+ program = "gpg";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
+
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
};
- services.gpg-agent = {
- enable = true;
- enableSshSupport = true;
- pinentry.package = pkgs.pinentry-qt;
- pinentry.program = "pinentry-qt";
+
+ config = lib.mkIf cfg.enable {
+
+ programs.${program} = {
+ enable = true;
+ };
+ services.gpg-agent = {
+ enable = true;
+ enableSshSupport = true;
+ pinentry.package = pkgs.pinentry-qt;
+ pinentry.program = "pinentry-qt";
+ };
+ # install pinentry programs conditionaly based on os
+ home.packages =
+ lib.optional pkgs.stdenv.isDarwin pkgs.pinentry_mac
+ ++ lib.optional pkgs.stdenv.isLinux pkgs.pinentry-qt;
};
- # install pinentry programs conditionaly based on os
- home.packages =
- lib.optional pkgs.stdenv.isDarwin pkgs.pinentry_mac
- ++ lib.optional pkgs.stdenv.isLinux pkgs.pinentry-qt;
}
diff --git a/users/blake/dots/hypr/default.nix b/users/blake/dots/hypr/default.nix
index d0a0f64..294e318 100644
--- a/users/blake/dots/hypr/default.nix
+++ b/users/blake/dots/hypr/default.nix
@@ -1,378 +1,393 @@
{
pkgs,
+ lib,
config,
...
-}: {
- home.packages = with pkgs; [
- nwg-displays
- posy-cursors
- hyprpicker
- ];
+}:
- wayland.windowManager.hyprland = {
- enable = true;
- systemd.variables = ["--all"];
- settings = {
- # --- displays ---
- source = [
- "~/.config/hypr/monitors.conf"
- "~/.config/hypr/workspaces.conf"
- ];
+let
+ program = "hypr";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
- # --- environment variables ---
- env = [
- "MOZ_ENABLE_WAYLAND,1"
- "XDG_CURRENT_DESKTOP,Hyprland"
- "XDG_SESSION_TYPE,wayland"
- "XDG_SESSION_DESKTOP,Hyprland"
- ];
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
+ };
- # --- input ---
- input = {
- kb_layout = "us";
- numlock_by_default = true;
- follow_mouse = 2;
- sensitivity = -0.2;
+ config = lib.mkIf cfg.enable {
+
+ home.packages = with pkgs; [
+ nwg-displays
+ posy-cursors
+ hyprpicker
+ ];
- touchpad = {
- disable_while_typing = true;
- natural_scroll = true;
- clickfinger_behavior = true;
- tap-to-click = true;
+ wayland.windowManager.hyprland = {
+ enable = true;
+ systemd.variables = ["--all"];
+ settings = {
+ # --- displays ---
+ source = [
+ "~/.config/hypr/monitors.conf"
+ "~/.config/hypr/workspaces.conf"
+ ];
+
+ # --- environment variables ---
+ env = [
+ "MOZ_ENABLE_WAYLAND,1"
+ "XDG_CURRENT_DESKTOP,Hyprland"
+ "XDG_SESSION_TYPE,wayland"
+ "XDG_SESSION_DESKTOP,Hyprland"
+ ];
+
+ # --- input ---
+ input = {
+ kb_layout = "us";
+ numlock_by_default = true;
+ follow_mouse = 2;
+ sensitivity = -0.2;
+
+ touchpad = {
+ disable_while_typing = true;
+ natural_scroll = true;
+ clickfinger_behavior = true;
+ tap-to-click = true;
+ };
};
- };
- # --- general ---
- general = {
- gaps_in = 2;
- gaps_out = 5;
- border_size = 3;
- "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
- "col.inactive_border" = "rgba(595959aa)";
- layout = "dwindle";
- allow_tearing = false;
- };
+ # --- general ---
+ general = {
+ gaps_in = 2;
+ gaps_out = 5;
+ border_size = 3;
+ "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
+ "col.inactive_border" = "rgba(595959aa)";
+ layout = "dwindle";
+ allow_tearing = false;
+ };
- # --- decoration ---
- decoration = {
- rounding = 3;
- blur = {
+ # --- decoration ---
+ decoration = {
+ rounding = 3;
+ blur = {
+ enabled = true;
+ size = 3;
+ passes = 1;
+ };
+ };
+
+ # --- animations ---
+ animations = {
enabled = true;
- size = 3;
- passes = 1;
+ bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
+ animation = [
+ "windows, 1, 7, myBezier"
+ "windowsOut, 1, 7, default, popin 80%"
+ "border, 1, 10, default"
+ "borderangle, 1, 8, default"
+ "fade, 1, 7, default"
+ "workspaces, 1, 6, default"
+ ];
};
- };
- # --- animations ---
- animations = {
- enabled = true;
- bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
- animation = [
- "windows, 1, 7, myBezier"
- "windowsOut, 1, 7, default, popin 80%"
- "border, 1, 10, default"
- "borderangle, 1, 8, default"
- "fade, 1, 7, default"
- "workspaces, 1, 6, default"
+ # --- dwindle ---
+ dwindle = {
+ pseudotile = true;
+ preserve_split = true;
+ };
+
+ gestures = {
+ workspace = "on";
+ };
+
+ misc = {
+ force_default_wallpaper = -1;
+ disable_hyprland_logo = true;
+ disable_splash_rendering = true;
+ focus_on_activate = true;
+ };
+
+ # --- window rules ---
+ windowrulev2 = [
+ ];
+
+ # --- binds ---
+ "$mainMod" = "SUPER";
+
+ bind = [
+ # system
+ "$mainMod CONTROL, Q, exec, loginctl lock-session"
+
+ # programs
+ "$mainMod, Return, exec, kitty"
+ "$mainMod, E, exec, kitty lf"
+ "$mainMod, R, exec, tofi-drun --drun-launch=true --prompt-text=\"launch:\""
+ "$mainMod, B, exec, librewolf"
+ "$mainMod, G, exec, lutris"
+ "$mainMod, M, exec, thunderbird"
+ "$mainMod, D, exec, flatpak run com.discordapp.Discord"
+ "$mainMod, K, exec, hyprpicker --autocopy --format=hex"
+ "$mainMod, T, exec, cliphist list | tofi | cliphist decode | wl-copy"
+ "$mainMod CONTROL, T, exec, cliphist wipe"
+
+ # screenshots
+ "$mainMod SHIFT, C, exec, hyprshot --mode region --output-folder ~/pictures/screenshots"
+
+ # multimedia
+ ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
+ ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
+ ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
+ ", XF86AudioPlay, exec, playerctl play-pause"
+
+ # brightness
+ ", XF86MonBrightnessUp, exec, brightnessctl set +10%"
+ ", XF86MonBrightnessDown, exec, brightnessctl set 10%- --min-value"
+
+ # scratchpad
+ "$mainMod, S, togglespecialworkspace, magic"
+ "$mainMod SHIFT, S, movetoworkspace, special:magic"
+
+ # window management
+ "$mainMod, Q, killactive"
+ "$mainMod SHIFT, M, exit"
+ "$mainMod, V, togglefloating"
+ "$mainMod, F, fullscreen, 1"
+ "$mainMod SHIFT, F, fullscreen, 0"
+ "$mainMod, P, pseudo"
+ "$mainMod, J, togglesplit"
+
+ # focus movement
+ "$mainMod, tab, cyclenext"
+ "$mainMod, left, movefocus, l"
+ "$mainMod, right, movefocus, r"
+ "$mainMod, up, movefocus, u"
+ "$mainMod, down, movefocus, d"
+
+ # move windows
+ "$mainMod SHIFT, left, swapwindow, l"
+ "$mainMod SHIFT, right, swapwindow, r"
+ "$mainMod SHIFT, up, swapwindow, u"
+ "$mainMod SHIFT, down, swapwindow, d"
+
+ # resize
+ "$mainMod CTRL, left, resizeactive, -60 0"
+ "$mainMod CTRL, right, resizeactive, 60 0"
+ "$mainMod CTRL, up, resizeactive, 0 -60"
+ "$mainMod CTRL, down, resizeactive, 0 60"
+
+ # workspace switching
+ "$mainMod, mouse_down, workspace, e+1"
+ "$mainMod, mouse_up, workspace, e-1"
+ "$mainMod, 1, workspace, 1"
+ "$mainMod, 2, workspace, 2"
+ "$mainMod, 3, workspace, 3"
+ "$mainMod, 4, workspace, 4"
+ "$mainMod, 5, workspace, 5"
+ "$mainMod, 6, workspace, 6"
+ "$mainMod, 7, workspace, 7"
+ "$mainMod, 8, workspace, 8"
+ "$mainMod, 9, workspace, 9"
+ "$mainMod, 0, workspace, 10"
+
+ # move windows between workspaces
+ "$mainMod SHIFT, 1, movetoworkspace, 1"
+ "$mainMod SHIFT, 2, movetoworkspace, 2"
+ "$mainMod SHIFT, 3, movetoworkspace, 3"
+ "$mainMod SHIFT, 4, movetoworkspace, 4"
+ "$mainMod SHIFT, 5, movetoworkspace, 5"
+ "$mainMod SHIFT, 6, movetoworkspace, 6"
+ "$mainMod SHIFT, 7, movetoworkspace, 7"
+ "$mainMod SHIFT, 8, movetoworkspace, 8"
+ "$mainMod SHIFT, 9, movetoworkspace, 9"
+ "$mainMod SHIFT, 0, movetoworkspace, 10"
+
+ # waybar
+ "$mainMod, N, exec, pkill -SIGUSR1 waybar"
+ "$mainMod SHIFT, N, exec, pkill -SIGUSR2 waybar"
+ ];
+
+ bindm = [
+ "$mainMod, mouse:272, movewindow"
+ "$mainMod, mouse:273, resizewindow"
];
};
-
- # --- dwindle ---
- dwindle = {
- pseudotile = true;
- preserve_split = true;
- };
-
- gestures = {
- workspace = "on";
- };
-
- misc = {
- force_default_wallpaper = -1;
- disable_hyprland_logo = true;
- disable_splash_rendering = true;
- focus_on_activate = true;
- };
-
- # --- window rules ---
- windowrulev2 = [
- ];
-
- # --- binds ---
- "$mainMod" = "SUPER";
-
- bind = [
- # system
- "$mainMod CONTROL, Q, exec, loginctl lock-session"
-
- # programs
- "$mainMod, Return, exec, kitty"
- "$mainMod, E, exec, kitty lf"
- "$mainMod, R, exec, tofi-drun --drun-launch=true --prompt-text=\"launch:\""
- "$mainMod, B, exec, librewolf"
- "$mainMod, G, exec, lutris"
- "$mainMod, M, exec, thunderbird"
- "$mainMod, D, exec, flatpak run com.discordapp.Discord"
- "$mainMod, K, exec, hyprpicker --autocopy --format=hex"
- "$mainMod, T, exec, cliphist list | tofi | cliphist decode | wl-copy"
- "$mainMod CONTROL, T, exec, cliphist wipe"
-
- # screenshots
- "$mainMod SHIFT, C, exec, hyprshot --mode region --output-folder ~/pictures/screenshots"
-
- # multimedia
- ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
- ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
- ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
- ", XF86AudioPlay, exec, playerctl play-pause"
-
- # brightness
- ", XF86MonBrightnessUp, exec, brightnessctl set +10%"
- ", XF86MonBrightnessDown, exec, brightnessctl set 10%- --min-value"
-
- # scratchpad
- "$mainMod, S, togglespecialworkspace, magic"
- "$mainMod SHIFT, S, movetoworkspace, special:magic"
-
- # window management
- "$mainMod, Q, killactive"
- "$mainMod SHIFT, M, exit"
- "$mainMod, V, togglefloating"
- "$mainMod, F, fullscreen, 1"
- "$mainMod SHIFT, F, fullscreen, 0"
- "$mainMod, P, pseudo"
- "$mainMod, J, togglesplit"
-
- # focus movement
- "$mainMod, tab, cyclenext"
- "$mainMod, left, movefocus, l"
- "$mainMod, right, movefocus, r"
- "$mainMod, up, movefocus, u"
- "$mainMod, down, movefocus, d"
-
- # move windows
- "$mainMod SHIFT, left, swapwindow, l"
- "$mainMod SHIFT, right, swapwindow, r"
- "$mainMod SHIFT, up, swapwindow, u"
- "$mainMod SHIFT, down, swapwindow, d"
-
- # resize
- "$mainMod CTRL, left, resizeactive, -60 0"
- "$mainMod CTRL, right, resizeactive, 60 0"
- "$mainMod CTRL, up, resizeactive, 0 -60"
- "$mainMod CTRL, down, resizeactive, 0 60"
-
- # workspace switching
- "$mainMod, mouse_down, workspace, e+1"
- "$mainMod, mouse_up, workspace, e-1"
- "$mainMod, 1, workspace, 1"
- "$mainMod, 2, workspace, 2"
- "$mainMod, 3, workspace, 3"
- "$mainMod, 4, workspace, 4"
- "$mainMod, 5, workspace, 5"
- "$mainMod, 6, workspace, 6"
- "$mainMod, 7, workspace, 7"
- "$mainMod, 8, workspace, 8"
- "$mainMod, 9, workspace, 9"
- "$mainMod, 0, workspace, 10"
-
- # move windows between workspaces
- "$mainMod SHIFT, 1, movetoworkspace, 1"
- "$mainMod SHIFT, 2, movetoworkspace, 2"
- "$mainMod SHIFT, 3, movetoworkspace, 3"
- "$mainMod SHIFT, 4, movetoworkspace, 4"
- "$mainMod SHIFT, 5, movetoworkspace, 5"
- "$mainMod SHIFT, 6, movetoworkspace, 6"
- "$mainMod SHIFT, 7, movetoworkspace, 7"
- "$mainMod SHIFT, 8, movetoworkspace, 8"
- "$mainMod SHIFT, 9, movetoworkspace, 9"
- "$mainMod SHIFT, 0, movetoworkspace, 10"
-
- # waybar
- "$mainMod, N, exec, pkill -SIGUSR1 waybar"
- "$mainMod SHIFT, N, exec, pkill -SIGUSR2 waybar"
- ];
-
- bindm = [
- "$mainMod, mouse:272, movewindow"
- "$mainMod, mouse:273, resizewindow"
- ];
};
- };
- # enable polkit agent
- services.hyprpolkitagent.enable = true;
+ # enable polkit agent
+ services.hyprpolkitagent.enable = true;
- # wallpaper
- services.hyprpaper = {
- enable = true;
- settings = {
- preload = [ "~/.nix/users/blake/assets/wallpapers/antartica.png" ];
- wallpaper = [ ",~/.nix/users/blake/assets/wallpapers/antartica.png" ];
- ipc = "off";
- splash = false;
- };
- };
-
- # screenlocker
- programs.hyprlock = {
- enable = true;
- settings = {
- general = {
- disable_loading_bar = true;
- hide_cursor = true;
- };
-
- background = [
- {
- monitor = "";
- path = "~/.nix/users/blake/assets/wallpapers/antartica.png";
- blur_passes = 1;
- color = "rgb(0047ab)";
- }
- ];
-
- label = [
- {
- monitor = "";
- text = "cmd[update:30000] echo \"$(date +'%R')\"";
- color = "rgb(ffffff)";
- font_size = 90;
- position = "-130, -100";
- halign = "right";
- valign = "top";
- shadow_passes = 1;
- }
- {
- monitor = "";
- text = "cmd[update:43200000] echo \"$(date +'%Y/%m/%d')\"";
- color = "$text";
- font_size = 25;
- position = "-130, -250";
- halign = "right";
- valign = "top";
- shadow_passes = 2;
- }
- {
- monitor = "";
- text = "$LAYOUT";
- color = "rgb(ffffff)";
- font_size = 20;
- rotate = 0;
- position = "-130, -310";
- halign = "right";
- valign = "top";
- shadow_passes = 2;
- }
- ];
-
- image = [
- {
- monitor = "";
- path = "~/.nix/users/blake/assets/pfps/pikacig.jpg";
- size = 350;
- border_color = "rgb(0047ab)";
- rounding = -1;
- position = "0, 85";
- halign = "center";
- valign = "center";
- shadow_passes = 2;
- }
- ];
-
- input-field = [
- {
- monitor = "";
- size = "400, 70";
- outline_thickness = 4;
- dots_size = 0.2;
- dots_spacing = 0.2;
- dots_center = true;
- outer_color = "$accent";
- inner_color = "$surface0";
- font_color = "$text";
- fade_on_empty = false;
- placeholder_text =
- "# Logged in as $USER";
- hide_input = false;
- check_color = "rgb(0047ab)";
- fail_color = "rgb(ff0000)";
- fail_text = "$FAIL ($ATTEMPTS)";
- capslock_color = "rgb(ff0000)";
- position = "0, -185";
- halign = "center";
- valign = "center";
- shadow_passes = 2;
- }
- ];
- };
- };
-
-
- # idle daemon
- services.hypridle = {
- enable = true;
- settings = {
- # --- general settings ---
- general = {
- lock_cmd = "pidof hyprlock || hyprlock"; # avoid multiple instances
- before_sleep_cmd = "loginctl lock-session"; # lock before suspend
- after_sleep_cmd = "hyprctl dispatch dpms on"; # wake display properly
- };
-
- # --- dim screen ---
- listener = [
- {
- timeout = 150; # 2.5 min
- on-timeout = "brightnessctl -s set 1"; # dim monitor (avoid 0 on OLED)
- on-resume = "brightnessctl -r"; # restore brightness
- }
-
- # --- blank screen ---
- {
- timeout = 330; # 5.5 min
- on-timeout = "hyprctl dispatch dpms off"; # turn off screen
- on-resume = "hyprctl dispatch dpms on"; # restore screen
- }
-
- # --- lock screen ---
- {
- timeout = 900; # 15 min
- on-timeout = "loginctl lock-session"; # lock screen
- }
-
- # --- suspend timeout ---
- {
- timeout = 1800; # 30 min
- on-timeout = "systemctl suspend"; # suspend computer
- }
-
- # --- keyboard backlight (optional) ---
- # Uncomment if your keyboard supports it
- # {
- # timeout = 150;
- # on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0";
- # on-resume = "brightnessctl -rd rgb:kbd_backlight";
- # }
- ];
- };
- };
-
- home.pointerCursor = {
- dotIcons.enable = false;
- enable = true;
- gtk.enable = true;
- x11.enable = true;
- package = pkgs.posy-cursors;
- name = "Posy_Cursor_Black";
- size = 48;
- hyprcursor = {
+ # wallpaper
+ services.hyprpaper = {
enable = true;
- size = 64;
+ settings = {
+ preload = [ "~/.nix/users/blake/assets/wallpapers/antartica.png" ];
+ wallpaper = [ ",~/.nix/users/blake/assets/wallpapers/antartica.png" ];
+ ipc = "off";
+ splash = false;
+ };
};
- };
- #xdg.configFile."hypr/hyprland.conf" = {
- # source = config.lib.file.mkOutOfStoreSymlink "/home/blake/.nix/users/blake/dots/hypr/hyprland.conf";
- #};
+ # screenlocker
+ programs.hyprlock = {
+ enable = true;
+ settings = {
+ general = {
+ disable_loading_bar = true;
+ hide_cursor = true;
+ };
+
+ background = [
+ {
+ monitor = "";
+ path = "~/.nix/users/blake/assets/wallpapers/antartica.png";
+ blur_passes = 1;
+ color = "rgb(0047ab)";
+ }
+ ];
+
+ label = [
+ {
+ monitor = "";
+ text = "cmd[update:30000] echo \"$(date +'%R')\"";
+ color = "rgb(ffffff)";
+ font_size = 90;
+ position = "-130, -100";
+ halign = "right";
+ valign = "top";
+ shadow_passes = 1;
+ }
+ {
+ monitor = "";
+ text = "cmd[update:43200000] echo \"$(date +'%Y/%m/%d')\"";
+ color = "$text";
+ font_size = 25;
+ position = "-130, -250";
+ halign = "right";
+ valign = "top";
+ shadow_passes = 2;
+ }
+ {
+ monitor = "";
+ text = "$LAYOUT";
+ color = "rgb(ffffff)";
+ font_size = 20;
+ rotate = 0;
+ position = "-130, -310";
+ halign = "right";
+ valign = "top";
+ shadow_passes = 2;
+ }
+ ];
+
+ image = [
+ {
+ monitor = "";
+ path = "~/.nix/users/blake/assets/pfps/pikacig.jpg";
+ size = 350;
+ border_color = "rgb(0047ab)";
+ rounding = -1;
+ position = "0, 85";
+ halign = "center";
+ valign = "center";
+ shadow_passes = 2;
+ }
+ ];
+
+ input-field = [
+ {
+ monitor = "";
+ size = "400, 70";
+ outline_thickness = 4;
+ dots_size = 0.2;
+ dots_spacing = 0.2;
+ dots_center = true;
+ outer_color = "$accent";
+ inner_color = "$surface0";
+ font_color = "$text";
+ fade_on_empty = false;
+ placeholder_text =
+ "# Logged in as $USER";
+ hide_input = false;
+ check_color = "rgb(0047ab)";
+ fail_color = "rgb(ff0000)";
+ fail_text = "$FAIL ($ATTEMPTS)";
+ capslock_color = "rgb(ff0000)";
+ position = "0, -185";
+ halign = "center";
+ valign = "center";
+ shadow_passes = 2;
+ }
+ ];
+ };
+ };
+
+
+ # idle daemon
+ services.hypridle = {
+ enable = true;
+ settings = {
+ # --- general settings ---
+ general = {
+ lock_cmd = "pidof hyprlock || hyprlock"; # avoid multiple instances
+ before_sleep_cmd = "loginctl lock-session"; # lock before suspend
+ after_sleep_cmd = "hyprctl dispatch dpms on"; # wake display properly
+ };
+
+ # --- dim screen ---
+ listener = [
+ {
+ timeout = 150; # 2.5 min
+ on-timeout = "brightnessctl -s set 1"; # dim monitor (avoid 0 on OLED)
+ on-resume = "brightnessctl -r"; # restore brightness
+ }
+
+ # --- blank screen ---
+ {
+ timeout = 330; # 5.5 min
+ on-timeout = "hyprctl dispatch dpms off"; # turn off screen
+ on-resume = "hyprctl dispatch dpms on"; # restore screen
+ }
+
+ # --- lock screen ---
+ {
+ timeout = 900; # 15 min
+ on-timeout = "loginctl lock-session"; # lock screen
+ }
+
+ # --- suspend timeout ---
+ {
+ timeout = 1800; # 30 min
+ on-timeout = "systemctl suspend"; # suspend computer
+ }
+
+ # --- keyboard backlight (optional) ---
+ # Uncomment if your keyboard supports it
+ # {
+ # timeout = 150;
+ # on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0";
+ # on-resume = "brightnessctl -rd rgb:kbd_backlight";
+ # }
+ ];
+ };
+ };
+
+ home.pointerCursor = {
+ dotIcons.enable = false;
+ enable = true;
+ gtk.enable = true;
+ x11.enable = true;
+ package = pkgs.posy-cursors;
+ name = "Posy_Cursor_Black";
+ size = 48;
+ hyprcursor = {
+ enable = true;
+ size = 64;
+ };
+ };
+
+ #xdg.configFile."hypr/hyprland.conf" = {
+ # source = config.lib.file.mkOutOfStoreSymlink "/home/blake/.nix/users/blake/dots/hypr/hyprland.conf";
+ #};
+ };
}
diff --git a/users/blake/dots/neovim/default.nix b/users/blake/dots/neovim/default.nix
deleted file mode 100644
index f987cf1..0000000
--- a/users/blake/dots/neovim/default.nix
+++ /dev/null
@@ -1,188 +0,0 @@
-{
- pkgs,
- config,
- lib,
- inputs,
- ...
-}:
-{
- imports = [
- inputs.nvf.homeManagerModules.default
- ];
-
- programs.nvf = {
- enable = true;
- settings = {
- vim = {
- globals = {
- mapleader = " ";
- maplocalleader = " ";
- };
-
- vimAlias = true;
-
- lsp.enable = true;
- statusline.lualine.enable = true;
- telescope.enable = true;
- autocomplete.nvim-cmp.enable = true;
- autopairs.nvim-autopairs.enable = true;
-
- keymaps = [
- # visual line movement (insert mode)
- {
- key = "";
- mode = [ "i" ];
- action = "gk";
- desc = "Visual Line Up (Insert)";
- }
- {
- key = "";
- mode = [ "i" ];
- action = "gj";
- desc = "Visual Line Down (Insert)";
- }
-
- # visual line movement (normal/visual)
- {
- key = "";
- mode = [
- "n"
- "v"
- ];
- action = "g";
- desc = "Visual Line Up";
- }
- {
- key = "";
- mode = [
- "n"
- "v"
- ];
- action = "g";
- desc = "Visual Line Down";
- }
-
- # lsp
- #{ key = "gd"; mode = [ "n" ]; action = "lua vim.lsp.buf.definition()"; desc = "Go to definition"; }
- #{ key = "K"; mode = [ "n" ]; action = "lua vim.lsp.buf.hover()"; desc = "Hover info"; }
- #{ key = "f"; mode = [ "n" ]; action = "lua vim.lsp.buf.format({ async = true })"; desc = "Format buffer"; }
-
- {
- key = "gd";
- mode = [ "n" ];
- silent = true;
- action = "lua vim.lsp.buf.definition()";
- desc = "Go to definition";
- }
- # Hover info
- {
- key = "K";
- mode = [ "n" ];
- silent = true;
- action = "lua vim.lsp.buf.hover()";
- desc = "Hover info";
- }
- # Format buffer (Alejandra for Nix)
- {
- key = "F";
- mode = [ "n" ];
- silent = true;
- action = "lua vim.lsp.buf.format({ async = true })";
- desc = "Format buffer";
- }
- # Code actions / quickfix
- {
- key = "a";
- mode = [ "n" ];
- silent = true;
- action = "lua vim.lsp.buf.code_action()";
- desc = "Code action";
- }
- # Rename symbol
- {
- key = "r";
- mode = [ "n" ];
- silent = true;
- action = "lua vim.lsp.buf.rename()";
- desc = "Rename symbol";
- }
- # Diagnostics
- {
- key = "e";
- mode = [ "n" ];
- silent = true;
- action = "lua vim.diagnostic.open_float()";
- desc = "Show diagnostic";
- }
- {
- key = "[d";
- mode = [ "n" ];
- silent = true;
- action = "lua vim.diagnostic.goto_prev()";
- desc = "Previous diagnostic";
- }
- {
- key = "]d";
- mode = [ "n" ];
- silent = true;
- action = "lua vim.diagnostic.goto_next()";
- desc = "Next diagnostic";
- }
- ];
-
- options = {
- clipboard = "unnamedplus";
-
- # line numbers
- number = true;
- numberwidth = 2;
- relativenumber = true;
-
- # tabs and indentation
- tabstop = 2;
- shiftwidth = 2;
- softtabstop = -1;
- expandtab = true;
- smarttab = true;
- autoindent = true;
-
- # search
- ignorecase = true;
- smartcase = true;
-
- # files and backups
- backup = false;
- writebackup = false;
- undofile = true;
- swapfile = true;
-
- # wrapping
- wrap = true;
- linebreak = true;
- breakindent = true;
-
- termguicolors = true;
- autoread = true;
- };
-
- languages = {
- enableTreesitter = true;
-
- nix = {
- enable = true;
- format = {
- enable = true;
- type = "alejandra";
- #type = "nixfmt";
- };
- };
-
- markdown.enable = true;
- rust.enable = true;
- lua.enable = true;
-
- };
- };
- };
- };
-}
diff --git a/users/blake/dots/nvf/default.nix b/users/blake/dots/nvf/default.nix
new file mode 100644
index 0000000..d597222
--- /dev/null
+++ b/users/blake/dots/nvf/default.nix
@@ -0,0 +1,201 @@
+{
+ pkgs,
+ config,
+ lib,
+ inputs,
+ ...
+}:
+
+let
+ program = "nvf";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
+
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
+ };
+
+ config = lib.mkIf cfg.enable {
+
+ imports = [
+ inputs.nvf.homeManagerModules.default
+ ];
+
+ programs.${program} = {
+ enable = true;
+ settings = {
+ vim = {
+ globals = {
+ mapleader = " ";
+ maplocalleader = " ";
+ };
+
+ vimAlias = true;
+
+ lsp.enable = true;
+ statusline.lualine.enable = true;
+ telescope.enable = true;
+ autocomplete.nvim-cmp.enable = true;
+ autopairs.nvim-autopairs.enable = true;
+
+ keymaps = [
+ # visual line movement (insert mode)
+ {
+ key = "";
+ mode = [ "i" ];
+ action = "gk";
+ desc = "Visual Line Up (Insert)";
+ }
+ {
+ key = "";
+ mode = [ "i" ];
+ action = "gj";
+ desc = "Visual Line Down (Insert)";
+ }
+
+ # visual line movement (normal/visual)
+ {
+ key = "";
+ mode = [
+ "n"
+ "v"
+ ];
+ action = "g";
+ desc = "Visual Line Up";
+ }
+ {
+ key = "";
+ mode = [
+ "n"
+ "v"
+ ];
+ action = "g";
+ desc = "Visual Line Down";
+ }
+
+ # lsp
+ #{ key = "gd"; mode = [ "n" ]; action = "lua vim.lsp.buf.definition()"; desc = "Go to definition"; }
+ #{ key = "K"; mode = [ "n" ]; action = "lua vim.lsp.buf.hover()"; desc = "Hover info"; }
+ #{ key = "f"; mode = [ "n" ]; action = "lua vim.lsp.buf.format({ async = true })"; desc = "Format buffer"; }
+
+ {
+ key = "gd";
+ mode = [ "n" ];
+ silent = true;
+ action = "lua vim.lsp.buf.definition()";
+ desc = "Go to definition";
+ }
+ # Hover info
+ {
+ key = "K";
+ mode = [ "n" ];
+ silent = true;
+ action = "lua vim.lsp.buf.hover()";
+ desc = "Hover info";
+ }
+ # Format buffer (Alejandra for Nix)
+ {
+ key = "F";
+ mode = [ "n" ];
+ silent = true;
+ action = "lua vim.lsp.buf.format({ async = true })";
+ desc = "Format buffer";
+ }
+ # Code actions / quickfix
+ {
+ key = "a";
+ mode = [ "n" ];
+ silent = true;
+ action = "lua vim.lsp.buf.code_action()";
+ desc = "Code action";
+ }
+ # Rename symbol
+ {
+ key = "r";
+ mode = [ "n" ];
+ silent = true;
+ action = "lua vim.lsp.buf.rename()";
+ desc = "Rename symbol";
+ }
+ # Diagnostics
+ {
+ key = "e";
+ mode = [ "n" ];
+ silent = true;
+ action = "lua vim.diagnostic.open_float()";
+ desc = "Show diagnostic";
+ }
+ {
+ key = "[d";
+ mode = [ "n" ];
+ silent = true;
+ action = "lua vim.diagnostic.goto_prev()";
+ desc = "Previous diagnostic";
+ }
+ {
+ key = "]d";
+ mode = [ "n" ];
+ silent = true;
+ action = "lua vim.diagnostic.goto_next()";
+ desc = "Next diagnostic";
+ }
+ ];
+
+ options = {
+ clipboard = "unnamedplus";
+
+ # line numbers
+ number = true;
+ numberwidth = 2;
+ relativenumber = true;
+
+ # tabs and indentation
+ tabstop = 2;
+ shiftwidth = 2;
+ softtabstop = -1;
+ expandtab = true;
+ smarttab = true;
+ autoindent = true;
+
+ # search
+ ignorecase = true;
+ smartcase = true;
+
+ # files and backups
+ backup = false;
+ writebackup = false;
+ undofile = true;
+ swapfile = true;
+
+ # wrapping
+ wrap = true;
+ linebreak = true;
+ breakindent = true;
+
+ termguicolors = true;
+ autoread = true;
+ };
+
+ languages = {
+ enableTreesitter = true;
+
+ nix = {
+ enable = true;
+ format = {
+ enable = true;
+ type = "alejandra";
+ #type = "nixfmt";
+ };
+ };
+
+ markdown.enable = true;
+ rust.enable = true;
+ lua.enable = true;
+
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/users/blake/dots/ssh/default.nix b/users/blake/dots/ssh/default.nix
index 8087a2c..4e923bc 100644
--- a/users/blake/dots/ssh/default.nix
+++ b/users/blake/dots/ssh/default.nix
@@ -1,43 +1,57 @@
{
pkgs,
+ lib,
config,
...
-}: {
- programs.ssh = {
- enable = true;
- enableDefaultConfig = false;
- matchBlocks = {
- "git.blakedheld.xyz" = {
- user = "gitea";
- identityFile = "~/.ssh/id_snowbelle";
+}:
+let
+ program = "ssh";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
+
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
+ };
+
+ config = lib.mkIf cfg.enable {
+
+
+ programs.ssh = {
+ enable = true;
+ enableDefaultConfig = false;
+ matchBlocks = {
+ "git.blakedheld.xyz" = {
+ user = "gitea";
+ identityFile = "~/.ssh/id_snowbelle";
+ };
+ "git.snowbelle.lan" = {
+ user = "gitea";
+ identityFile = "~/.ssh/id_snowbelle";
+ };
+ "bebe" = {
+ hostname = "10.10.0.1";
+ user = "root";
+ identityFile = "~/.ssh/id_snowbelle";
+ };
};
- "git.snowbelle.lan" = {
- user = "gitea";
- identityFile = "~/.ssh/id_snowbelle";
+ };
+
+ # import sshkeys from keyring
+ #home.file.".ssh/id_snowbelle".source = config.lib.file.mkOutOfStoreSymlink /home/blake/.nix/.keyring/ssh/id_snowbelle;
+ #home.file.".ssh/id_snowbelle.pub".source = config.lib.file.mkOutOfStoreSymlink /home/blake/.nix/.keyring/ssh/id_snowbelle.pub;
+
+
+ # manage secrets with sops
+ sops.secrets = {
+ "id_snowbelle" = {
+ mode = "0600";
+ path = "/home/blake/.ssh/id_snowbelle";
};
- "bebe" = {
- hostname = "10.10.0.1";
- user = "root";
- identityFile = "~/.ssh/id_snowbelle";
+ "id_snowbelle.pub" = {
+ mode = "644";
+ path = "/home/blake/.ssh/id_snowbelle.pub";
};
};
};
-
- # import sshkeys from keyring
- #home.file.".ssh/id_snowbelle".source = config.lib.file.mkOutOfStoreSymlink /home/blake/.nix/.keyring/ssh/id_snowbelle;
- #home.file.".ssh/id_snowbelle.pub".source = config.lib.file.mkOutOfStoreSymlink /home/blake/.nix/.keyring/ssh/id_snowbelle.pub;
-
-
- # manage secrets with sops
- sops.secrets = {
- "id_snowbelle" = {
- mode = "0600";
- path = "/home/blake/.ssh/id_snowbelle";
- };
- "id_snowbelle.pub" = {
- mode = "644";
- path = "/home/blake/.ssh/id_snowbelle.pub";
- };
- };
-
}
diff --git a/users/blake/dots/stylix/default.nix b/users/blake/dots/stylix/default.nix
index 6db691c..60a734b 100644
--- a/users/blake/dots/stylix/default.nix
+++ b/users/blake/dots/stylix/default.nix
@@ -5,7 +5,20 @@
inputs,
...
}:
-{
- imports = [inputs.stylix.homeManagerModules.default];
+let
+ program = "stylix";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
+
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
+ };
+
+ config = lib.mkIf cfg.enable {
+
+ imports = [inputs.stylix.homeManagerModules.default];
+
+ };
}
diff --git a/users/blake/dots/waybar/default.nix b/users/blake/dots/waybar/default.nix
index aca08f5..256e113 100644
--- a/users/blake/dots/waybar/default.nix
+++ b/users/blake/dots/waybar/default.nix
@@ -1,293 +1,308 @@
{
pkgs,
+ lib,
config,
...
-}: {
- # just using the normal lfrc
- programs.waybar = {
- enable = true;
- systemd.enable = true;
+}:
+let
+ program = "waybar";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
- settings = {
- mainBar = {
- layer = "top";
- position = "top";
- height = 25;
- margin-top = 0;
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
+ };
- modules-left = [ "hyprland/workspaces" ];
- modules-center = [ "hyprland/window" ];
- modules-right = [
- "tray"
- "temperature"
- "backlight"
- "wireplumber"
- "battery"
- "bluetooth"
- "network"
- "idle_inhibitor"
- "clock"
- ];
+ config = lib.mkIf cfg.enable {
+
- "hyprland/workspaces" = {
- format = "{icon}";
- "on-scroll-up" = "hyprctl dispatch workspace e+1";
- "on-scroll-down" = "hyprctl dispatch workspace e-1";
- };
+ # just using the normal lfrc
+ programs.${program} = {
+ enable = true;
+ systemd.enable = true;
- "hyprland/window" = {
- "max-length" = 200;
- "separate-outputs" = false;
- };
+ settings = {
+ mainBar = {
+ layer = "top";
+ position = "top";
+ height = 25;
+ margin-top = 0;
- tray = {
- "icon-size" = 17;
- spacing = 10;
- };
+ modules-left = [ "hyprland/workspaces" ];
+ modules-center = [ "hyprland/window" ];
+ modules-right = [
+ "tray"
+ "temperature"
+ "backlight"
+ "wireplumber"
+ "battery"
+ "bluetooth"
+ "network"
+ "idle_inhibitor"
+ "clock"
+ ];
- clock = {
- format = "{:%Y/%m/%d %a %H:%M}";
- interval = 30;
- "on-click" = "thunderbird -calendar";
- "on-scroll" = 1;
+ "hyprland/workspaces" = {
+ format = "{icon}";
+ "on-scroll-up" = "hyprctl dispatch workspace e+1";
+ "on-scroll-down" = "hyprctl dispatch workspace e-1";
+ };
- calendar = {
- mode = "month";
- "mode-mon-col" = 3;
- "weeks-pos" = "";
+ "hyprland/window" = {
+ "max-length" = 200;
+ "separate-outputs" = false;
+ };
+
+ tray = {
+ "icon-size" = 17;
+ spacing = 10;
+ };
+
+ clock = {
+ format = "{:%Y/%m/%d %a %H:%M}";
+ interval = 30;
+ "on-click" = "thunderbird -calendar";
"on-scroll" = 1;
- "on-click-right" = "mode";
- format = {
- months = "{}";
- days = "{}";
- weeks = "W{}";
- weekdays = "{}";
- today = "{}";
+
+ calendar = {
+ mode = "month";
+ "mode-mon-col" = 3;
+ "weeks-pos" = "";
+ "on-scroll" = 1;
+ "on-click-right" = "mode";
+ format = {
+ months = "{}";
+ days = "{}";
+ weeks = "W{}";
+ weekdays = "{}";
+ today = "{}";
+ };
};
+
+ actions = {
+ "on-click-right" = "mode";
+ "on-scroll-up" = "shift_up";
+ "on-scroll-down" = "shift_down";
+ };
+
+ "tooltip-format" = "{calendar}";
};
- actions = {
- "on-click-right" = "mode";
- "on-scroll-up" = "shift_up";
- "on-scroll-down" = "shift_down";
+ backlight = {
+ device = "intel_backlight";
+ format = "{icon} {percent}%";
+ "format-icons" = [ "☼" "☼" "☀" "☀" ];
+ interval = 60;
};
- "tooltip-format" = "{calendar}";
- };
-
- backlight = {
- device = "intel_backlight";
- format = "{icon} {percent}%";
- "format-icons" = [ "☼" "☼" "☀" "☀" ];
- interval = 60;
- };
-
- temperature = {
- "hwmon-path" = [ "/sys/class/hwmon/hwmon3/temp1_input" ];
- "critical-threshold" = 70;
- format = "";
- "format-critical" = " {temperatureC}°C";
- };
-
- battery = {
- bat = "BAT0";
- states = {
- full = 99;
- good = 80;
- normal = 50;
- warning = 30;
- critical = 10;
+ temperature = {
+ "hwmon-path" = [ "/sys/class/hwmon/hwmon3/temp1_input" ];
+ "critical-threshold" = 70;
+ format = "";
+ "format-critical" = " {temperatureC}°C";
};
- format = "{icon} {capacity}%";
- "format-charging" = " {capacity}%";
- "format-icons" = [ "" "" "" "" "" ];
- interval = 30;
- };
- network = {
- "format-wifi" = "";
- "format-ethernet" = "";
- "format-disconnected" = "";
- "tooltip-format-wifi" =
- "{ifname} / {essid}\n\n {ipaddr}\n\n {signalStrength}% / {frequency}\n\n {bandwidthUpBits} / {bandwidthDownBits}";
- "tooltip-format-ethernet" =
- "{ifname} / {gwaddr}\n\n {ipaddr}\n\n {bandwidthUpBits} / {bandwidthDownBits}";
- "tooltip-format-disconnected" = "Disconnected";
- interval = 5;
- "on-click" = "kitty nmtui";
- };
+ battery = {
+ bat = "BAT0";
+ states = {
+ full = 99;
+ good = 80;
+ normal = 50;
+ warning = 30;
+ critical = 10;
+ };
+ format = "{icon} {capacity}%";
+ "format-charging" = " {capacity}%";
+ "format-icons" = [ "" "" "" "" "" ];
+ interval = 30;
+ };
- wireplumber = {
- format = " {volume}%";
- "format-muted" = " Mute";
- "max-volume" = 150;
- "on-scroll-up" = "wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 1%+";
- "on-scroll-down" = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-";
- "on-click-right" = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
- "on-click" = "kitty pulsemixer";
- };
+ network = {
+ "format-wifi" = "";
+ "format-ethernet" = "";
+ "format-disconnected" = "";
+ "tooltip-format-wifi" =
+ "{ifname} / {essid}\n\n {ipaddr}\n\n {signalStrength}% / {frequency}\n\n {bandwidthUpBits} / {bandwidthDownBits}";
+ "tooltip-format-ethernet" =
+ "{ifname} / {gwaddr}\n\n {ipaddr}\n\n {bandwidthUpBits} / {bandwidthDownBits}";
+ "tooltip-format-disconnected" = "Disconnected";
+ interval = 5;
+ "on-click" = "kitty nmtui";
+ };
- bluetooth = {
- "format-on" = "";
- "format-off" = "";
- "format-connected" = " {device_alias}";
- "format-connected-battery" = " {device_alias} ({device_battery_percentage}%)";
- "tooltip-format-off" = "Controller Powered Off";
- "tooltip-format" =
- "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
- "tooltip-format-connected" =
- "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
- "tooltip-format-enumerate-connected" =
- "{device_alias}\t{device_address}";
- "tooltip-format-enumerate-connected-battery" =
- "{device_alias}\t{device_address}\t{device_battery_percentage}%";
- "on-click" = "kitty bluetuith --no-warning";
- "on-click-right" =
- "if bluetoothctl show|grep -q 'Powered: yes';then bluetoothctl power off;else bluetoothctl power on;fi";
- };
+ wireplumber = {
+ format = " {volume}%";
+ "format-muted" = " Mute";
+ "max-volume" = 150;
+ "on-scroll-up" = "wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 1%+";
+ "on-scroll-down" = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-";
+ "on-click-right" = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
+ "on-click" = "kitty pulsemixer";
+ };
- idle_inhibitor = {
- what = "idle";
- format = "{icon}";
- "format-icons" = {
- activated = "";
- deactivated = "";
+ bluetooth = {
+ "format-on" = "";
+ "format-off" = "";
+ "format-connected" = " {device_alias}";
+ "format-connected-battery" = " {device_alias} ({device_battery_percentage}%)";
+ "tooltip-format-off" = "Controller Powered Off";
+ "tooltip-format" =
+ "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
+ "tooltip-format-connected" =
+ "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
+ "tooltip-format-enumerate-connected" =
+ "{device_alias}\t{device_address}";
+ "tooltip-format-enumerate-connected-battery" =
+ "{device_alias}\t{device_address}\t{device_battery_percentage}%";
+ "on-click" = "kitty bluetuith --no-warning";
+ "on-click-right" =
+ "if bluetoothctl show|grep -q 'Powered: yes';then bluetoothctl power off;else bluetoothctl power on;fi";
+ };
+
+ idle_inhibitor = {
+ what = "idle";
+ format = "{icon}";
+ "format-icons" = {
+ activated = "";
+ deactivated = "";
+ };
};
};
};
+
+ style = ''
+ * {
+ border: none;
+ font-family: "UbuntuMono Nerd Font";
+ font-size: 17px;
+ }
+
+ .modules-left {
+ border-radius: 9px;
+ background-color: rgba(50, 50, 50, 0.5);
+ padding: 0px 0px 0px 0px;
+ }
+
+ .modules-right {
+ border-radius: 9px;
+ background-color: rgba(50, 50, 50, 0.5);
+ padding: 0px 5px 0px 0px;
+ }
+
+ /* --- window bar --- */
+
+ /* window title bar */
+ window#waybar {
+ border-radius: 9px;
+ background-color: rgba(47, 23, 48, 0.70);
+ color: #ffffff;
+ }
+
+ /* hide window title when empty*/
+ window#waybar.empty #window {
+ background-color: transparent;
+ color: transparent;
+ }
+
+ /* change title bar background color when empty */
+ window#waybar.empty {
+ background-color: rgba(47, 23, 48, 0.70);
+ }
+
+ /* --- left modules --- */
+
+ /* workspace buttons */
+ #workspaces button {
+ box-shadow: inset 0 -3px transparent;
+ padding: 0px 11px 0px 11px;
+ min-width: 1px;
+ color: #888888;
+ }
+
+ #workspaces button:hover {
+ box-shadow: inherit;
+ text-shadow: inherit;
+ background: rgba(50, 50, 50, 0.55);
+ color: #888888;
+ }
+
+ #workspaces button.active,
+ #workspaces button.visible {
+ padding: 0px 11px 0px 11px;
+ background-color: rgba(50, 50, 50, 0.55);
+ color: #e2c7c7;
+ }
+
+ /* --- right modules --- */
+
+ #tray {
+ margin: 0px 10px 0px 5px;
+ }
+
+ #clock {
+ margin: 0px 3px 0px 13px;
+ }
+
+ #idle_inhibitor,
+ #network,
+ #bluetooth,
+ #battery,
+ #wireplumber,
+ #backlight,
+ #temperature {
+ background-color: transparent;
+ color: #ffffff;
+ padding: 0px 10px 0px 10px;
+ }
+
+
+ #bluetooth {
+ background-color: transparent;
+ color: #ffffff;
+ padding: 0px 4px 0px 10px;
+ }
+
+ /* --- indicators --- */
+
+ /* blink red */
+ #temperature.critical,
+ #battery.critical:not(.charging) {
+ background-color: transparent;
+ animation-name: blink;
+ animation-duration: 0.75s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+ }
+
+ /* turn red */
+ #network.disconnected,
+ #wireplumber.muted,
+ #bluetooth.off {
+ color: #ff5555;
+ }
+
+ /* --- animations --- */
+
+ @keyframes blink {
+ to {
+ background-color: transparent;
+ color: #ff5555;
+ }
+ }
+
+ '';
};
- style = ''
- * {
- border: none;
- font-family: "UbuntuMono Nerd Font";
- font-size: 17px;
- }
-
- .modules-left {
- border-radius: 9px;
- background-color: rgba(50, 50, 50, 0.5);
- padding: 0px 0px 0px 0px;
- }
-
- .modules-right {
- border-radius: 9px;
- background-color: rgba(50, 50, 50, 0.5);
- padding: 0px 5px 0px 0px;
- }
-
- /* --- window bar --- */
-
- /* window title bar */
- window#waybar {
- border-radius: 9px;
- background-color: rgba(47, 23, 48, 0.70);
- color: #ffffff;
- }
-
- /* hide window title when empty*/
- window#waybar.empty #window {
- background-color: transparent;
- color: transparent;
- }
-
- /* change title bar background color when empty */
- window#waybar.empty {
- background-color: rgba(47, 23, 48, 0.70);
- }
-
- /* --- left modules --- */
-
- /* workspace buttons */
- #workspaces button {
- box-shadow: inset 0 -3px transparent;
- padding: 0px 11px 0px 11px;
- min-width: 1px;
- color: #888888;
- }
-
- #workspaces button:hover {
- box-shadow: inherit;
- text-shadow: inherit;
- background: rgba(50, 50, 50, 0.55);
- color: #888888;
- }
-
- #workspaces button.active,
- #workspaces button.visible {
- padding: 0px 11px 0px 11px;
- background-color: rgba(50, 50, 50, 0.55);
- color: #e2c7c7;
- }
-
- /* --- right modules --- */
-
- #tray {
- margin: 0px 10px 0px 5px;
- }
-
- #clock {
- margin: 0px 3px 0px 13px;
- }
-
- #idle_inhibitor,
- #network,
- #bluetooth,
- #battery,
- #wireplumber,
- #backlight,
- #temperature {
- background-color: transparent;
- color: #ffffff;
- padding: 0px 10px 0px 10px;
- }
-
-
- #bluetooth {
- background-color: transparent;
- color: #ffffff;
- padding: 0px 4px 0px 10px;
- }
-
- /* --- indicators --- */
-
- /* blink red */
- #temperature.critical,
- #battery.critical:not(.charging) {
- background-color: transparent;
- animation-name: blink;
- animation-duration: 0.75s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
- }
-
- /* turn red */
- #network.disconnected,
- #wireplumber.muted,
- #bluetooth.off {
- color: #ff5555;
- }
-
- /* --- animations --- */
-
- @keyframes blink {
- to {
- background-color: transparent;
- color: #ff5555;
- }
- }
-
- '';
+ # install it to userspace
+ home.packages = with pkgs; [
+ pulsemixer
+ brightnessctl
+ bluetuith
+ bluez
+ nerd-fonts.ubuntu
+ nerd-fonts.ubuntu-mono
+ ];
};
-
- # install it to userspace
- home.packages = with pkgs; [
- pulsemixer
- brightnessctl
- bluetuith
- bluez
- nerd-fonts.ubuntu
- nerd-fonts.ubuntu-mono
- ];
}
diff --git a/users/blake/dots/xdg/default.nix b/users/blake/dots/xdg/default.nix
index fa6a2c2..5a909f6 100644
--- a/users/blake/dots/xdg/default.nix
+++ b/users/blake/dots/xdg/default.nix
@@ -1,35 +1,49 @@
{
pkgs,
+ lib,
config,
...
-}: {
- home.packages = with pkgs; [xdg-ninja];
+}:
+let
+ program = "xdg";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
- xdg = if pkgs.system == "x86_64-darwin" then {} else {
- enable = true;
- configHome = "/home/blake/.config";
- cacheHome = "/home/blake/.cache";
- dataHome = "/home/blake/.local/share";
- stateHome = "/home/blake/.local/state";
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
+ };
- userDirs = {
+ config = lib.mkIf cfg.enable {
+
+ home.packages = with pkgs; [xdg-ninja];
+
+ xdg = if pkgs.system == "x86_64-darwin" then {} else {
enable = true;
- # writes ~/.config/user-dirs.dirs
- desktop = "/home/blake/desktop";
- download = "/home/blake/downloads";
- documents = "/home/blake/documents";
- pictures = "/home/blake/pictures";
- videos = "/home/blake/videos";
- music = "/home/blake/music";
- publicShare = "/home/blake/public";
- templates = "/home/blake/templates";
+ configHome = "/home/blake/.config";
+ cacheHome = "/home/blake/.cache";
+ dataHome = "/home/blake/.local/share";
+ stateHome = "/home/blake/.local/state";
+
+ userDirs = {
+ enable = true;
+ # writes ~/.config/user-dirs.dirs
+ desktop = "/home/blake/desktop";
+ download = "/home/blake/downloads";
+ documents = "/home/blake/documents";
+ pictures = "/home/blake/pictures";
+ videos = "/home/blake/videos";
+ music = "/home/blake/music";
+ publicShare = "/home/blake/public";
+ templates = "/home/blake/templates";
+ };
};
- };
- # misc env variables to get things out of ~ (<3 xdg-ninja)
- home.sessionVariables = if pkgs.system == "x86_64-darwin" then {} else {
- GOPATH="$XDG_DATA_HOME/go";
- _JAVA_OPTIONS=''-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java'';
- };
+ # misc env variables to get things out of ~ (<3 xdg-ninja)
+ home.sessionVariables = if pkgs.system == "x86_64-darwin" then {} else {
+ GOPATH="$XDG_DATA_HOME/go";
+ _JAVA_OPTIONS=''-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java'';
+ };
+ };
}
diff --git a/users/blake/dots/zsh/default.nix b/users/blake/dots/zsh/default.nix
index 0652739..2216392 100644
--- a/users/blake/dots/zsh/default.nix
+++ b/users/blake/dots/zsh/default.nix
@@ -1,145 +1,159 @@
{
pkgs,
+ lib,
config,
...
-}: {
- # export some defaults
- home.sessionVariables = {
- EDITOR = "nvim";
- PAGER = "less";
+}:
+let
+ program = "zsh";
+ cfg = config.dots.${program};
+ #sec = sops.secrets;
+in {
+
+ options.dots.${program} = {
+ enable = lib.mkEnableOption "enables ${program}";
};
- programs.zsh = {
- enable = true;
- dotDir = ".config/zsh";
- autocd = true;
- enableCompletion = true;
+ config = lib.mkIf cfg.enable {
+
+ # export some defaults
+ home.sessionVariables = {
+ EDITOR = "nvim";
+ PAGER = "less";
+ };
- autosuggestion = {
+ programs.${program} = {
enable = true;
- highlight = "underline";
- };
+ dotDir = ".config/zsh";
+ autocd = true;
+ enableCompletion = true;
- history = {
- size = 10000;
- save = 10000;
- share = true;
- append = true;
- extended = true;
- path = "$XDG_STATE_HOME/zsh/history";
- };
-
- shellAliases = {
- # --- zsh ---
- cfz = "nvim $HOME/.config/zsh/.zshrc";
- src = "source $HOME/.config/zsh/.zshrc";
-
- # --- config editing ---
- cfh = "nvim $HOME/.config/hypr/hyprland.conf";
- cfl = "nvim $HOME/.config/lf/lfrc";
-
- # --- navigation ---
- ls = "ls --color=auto --group-directories-first";
- ll = "ls -lh --color=auto --group-directories-first";
- la = "ls -Alh --color=auto --group-directories-first";
- ".." = "cd ..";
- "..." = "cd ../..";
- fs = "du -h | sort -h";
- ds = "du -hs";
-
- # --- shortcuts ---
- vswap = "cd ~/.local/state/nvim/swap";
- rswap = "rm ~/.local/state/nvim/swap/*";
- v = "nvim";
- sv = "sudo nvim";
- vim = "nvim";
-
- # --- safety ---
- cp = "cp -iv";
- mv = "mv -iv";
- rm = "rm -Iv";
-
- # --- colors ---
- grep = "grep --color=auto";
- fgrep = "fgrep --color=auto";
- egrep = "egrep --color=auto";
-
- # --- scripts ---
- rebuild = "sh ~/.nix/bin/rebuild.sh";
- perms = "sudo sh ~/.nix/bin/perms.sh";
- bb = "sudo sh ~/.nix/bin/lf_borg.sh";
-
- # --- git ---
- status = "git status";
- add = "git add";
- commit = "git commit -am";
- push = "git push";
- pull = "git pull";
- dotfiles = "/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME";
- dtf = "/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME";
- sec = "sops ~/.nix/secrets/secrets.yaml";
-
- # --- systemd ---
- stat = "sudo systemctl status";
- restart = "sudo systemctl restart";
- start = "sudo systemctl start";
- stop = "sudo systemctl stop";
- jou = "sudo journalctl -xeu";
- live = "sudo journalctl -o short-iso -n 50 -fu";
-
- # --- system ---
- peace = "systemctl poweroff";
- love = "systemctl reboot";
- lock = "loginctl lock-session";
- };
-
- initContent = ''
-
- # the prompt
- PS1='%F{0}%K{126}%B[%n@%m]%b%k%f:%F{015}%B[%~]%b%f%F{015}%S$%s%f '
-
- # lf changes working dir on exit
- alias lf='lfcd'
- lfcd () {cd "$(command lf -print-last-dir "$@")"}
-
- '';
-
- syntaxHighlighting = {
- enable = true;
- highlighters = ["main" "brackets" "pattern" "regexp" "cursor" "root"];
- styles = {
- "default" = "none";
- "unknown-token" = "fg=red";
- "reserved-word" = "fg=red";
- "alias" = "fg=cyan,underline";
- "suffix-alias" = "fg=cyan,underline";
- "builtin" = "fg=cyan";
- "function" = "fg=cyan";
- "command" = "fg=cyan,bold";
- "path" = "fg=cyan,underline";
- "precommand" = "fg=cyan,underline";
- "commandseparator" = "fg=white";
- "globbing" = "fg=white";
- "history-expansion" = "fg=white";
- "hashed-command" = "fg=magenta";
- "single-hyphen-option" = "fg=blue";
- "double-hyphen-option" = "fg=blue";
- "back-quoted-argument" = "fg=yellow";
- "single-quoted-argument" = "fg=white";
- "double-quoted-argument" = "fg=white";
- "dollar-double-quoted-argument" = "fg=blue";
- "back-double-quoted-argument" = "fg=blue";
+ autosuggestion = {
+ enable = true;
+ highlight = "underline";
};
- };
- # zplug = {
- # enable = true;
- # zplugHome = "$XDG_STATE_HOME/zsh/zplug";
- # plugins = [
- # {name = "zsh-users/zsh-syntax-highlighting";}
- # ];
- # };
+ history = {
+ size = 10000;
+ save = 10000;
+ share = true;
+ append = true;
+ extended = true;
+ path = "$XDG_STATE_HOME/zsh/history";
+ };
+
+ shellAliases = {
+ # --- zsh ---
+ cfz = "nvim $HOME/.config/zsh/.zshrc";
+ src = "source $HOME/.config/zsh/.zshrc";
+
+ # --- config editing ---
+ cfh = "nvim $HOME/.config/hypr/hyprland.conf";
+ cfl = "nvim $HOME/.config/lf/lfrc";
+
+ # --- navigation ---
+ ls = "ls --color=auto --group-directories-first";
+ ll = "ls -lh --color=auto --group-directories-first";
+ la = "ls -Alh --color=auto --group-directories-first";
+ ".." = "cd ..";
+ "..." = "cd ../..";
+ fs = "du -h | sort -h";
+ ds = "du -hs";
+
+ # --- shortcuts ---
+ vswap = "cd ~/.local/state/nvim/swap";
+ rswap = "rm ~/.local/state/nvim/swap/*";
+ v = "nvim";
+ sv = "sudo nvim";
+ vim = "nvim";
+
+ # --- safety ---
+ cp = "cp -iv";
+ mv = "mv -iv";
+ rm = "rm -Iv";
+
+ # --- colors ---
+ grep = "grep --color=auto";
+ fgrep = "fgrep --color=auto";
+ egrep = "egrep --color=auto";
+
+ # --- scripts ---
+ rebuild = "sh ~/.nix/bin/rebuild.sh";
+ perms = "sudo sh ~/.nix/bin/perms.sh";
+ bb = "sudo sh ~/.nix/bin/lf_borg.sh";
+
+ # --- git ---
+ status = "git status";
+ add = "git add";
+ commit = "git commit -am";
+ push = "git push";
+ pull = "git pull";
+ dotfiles = "/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME";
+ dtf = "/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME";
+ sec = "sops ~/.nix/secrets/secrets.yaml";
+
+ # --- systemd ---
+ stat = "sudo systemctl status";
+ restart = "sudo systemctl restart";
+ start = "sudo systemctl start";
+ stop = "sudo systemctl stop";
+ jou = "sudo journalctl -xeu";
+ live = "sudo journalctl -o short-iso -n 50 -fu";
+
+ # --- system ---
+ peace = "systemctl poweroff";
+ love = "systemctl reboot";
+ lock = "loginctl lock-session";
+ };
+
+ initContent = ''
+
+ # the prompt
+ PS1='%F{0}%K{126}%B[%n@%m]%b%k%f:%F{015}%B[%~]%b%f%F{015}%S$%s%f '
+
+ # lf changes working dir on exit
+ alias lf='lfcd'
+ lfcd () {cd "$(command lf -print-last-dir "$@")"}
+
+ '';
+
+ syntaxHighlighting = {
+ enable = true;
+ highlighters = ["main" "brackets" "pattern" "regexp" "cursor" "root"];
+ styles = {
+ "default" = "none";
+ "unknown-token" = "fg=red";
+ "reserved-word" = "fg=red";
+ "alias" = "fg=cyan,underline";
+ "suffix-alias" = "fg=cyan,underline";
+ "builtin" = "fg=cyan";
+ "function" = "fg=cyan";
+ "command" = "fg=cyan,bold";
+ "path" = "fg=cyan,underline";
+ "precommand" = "fg=cyan,underline";
+ "commandseparator" = "fg=white";
+ "globbing" = "fg=white";
+ "history-expansion" = "fg=white";
+ "hashed-command" = "fg=magenta";
+ "single-hyphen-option" = "fg=blue";
+ "double-hyphen-option" = "fg=blue";
+ "back-quoted-argument" = "fg=yellow";
+ "single-quoted-argument" = "fg=white";
+ "double-quoted-argument" = "fg=white";
+ "dollar-double-quoted-argument" = "fg=blue";
+ "back-double-quoted-argument" = "fg=blue";
+ };
+ };
+
+ # zplug = {
+ # enable = true;
+ # zplugHome = "$XDG_STATE_HOME/zsh/zplug";
+ # plugins = [
+ # {name = "zsh-users/zsh-syntax-highlighting";}
+ # ];
+ # };
+ };
+ # rid the world of ~/.zshenv
+ #home.file.".zshenv".enable = false;
};
- # rid the world of ~/.zshenv
- #home.file.".zshenv".enable = false;
}
diff --git a/users/blake/hosts/yveltal.nix b/users/blake/hosts/yveltal.nix
index 9b6da32..87603c3 100644
--- a/users/blake/hosts/yveltal.nix
+++ b/users/blake/hosts/yveltal.nix
@@ -15,6 +15,15 @@
lf.enable = true;
kitty.enable = true;
librewolf.enable = true;
+ waybar.enable = true;
+ hypr.enable = true;
+ nvf.enable = true;
+ zsh.enable = true;
+ ssh.enable = true;
+ gpg.enable = true;
+ git.enable = true;
+ xdg.enable = true;
+
};