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";
+ };
}