diff --git a/flake.nix b/flake.nix index 7a18fb6..803f5d5 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,14 @@ url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs-stable-nixos"; }; + + home-manager-stable-nixos = { + #url = "github:nix-community/home-manager?ref=7aae0ee71a17b19708b93b3ed448a1a0952bf111"; + url = "github:nix-community/home-manager?ref=873c5b2dc5c9387bf67e59a12abc4de12a4b8697"; + #url = "github:nix-community/home-manager?ref=f5098b074051d1ae0e919adf434a60fc3f23347b"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix-flatpak-stable-nixos = { url = "github:gmodena/nix-flatpak/?ref=latest"; diff --git a/nodes/hosts/common/home/jay/home.nix b/nodes/hosts/common/home/jay/home.nix new file mode 100644 index 0000000..f563f64 --- /dev/null +++ b/nodes/hosts/common/home/jay/home.nix @@ -0,0 +1,542 @@ +{ config, pkgs, inputs, lib, ... }: + +{ + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = "jay"; + home.homeDirectory = "/home/jay"; + + imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ]; + + + # This value determines the Home Manager release that your configuration is + # compatible with. This helps avoid breakage when a new Home Manager release + # introduces backwards incompatible changes. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + home.stateVersion = "24.11"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + home.packages = [ + pkgs.legcord + pkgs.libgtop + pkgs.mpvpaper + # pkgs.hyprlandPlugins.hyprtrails + ]; + + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + home.file = { + # ".config/elinks/elinks.conf".source = ../../dotfiles/elinks/elinks.conf; + # ".config/jellyfin-tui/config.yaml".source = ../../dotfiles/jellyfin-tui/config.yaml; + # ".config/newsboat/config".source = ../../dotfiles/newsboat/config; + # "quickemu/kubuntu-24.04.conf".source = ../../dotfiles/quickemu/kubuntu-24.04.conf; + }; + + home.sessionVariables = { + EDITOR = "nano"; + }; + + programs.bash.enable = true; + + programs.alacritty = lib.mkForce { + enable = true; + settings = { + window.opacity = 0.00; + # window.blur = true; + font.normal = { + family = "BigBlueTermPlus Nerd Font"; + style = "Regular"; + }; + }; + }; + + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + }; + + programs.lazygit.enable = true; + + programs.git = { + enable = true; + userEmail = "jay@zerojay.com"; + userName = "jay"; + extraConfig = { + credential.helper = "${ + pkgs.git.override { withLibsecret = true; } + }/bin/git-credential-libsecret"; + }; + }; + + + programs.yazi = { + enable = true; + package = pkgs.yazi; + plugins = { + "bypass" = pkgs.yaziPlugins.bypass; + "chmod" = pkgs.yaziPlugins.chmod; + "full-border" = pkgs.yaziPlugins.full-border; + "lazygit" = pkgs.yaziPlugins.lazygit; + "mediainfo" = pkgs.yaziPlugins.mediainfo; + "no-status" = pkgs.yaziPlugins.no-status; + "ouch" = pkgs.yaziPlugins.ouch; + "restore" = pkgs.yaziPlugins.restore; + "smart-enter" = pkgs.yaziPlugins.smart-enter; + "toggle-pane" = pkgs.yaziPlugins.toggle-pane; + }; + }; + + + programs.oh-my-posh = { + enable = true; + enableBashIntegration = true; + useTheme = "blueish"; + }; + + programs.rbw = { + enable = true; + # settings = { + # email = "jay@zerojay.com"; + # base_url = "https://bw.zerojay.com"; + # }; + }; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + + programs.hyprlock = { + enable = true; + }; + + # programs.starship.presets = [ "nerd-font-symbols" ]; + + programs.hyprpanel = { + enable = true; + overlay.enable = true; + hyprland.enable = true; + settings = { + layout = { + "bar.layouts" = { + "0" = { + left = [ "dashboard" "separator" "microphone" "volume" "bluetooth" "separator" "network" "separator" "workspaces" "windowtitle" ]; + middle = [ "media" "cava" ]; + right = [ "netstat" "cpu" "cputemp" "ram" "storage" "separator" "systray" "notifications" "separator" "weather" "clock" ]; + }; + }; + }; + + bar = { + customModules = { + cava = { + showIcon = false; + framerate = 165; + }; + cpuTemp.sensor = "/sys/devices/pci0000\:00/0000\:00\:18.3/hwmon/hwmon2/temp3_input"; + netstat.rateUnit = "MiB"; + weather.unit = "metric"; + updates = { + label = true; + autoHide = false; + padZero = true; + pollingInterval = 14400000; + updateCommand = "cd ~/nixos-config/ && nix flake update && nix build .#nixosConfigurations.nixos.config.system.build.toplevel && nvd diff /run/current-system ./result | grep -e '\[U' | wc -l"; + icon = { + pending = "󰏗"; + updated = "󰏖"; + }; + }; + }; + + launcher.autoDetectIcon = true; + media = { + truncation = true; + truncation_size = 70; + }; + workspaces = { + show_icons = true; + showApplicationIcons = true; + ignored = "-\\\\d+"; + }; + network = { + showWifiInfo = true; + truncation = false; + label = true; + }; + windowtitle = { + class_name = false; + custom_title = false; + truncation = true; + truncation_size = 70; + }; + }; + + #theme.name = "nord"; + # Wipeout HD Theme + #theme.name = "catppuccin_latte"; + # Wipeout HD Reverse Theme + theme.name = "monochrome"; + + menus.clock = { + time = { + military = true; + hideSeconds = true; + }; + weather = { + location = "Montreal"; + key = "0bec3053c1c64737a5b42727251005"; + unit = "metric"; + }; + }; + + menus.dashboard = { + directories = { + enabled = true; + left = { + directory1.command = "bash -c \"xdg-open $HOME/downloads/\""; + directory2.command = "bash -c \"xdg-open $HOME/videos/\""; + directory3.command = "bash -c \"xdg-open $HOME/games/\""; + directory3.label = " Games"; + }; + right = { + directory1.command = "bash -c \"xdg-open $HOME/documents/\""; + directory2.command = "bash -c \"xdg-open $HOME/pictures/\""; + directory3.command = "bash -c \"xdg-open $HOME/\""; + }; + }; + shortcuts = { + left = { + shortcut1 = { + command = "zen-twilight"; + icon = ""; + tooltip = "Zen Twilight"; + }; + shortcut2 = { + command = "steam --disable-gpu-compositing"; + icon = ""; + tooltip = "Steam"; + }; + shortcut3 = { + command = "vesktop"; + tooltip = "Vesktop"; + }; + }; + + right = { + shortcut3.command = "hyprshot -zm region --clipboard-only"; + }; + }; + stats.enable_gpu = true; + recording.path = "$HOME/Videos/recording"; + }; + + menus.media = { + displayTime = true; + displayTimeTooltip = true; + }; + + theme = { + bar = { + transparent = true; + floating = false; + }; + + font = { + size = "12px"; + name = "BigBlueTermPlus Nerd Font"; + }; + }; + + wallpaper.enable = false; + + #bar.workspaces.workspaceIconMap = { + # "1" = ""; + # "3" = "󰙯"; + # "4" = "󰄛"; + # }; + }; + }; + + stylix = { + enable = true; + base16Scheme = "${pkgs.base16-schemes}/share/themes/onedark.yaml"; + #image = ./qat02.png; + # Wipeout HD Theme + #image = ./wipeout.png; + # Wipeout HD Reverse Theme + #image = ./wipeoutreverse.png; + targets = { + # hyprpaper.enable = lib.mkForce false; + mako.enable = false; + qt.enable = false; + }; + + }; + + services = { + fluidsynth = { + enable = true; + soundService = "pipewire-pulse"; + }; + + hypridle = { + enable = true; + settings = { + general = { + lock_cmd = "pidof hyprlock || hyprlock"; + #before_sleep_cmd = "loginctl lock-session"; + #after_sleep_cmd = "hyprctl dispatch dpms on"; + }; + + listener = [ + { + timeout = 300; + on-timeout = "loginctl lock-session"; + } + ]; + }; + }; + }; + + wayland.windowManager.hyprland = { + # Allow home-manager to configure hyprland + enable = true; + xwayland.enable = true; + systemd.enable = true; + + plugins = [ + #pkgs.hyprlandPlugins.hyprtrails + #pkgs.hyprlandPlugins.hyprbars + #inputs.hyprland-plugins.packages."${pkgs.system}".hyprtrails + #inputs.hypr-darkwindow.packages.${pkgs.system}.Hypr-DarkWindow + ]; + + settings = { + "monitor" = "DP-2, 3440x1440@165, 0x0, 1"; + "$terminal" = "alacritty"; + "$filemanager" = "dolphin"; + "$menu" = "rofi -show drun -show-icons"; + + "$mainMod" = "SUPER"; + + bind = [ + "$mainMod, Q, exec, $terminal" + "$mainMod, C, killactive," + "$mainMod, M, exit," + "$mainMod, E, exec, $fileManager" + "$mainMod, F, togglefloating," + "$mainMod, R, exec, $menu" + "$mainMod, P, pseudo" + "$mainMod, J, togglesplit" + "$mainMod, l, exec, hyprlock" + + # "$mainMod, V, exec, cliphist list | rofi -dmenu | cliphost decode | wl-copy" + "$mainMod, V, exec, $terminal --class clipse -e 'clipse'" + + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + + "$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" + + "$mainMod SHIFT, Q, exec, hdrop --floating --gap 60 --width 50 $terminal --class alacritty" + + "$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" + + "$mainMod SHIFT, right, resizeactive, 10 0" + "$mainMod SHIFT, left, resizeactive, -10 0" + "$mainMod SHIFT, up, resizeactive, 0 -10" + "$mainMod SHIFT, down, resizeactive, 0 10" + + "$mainMod, S, exec, hyprshot -zm region --clipboard-only" + "$mainMod SHIFT, S, exec, hyprshot -zm region" + + "$mainMod, F9, exec, playerctl previous" + "$mainMod, F10, exec, playerctl play-pause" + "$mainMod, F11, exec, playerctl next" + + #"$mainMod, S, togglespecialworkspace, magic" + #"$mainMod SHIFT, S, movetoworkspace, special:magic" + ]; + + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + + bindel = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ",XF86MonBrightnessUp, exec, brightnessctl s 10%+" + ",XF86MonBrightnessDown, exec, brightnessctl s 10%-" + ]; + + bindl = [ + " , XF86AudioNext, exec, playerctl next" + " , XF86AudioPause, exec, playerctl play-pause" + " , XF86AudioPlay, exec, playerctl play-pause" + " , XF86AudioPrev, exec, playerctl previous" + ]; + + env = [ + "XCURSOR_SIZE,24" + "HYPRCURSOR_SIZE,24" + "LIBVA_DRIVER_NAME,nvidia" + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + "ELECTRON_OZONE_PLATFORM_HINT,auto" + "NVD_BACKEND,direct" + ]; + + general = { + layout = "dwindle"; + gaps_in = 5; + gaps_out = 20; + border_size = 2; + #"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + #"col.inactive_border" = "rgba(595959aa)"; + + + allow_tearing = true; + resize_on_border = true; + }; + + misc = { + enable_anr_dialog = false; + vrr = 0; + # anr_missed_pings = 3; + disable_hyprland_logo = true; + }; + + debug = { + full_cm_proto = true; + }; + + decoration = { + rounding = 10; + rounding_power = 2; + active_opacity = 1.0; + inactive_opacity = 1.0; + blur = { + enabled = false; + vibrancy = 0.1696; + + passes = 1; + size = 3; + }; + shadow = { + enabled = true; + range = 4; + render_power = 3; + #color = "rgba(1a1a1aee)"; + }; + }; + + animations = { + enabled = true; + + bezier = [ + "easeOutQuint,0.23,1,0.32,1" + "easeInOutCubic,0.65,0.05,0.36,1" + "linear,0,0,1,1" + "almostLinear,0.5,0.5,0.75,1.0" + "quick,0.15,0,0.1,1" + ]; + + animation = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 4.79, easeOutQuint" + "windowsIn, 1, 4.1, easeOutQuint, popin 87%" + "windowsOut, 1, 1.49, linear, popin 87%" + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" + ]; + }; + + #"plugin:borders-plus-plus" = { + # add_borders = 1; # 0 - 9 + + # you can add up to 9 borders + #"col.border_1" = "rgb(ffffff)"; + #"col.border_2" = "rgb(2222ff)"; + + # -1 means "default" as in the one defined in general:border_size + # border_size_1 = 10; + # border_size_2 = -1; + + # makes outer edges match rounding of the parent. Turn on / off to better understand. Default = on. + # natural_rounding = "yes"; + #}; + + #"plugin:hyprbars" = { + # enable = true; + #}; + + # Execute on startup. + exec-once = [ + # "systemctl --user start hyprpolkitagent" + "steam --disable-gpu-compositing" # nvidia pls let me have nice things + #"vesktop" + "legcord" + # "[workspace 9 silent] ELECTRON_OZONE_PLATFORM_HINT=x11 1password" # fix for promts not showing up anymore + "zen-twilight" + # "${pkgs.xorg.xhost}/bin/xhost +" + #"${pkgs.waybar}/bin/waybar &" + #"${pkgs.dunst}/bin/dunst &" + "clipse -listen" + "streamcontroller" + #"session-desktop" + "mpvpaper --gpu-api=vulkan -vfp -o 'no-audio no-keepaspect loop vf=lavfi=negate' DP-2 /home/jay/nixos-config/hosts/nixos/wipeout.mkv" + #"wl-clipboard-history -t" + #"wl-paste --watch cliphist store" + #"rm $HOME/.cache/cliphist/db" + #"hyprpanel &" + ]; + + windowrulev2 = [ + "workspace 1 silent, class:^(zen-twilight)$" + "workspace 2 silent, class:^(steam)$" + "workspace 3 silent, class:^(legcord)$" + "workspace 4 silent, class:^(com.core447.StreamController)$" + "float,class:(clipse)$" + "size 622 652,class:(clipse)$" + ]; + + }; + }; + +} +