diff --git a/README.md b/README.md new file mode 100644 index 0000000..0e29aa5 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# nixos-configs + +## Misc references used +* https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles/tree/main \ No newline at end of file diff --git a/flake.nix b/flake.nix index e5701f0..ecdf6c8 100644 --- a/flake.nix +++ b/flake.nix @@ -40,27 +40,5 @@ inputs.home-manager.nixosModules.default ]; }; - - homeConfigurations = { - "caperren@cap-slim7" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - extraModules = [ - ./home/caperren/common.nix - ./home/caperren/laptop.nix - ]; - username = "caperren"; - homeDirectory = "/home/caperren"; - }; - - "caperren@cap-nr200p" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - extraModules = [ - ./home/caperren/common.nix - ./home/caperren/desktop1.nix - ]; - username = "caperren"; - homeDirectory = "/home/caperren"; - }; - }; }; } diff --git a/hosts/cap-nr200p/configuration.nix b/hosts/cap-nr200p/configuration.nix index 1be80a6..3c8524d 100644 --- a/hosts/cap-nr200p/configuration.nix +++ b/hosts/cap-nr200p/configuration.nix @@ -22,6 +22,7 @@ ../../modules/system/desktop.nix ../../modules/system/fonts.nix ../../modules/system/gpu-nvidia.nix + ../../modules/system/home-manager-settings.nix ../../modules/system/hyprland.nix ../../modules/system/internationalization.nix ../../modules/system/networking.nix diff --git a/hosts/cap-slim7/configuration.nix b/hosts/cap-slim7/configuration.nix index 8ba226b..baebf46 100644 --- a/hosts/cap-slim7/configuration.nix +++ b/hosts/cap-slim7/configuration.nix @@ -17,6 +17,7 @@ ../../modules/system/displaylink.nix ../../modules/system/fonts.nix ../../modules/system/gpu-amd.nix + ../../modules/system/home-manager-settings.nix ../../modules/system/hyprland.nix ../../modules/system/internationalization.nix ../../modules/system/laptop.nix diff --git a/modules/application-groups/ai.nix b/modules/application-groups/ai.nix new file mode 100644 index 0000000..db7f264 --- /dev/null +++ b/modules/application-groups/ai.nix @@ -0,0 +1,39 @@ +{ pkgs, config, ... }: + +{ + services.ollama = { + enable = true; + loadModels = [ + "llama3.2:3b" + "phi4-reasoning:14b" + "dolphin3:8b" + "smallthinker:3b" + "gemma3:4b" + "gemma3:12b" + "gemma3:27b" + "deepcoder:14b" + "qwen3:14b" + "nomic-embed-text" + ]; + acceleration = "cuda"; + }; + + services.open-webui = { + enable = true; + port = 8888; + host = "127.0.0.1"; + }; + + environment.systemPackages = with pkgs; [ + oterm + alpaca + aichat + fabric-ai + aider-chat + + # tgpt + # smartcat + # nextjs-ollama-llm-ui + # open-webui + ]; +} diff --git a/modules/application-groups/system-utilities.nix b/modules/application-groups/system-utilities.nix index 502241e..494f6b9 100644 --- a/modules/application-groups/system-utilities.nix +++ b/modules/application-groups/system-utilities.nix @@ -20,38 +20,40 @@ services.hardware.openrgb.enable = true; environment.systemPackages = with pkgs; [ - kitty - lf + btop + desktop-file-utils + dnsutils + ffmpeg-full git + gparted htop iftop - iotop - util-linux - usbutils - dnsutils - unzip - killall - wget - jq - speedcrunch - gparted - ffmpeg-full - xfce.mousepad imagemagick - nvtopPackages.full + iotop + jq + killall + kitty + lf ncdu - s-tui + networkmanager + networkmanagerapplet nmap + nvtopPackages.full + openrgb-with-all-plugins pciutils - desktop-file-utils + rofi-bluetooth rpi-imager rpiboot - streamdeck-ui + s-tui scrcpy - openrgb-with-all-plugins - networkmanagerapplet - rofi-bluetooth - networkmanager + speedcrunch + streamdeck-ui + stress + unzip + usbutils + util-linux + wget + xfce.mousepad ]; } diff --git a/modules/system/home-manager-settings.nix b/modules/system/home-manager-settings.nix new file mode 100644 index 0000000..cdad9dc --- /dev/null +++ b/modules/system/home-manager-settings.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: +{ + home-manager.useGlobalPkgs = true; + home-manager.backupFileExtension = "bkp"; +} \ No newline at end of file diff --git a/modules/system/hyprland.nix b/modules/system/hyprland.nix index 0ac6f2b..dce8d73 100644 --- a/modules/system/hyprland.nix +++ b/modules/system/hyprland.nix @@ -22,6 +22,9 @@ xdg.portal.enable = true; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + programs.hyprlock.enable = true; + services.hypridle.enable = true; + environment.systemPackages = with pkgs; [ waybar dunst @@ -39,8 +42,6 @@ swayimg hyprpicker kanshi - hyprlock - swayidle mako (pkgs.waybar.overrideAttrs (oldAttrs: { diff --git a/modules/system/nix-settings.nix b/modules/system/nix-settings.nix index e327172..707b170 100644 --- a/modules/system/nix-settings.nix +++ b/modules/system/nix-settings.nix @@ -12,11 +12,23 @@ # Generally want a larger download buffer nix.settings.download-buffer-size = 524288000; - programs.bash.shellAliases = { - nixrebuild = "pushd /etc/nixos && { trap 'popd' EXIT; sudo nixos-rebuild switch --flake .#$(hostname); }"; - nixupdate = "cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#$(hostname)"; - nixedit = "sudo nano /etc/nixos/hosts/$(hostname)/configuration.nix"; + nix.settings.auto-optimise-store = true; + nix.optimise.automatic = true; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 14d"; + }; - nixlimitfive = "sudo nix-env --list-generations --profile /nix/var/nix/profiles/system | head -n -5 | cut -d ' ' -f2 | xargs -I {} sudo nix-env --delete-generations --profile /nix/var/nix/profiles/system {}"; + programs.bash.shellAliases = { + # Nix rebuild, switch + nrs = "pushd /etc/nixos && { trap 'popd' EXIT; sudo nixos-rebuild switch --flake .#$(hostname); }"; + + # Nix flake update, rebuild, switch + nus = "cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#$(hostname)"; + + # Special cleanup, needed when efi partition runs out of space. Deletes all but the last five generations. + # Remember to make that partition bigger in the future... + neficlean = "sudo nix-env --list-generations --profile /nix/var/nix/profiles/system | head -n -5 | cut -d ' ' -f2 | xargs -I {} sudo nix-env --delete-generations --profile /nix/var/nix/profiles/system {}"; }; } diff --git a/users/caperren/caperren.nix b/users/caperren/caperren.nix index fce03e8..b60935f 100644 --- a/users/caperren/caperren.nix +++ b/users/caperren/caperren.nix @@ -1,4 +1,11 @@ { config, pkgs, ... }: +let + hyprlandConfigPath = ./. + "/dotfiles/hyprland/${config.networking.hostName}"; + kanshiConfigPath = ./. + "/dotfiles/kanshi/${config.networking.hostName}"; + spotifyPlayerAppTomlTextTemplate = builtins.readFile ./dotfiles/spotify-player/app.toml; + spotifyPlayerAppTomlText = builtins.replaceStrings [ "{{hostname}}" ] [ config.networking.hostName ] spotifyPlayerAppTomlTextTemplate; + waybarConfigPath = ./. + "/dotfiles/waybar/${config.networking.hostName}"; +in { users.users.caperren = { isNormalUser = true; @@ -11,8 +18,28 @@ "plugdev" "adbusers" ]; - packages = with pkgs; [ + }; + + home-manager.users.caperren = { + home.username = "caperren"; + home.homeDirectory = "/home/caperren"; + home.stateVersion = "25.05"; + + home.packages = with pkgs; [ obsidian ]; + + programs.git = { + enable = true; + userName = "Corwin Perren"; + userEmail = "caperren@gmail.com"; + }; + + home.file.".config/hypr/hyprland-common.conf".source = ./dotfiles/hyprland/hyprland-common.conf; + home.file.".config/hypr/hyprland.conf".source = hyprlandConfigPath + "/hyprland.conf"; + home.file.".config/kanshi/config".source = kanshiConfigPath + "/config"; + home.file.".config/spotify-player/app.toml".text = spotifyPlayerAppTomlText; + home.file.".config/waybar/config".source = waybarConfigPath + "/config"; + home.file.".config/wlogout/layout".source = ./dotfiles/wlogout/layout; }; } diff --git a/users/caperren/dotfiles/hyprland/cap-nr200p/hyprland.conf b/users/caperren/dotfiles/hyprland/cap-nr200p/hyprland.conf new file mode 100644 index 0000000..a1c4510 --- /dev/null +++ b/users/caperren/dotfiles/hyprland/cap-nr200p/hyprland.conf @@ -0,0 +1,9 @@ +# Unfortunate legacy config needed because hyprland can't hot switch variable refresh rate +monitor=DP-2,3440x1440@144,auto,1,vrr,1 + +# Source configs +source = ~/.config/hypr/hyprland-common.conf + +# Application launch +exec-once = sleep 10 && steam -silent +; exec-once = swayidle -w timeout 600 "hyprlock" before-sleep "hyprlock" & diff --git a/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf b/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf new file mode 100644 index 0000000..567014c --- /dev/null +++ b/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf @@ -0,0 +1,5 @@ +# Unfortunate legacy config needed because hyprland can't hot switch variable refresh rate +monitor=eDP-2,2560x1600@165,auto,1,vrr,1 + +# Source configs +source = ~/.config/hypr/hyprland-common.conf \ No newline at end of file diff --git a/users/caperren/dotfiles/hyprland/hyprland-common.conf b/users/caperren/dotfiles/hyprland/hyprland-common.conf new file mode 100644 index 0000000..f315bc1 --- /dev/null +++ b/users/caperren/dotfiles/hyprland/hyprland-common.conf @@ -0,0 +1,173 @@ +# Always enable new monitors in automatic mode +monitor=,preferred,auto,1 + +# Set programs that you use +$terminal = kitty +$fileManager = thunar +$menu = wofi --show drun + +# Some default env vars. +env = XCURSOR_SIZE,24 +env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that + +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 to 1.0, 0 means no modification. + numlock_by_default = 1 +} + +general { + gaps_in = 5 + gaps_out = 5 + border_size = 2 + col.active_border = rgba(0D8A1EFF) + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false +} + +decoration { + rounding = 10 + + blur { + enabled = true + size = 3 + passes = 1 + } + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } +} + +animations { + enabled = yes + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +gestures { + workspace_swipe = off +} + +misc { + force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers +} + +windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. + +$mainMod = SUPER + +bind = $mainMod, T, exec, $terminal +bind = $mainMod, C, killactive, + +# Launch terminal +bind = SHIFT_SUPER, Return, exec, $terminal + +# Close active window +bind = $mainMod, Shift+q, killactive, + +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +bind = $mainMod, F, fullscreen + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Volume Keys +bindl=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 2%+ +bindl=, XF86AudioLowerVolume, exec, wpctl set-volume -l 0.0 @DEFAULT_AUDIO_SINK@ 2%- +bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + +# Media Controls +bindl=, XF86AudioPlay, exec, playerctl play-pause +bindl=, XF86AudioPrev, exec, playerctl previous +bindl=, XF86AudioNext, exec, playerctl next + +# Brightness Controls +bind = ,XF86MonBrightnessDown, exec, brightnessctl s 1%- +bind = ,XF86MonBrightnessUp, exec, brightnessctl s +1% + +# Application launch +exec-once = kanshi & +exec-once = ydotoold & + +exec-once = sleep 3 && waybar + +exec-once = sleep 5 && nm-applet +exec-once = sleep 5 && blueman-applet +exec-once = sleep 5 && streamdeck -n +exec-once = sleep 5 & telegram-desktop -startintray \ No newline at end of file diff --git a/users/caperren/dotfiles/kanshi/cap-nr200p/config b/users/caperren/dotfiles/kanshi/cap-nr200p/config new file mode 100644 index 0000000..a75b80d --- /dev/null +++ b/users/caperren/dotfiles/kanshi/cap-nr200p/config @@ -0,0 +1,7 @@ +# `hyprctl monitors list` for all outputs + +profile office_desk { + output "Hewlett Packard HP Z27n CNK7311FCY" enable position 0,0 + output "LG Electronics LG ULTRAGEAR 104NTVS1N751" enable mode 3440x1440@143.92Hz position -440,1440 adaptive_sync on + output "BOE Display 0x00000060" enable position 950,2880 scale 1.0 +} \ No newline at end of file diff --git a/users/caperren/dotfiles/kanshi/cap-slim7/config b/users/caperren/dotfiles/kanshi/cap-slim7/config new file mode 100644 index 0000000..6c78dec --- /dev/null +++ b/users/caperren/dotfiles/kanshi/cap-slim7/config @@ -0,0 +1,26 @@ +# `hyprctl monitors list` for all outputs + +profile builtin_only { + output "BOE 0x0A9B Unknown" enable mode 2560x1600@165Hz position 0,0 adaptive_sync on +} + +profile bedroom_desk { + # Top left to right + output "Dell Inc. DELL P2411H F8NDP11G0DVU" enable position 0,1280 + output "Acer Technologies CB292CU 2217018D42410" enable position 1920,0 transform 90 + output "DLOGIC Ltd. No Monitor USB_601e-21H1" enable position 3000,1280 + # output "DLOGIC Ltd. No Monitor USB_601e-21H1" mode --custom 1920x1080@60Hz enable position 3000,1280 + + # Bottom left to right + output "Aculab Ltd Digital Unknown" enable transform 270 position 0,2360 + output "Hewlett Packard HP Z27n CNK7311DRR" enable position 1440,2560 + output "Aculab Ltd QHD270 Unknown" enable transform 90 position 4000,2360 + + # Far bottom right (laptop itself) + output "BOE 0x0A9B Unknown" enable position 5440,2360 adaptive_sync on +} + +profile scotts_apartment_tv { + output "BOE 0x0A9B Unknown" enable mode 2560x1600@165Hz position 0,0 adaptive_sync on + output "Hisense Electric Co., Ltd. HISENSE 0x00000001" enable mode 1920x1080@60Hz position 2560,0 +} diff --git a/users/caperren/dotfiles/spotify-player/app.toml b/users/caperren/dotfiles/spotify-player/app.toml new file mode 100644 index 0000000..ad2022b --- /dev/null +++ b/users/caperren/dotfiles/spotify-player/app.toml @@ -0,0 +1,49 @@ +theme = "dracula" +client_id = "65b708073fc0480ea92a077233ca87bd" +client_port = 8080 +login_redirect_uri = "http://127.0.0.1:8989/login" +playback_format = """ +{status} {track} • {artists} +{album} +{metadata}""" +notify_timeout_in_secs = 0 +tracks_playback_limit = 1000 +app_refresh_duration_in_ms = 32 +playback_refresh_duration_in_ms = 0 +page_size_in_rows = 20 +play_icon = "▶" +pause_icon = "▌▌" +liked_icon = "♥" +border_type = "Plain" +progress_bar_type = "Rectangle" +cover_img_length = 9 +cover_img_width = 5 +cover_img_scale = 1.0 +enable_media_control = true +enable_streaming = "Always" +enable_notify = true +enable_cover_image_cache = true +default_device = "{{hostname}}" +notify_streaming_only = false +seek_duration_secs = 5 + +[notify_format] +summary = "{track} • {artists}" +body = "{album}" + +[layout] +playback_window_position = "Top" +playback_window_height = 6 + +[layout.library] +playlist_percent = 40 +album_percent = 40 + +[device] +name = "{{hostname}}" +device_type = "speaker" +volume = 100 +bitrate = 320 +audio_cache = false +normalization = false +autoplay = false diff --git a/users/caperren/dotfiles/waybar/cap-nr200p/config b/users/caperren/dotfiles/waybar/cap-nr200p/config new file mode 100644 index 0000000..5388a83 --- /dev/null +++ b/users/caperren/dotfiles/waybar/cap-nr200p/config @@ -0,0 +1,122 @@ +{ + "layer": "top", + "position": "top", + "modules-left": [ + "custom/logo", + "clock", + "disk", + "memory", + "cpu", + "hyprland/window" + ], + "modules-center": [ + "hyprland/workspaces" + ], + "modules-right": [ + "tray", + "idle_inhibitor", + "pulseaudio", + "custom/exit" + ], + "reload_style_on_change": true, + "custom/logo": { + "format": "", + "tooltip": false + }, + "hyprland/workspaces": { + "all-outputs": false, + "format": "{icon}", + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9" + } + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "󰈈", + "deactivated": "󰈉" + } + }, + "clock": { + "format": "{:%I:%M:%S %p | %a | %F}", + "interval": 1, + "tooltip-format": "\n{:%Y %B}\n{calendar}", + "calendar-weeks-pos": "right", + "today-format": "{}", + "format-calendar": "{}", + "format-calendar-weeks": "W{:%V}", + "format-calendar-weekdays": "{}" + }, + "disk": { + "interval": 30, + "format": " {percentage_used}%", + "path": "/" + }, + "cpu": { + "interval": 1, + "format": " {usage}%", + "min-length": 6, + "max-length": 6, + "format-icons": [ + "▁", + "▂", + "▃", + "▄", + "▅", + "▆", + "▇", + "█" + ] + }, + "memory": { + "format": " {percentage}%" + }, + "hyprland/window": { + "format": "( {class} )", + "rewrite": { + "(.*) - Mozilla Firefox": "🌎 $1", + "(.*) - zsh": "> [$1]" + } + }, + "pulseaudio": { + "format": "{volume:02}% {icon}", + "format-bluetooth": "󰂰", + "format-muted": "00% {icon}", + "format-icons": { + "headphones": "", + "bluetooth": "󰥰", + "handsfree": "", + "headset": "󱡬", + "phone": "", + "portable": "", + "car": "", + "default": [ + "🕨", + "🕩", + "🕪" + ] + }, + "justify": "center", + "on-click": "amixer sset Master toggle", + "on-click-right": "pavucontrol", + "tooltip-format": "{icon} {volume:02}%" + }, + "tray": { + "icon-size": 14, + "spacing": 10 + }, + "custom/exit": { + "format": "", + "on-click": "wlogout -b 2", + "tooltip": false + } +} + diff --git a/users/caperren/dotfiles/waybar/cap-slim7/config b/users/caperren/dotfiles/waybar/cap-slim7/config new file mode 100644 index 0000000..dedaf9c --- /dev/null +++ b/users/caperren/dotfiles/waybar/cap-slim7/config @@ -0,0 +1,149 @@ +{ + "layer": "top", + "position": "top", + "modules-left": [ + "custom/logo", + "clock", + "disk", + "memory", + "cpu", + "hyprland/window" + ], + "modules-center": [ + "hyprland/workspaces" + ], + "modules-right": [ + "tray", + "idle_inhibitor", + "pulseaudio", + "battery", + "backlight", + "custom/exit" + ], + "reload_style_on_change": true, + "custom/logo": { + "format": "", + "tooltip": false + }, + "hyprland/workspaces": { + "all-outputs": false, + "format": "{icon}", + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9" + } + }, + "backlight": { + "device": "intel_backlight", + "format": "{percent}% {icon}", + "format-icons": [ + "", + "" + ] + }, + "battery": { + "bat": "BAT0", + "interval": 60, + "states": { + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-icons": [ + "", + "", + "", + "", + "" + ], + "max-length": 25 + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "󰈈", + "deactivated": "󰈉" + } + }, + "clock": { + "format": "{:%I:%M:%S %p | %a | %F}", + "interval": 1, + "tooltip-format": "\n{:%Y %B}\n{calendar}", + "calendar-weeks-pos": "right", + "today-format": "{}", + "format-calendar": "{}", + "format-calendar-weeks": "W{:%V}", + "format-calendar-weekdays": "{}" + }, + "disk": { + "interval": 30, + "format": " {percentage_used}%", + "path": "/" + }, + "cpu": { + "interval": 1, + "format": " {usage}%", + "min-length": 6, + "max-length": 6, + "format-icons": [ + "▁", + "▂", + "▃", + "▄", + "▅", + "▆", + "▇", + "█" + ] + }, + "memory": { + "format": " {percentage}%" + }, + "hyprland/window": { + "format": "( {class} )", + "rewrite": { + "(.*) - Mozilla Firefox": "🌎 $1", + "(.*) - zsh": "> [$1]" + } + }, + "pulseaudio": { + "format": "{volume:02}% {icon}", + "format-bluetooth": "󰂰", + "format-muted": "00% {icon}", + "format-icons": { + "headphones": "", + "bluetooth": "󰥰", + "handsfree": "", + "headset": "󱡬", + "phone": "", + "portable": "", + "car": "", + "default": [ + "🕨", + "🕩", + "🕪" + ] + }, + "justify": "center", + "on-click": "amixer sset Master toggle", + "on-click-right": "pavucontrol", + "tooltip-format": "{icon} {volume:02}%" + }, + "tray": { + "icon-size": 14, + "spacing": 10 + }, + "custom/exit": { + "format": "", + "on-click": "wlogout -b 2", + "tooltip": false + } +} + diff --git a/users/caperren/dotfiles/wlogout/layout b/users/caperren/dotfiles/wlogout/layout new file mode 100644 index 0000000..a0523d4 --- /dev/null +++ b/users/caperren/dotfiles/wlogout/layout @@ -0,0 +1,24 @@ +{ + "label" : "lock", + "action" : "hyprlock", + "text" : "Lock", + "keybind" : "l" +} +{ + "label" : "logout", + "action" : "loginctl terminate-user $USER", + "text" : "Logout", + "keybind" : "e" +} +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "Shutdown", + "keybind" : "s" +} +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "Reboot", + "keybind" : "r" +} \ No newline at end of file diff --git a/users/crestline/crestline.nix b/users/crestline/crestline.nix index bcbeb38..2389627 100644 --- a/users/crestline/crestline.nix +++ b/users/crestline/crestline.nix @@ -9,14 +9,17 @@ "input" "dialout" ]; - packages = with pkgs; [ ]; - }; services.displayManager.autoLogin = { enable = true; user = "crestline"; }; - services.xserver.displayManager.gdm.autoLogin.delay = 60; + + home-manager.users.crestline = { + home.username = "crestline"; + home.homeDirectory = "/home/crestline"; + home.stateVersion = "25.05"; + }; }