Add home manager setup.

This commit is contained in:
jay
2025-06-30 00:07:38 -04:00
parent 74f2f69e05
commit 31618a2183
2 changed files with 550 additions and 0 deletions

View File

@@ -12,6 +12,14 @@
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";
};

View File

@@ -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)$"
];
};
};
}