diff --git a/bin/actions/auto-start.sh b/bin/actions/auto-start.sh
index e23ace8..16cf3ba 100755
--- a/bin/actions/auto-start.sh
+++ b/bin/actions/auto-start.sh
@@ -1,13 +1,17 @@
#!/usr/bin/env bash
apps=(
- spotify
- whatsapp-for-linux
- telegram-desktop
- vesktop
- trayscale
- 1password
- ulauncher-wrapped
+ "spotify"
+ "whatsapp-for-linux"
+ "telegram-desktop"
+ "vesktop"
+ "trayscale"
+ "1password"
+ "ulauncher-wrapped --no-window-shadow --hide-window"
+ "polkit-agent"
+ "swaync"
+ "nm-applet"
+ "blueman-applet"
)
# check if screen has any dead sessions
@@ -17,15 +21,17 @@ fi
echo "Starting auto-start applications..."
for app in "${apps[@]}"; do
- if [ -x "$(command -v $app)" ]; then
- if screen -list | grep -q $app; then
- echo "$app is already running. Skipping..."
+ app_name=$(echo $app | awk '{print $1}')
+ app_params=$(echo $app | cut -d' ' -f2-)
+
+ if [ -x "$(command -v $app_name)" ]; then
+ if screen -list | grep -q $app_name; then
+ echo "$app_name is already running. Skipping..."
continue
fi
- echo "Starting $app..."
- screen -dmS $app $app
+ echo "Starting $app_name with parameters $app_params..."
+ screen -dmS $app_name $app_name $app_params
sleep 1
fi
-done
-
+done
\ No newline at end of file
diff --git a/config/config.yaml b/config/config.yaml
index bffcb06..9804654 100644
--- a/config/config.yaml
+++ b/config/config.yaml
@@ -54,6 +54,35 @@ config:
target: ~/.ssh/authorized_keys
chmod: 600
+ # Hyprland config
+ hyprland:
+ source: ~/dotfiles/config/hyprland.conf
+ target: ~/.config/hypr/hyprland.conf
+
+ # kitty config
+ kitty:
+ source: ~/dotfiles/config/kitty.conf
+ target: ~/.config/kitty/kitty.conf
+
+ kitty_theme:
+ source: ~/dotfiles/config/kitty-theme.conf
+ target: ~/.config/kitty/theme.conf
+
+ # hyprlock config
+ hyprlock:
+ source: ~/dotfiles/config/hyprlock.conf
+ target: ~/.config/hypr/hyprlock.conf
+
+ # hypridle config
+ hypridle:
+ source: ~/dotfiles/config/hypridle.conf
+ target: ~/.config/hypr/hypridle.conf
+
+ # Hyprpaper config
+ hyprpaper:
+ source: ~/dotfiles/config/hyprpaper.conf
+ target: ~/.config/hypr/hyprpaper.conf
+
# Starship config
starship:
source: ~/dotfiles/config/starship.toml
diff --git a/config/home-manager/flake.lock b/config/home-manager/flake.lock
index b3c6890..a1b2dab 100644
--- a/config/home-manager/flake.lock
+++ b/config/home-manager/flake.lock
@@ -23,11 +23,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1734323986,
- "narHash": "sha256-m/lh6hYMIWDYHCAsn81CDAiXoT3gmxXI9J987W5tZrE=",
+ "lastModified": 1734875076,
+ "narHash": "sha256-Pzyb+YNG5u3zP79zoi8HXYMs15Q5dfjDgwCdUI5B0nY=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "394571358ce82dff7411395829aa6a3aad45b907",
+ "rev": "1807c2b91223227ad5599d7067a61665c52d1295",
"type": "github"
},
"original": {
@@ -39,11 +39,11 @@
},
"nixpkgs-unstable": {
"locked": {
- "lastModified": 1734119587,
- "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
+ "lastModified": 1734649271,
+ "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
+ "rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507",
"type": "github"
},
"original": {
diff --git a/config/home-manager/packages/workstation/packages.nix b/config/home-manager/packages/workstation/packages.nix
index bc55801..91c987b 100644
--- a/config/home-manager/packages/workstation/packages.nix
+++ b/config/home-manager/packages/workstation/packages.nix
@@ -18,6 +18,9 @@
gparted # Used to nuke Windows off of my system
rpi-imager # Raspberry Pi OS image writer
kitty # Terminal emulator
+ kitty-themes # Kitty terminal themes
+ pavucontrol # PulseAudio volume control
+ qrencode # qr code generator
## Chat Apps
telegram-desktop
diff --git a/config/home-manager/packages/workstation/ulauncher.nix b/config/home-manager/packages/workstation/ulauncher.nix
index c456850..e1c8383 100644
--- a/config/home-manager/packages/workstation/ulauncher.nix
+++ b/config/home-manager/packages/workstation/ulauncher.nix
@@ -26,7 +26,8 @@ let
"name" = "Google Search";
"keyword" = "g";
"cmd" = "https://google.com/search?q=%s";
- "icon" = "/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/google-search-icon.png";
+ "icon" =
+ "/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/google-search-icon.png";
"is_default_search" = true;
"run_without_argument" = false;
"added" = 0;
@@ -36,7 +37,8 @@ let
"name" = "Stack Overflow";
"keyword" = "so";
"cmd" = "https://stackoverflow.com/search?q=%s";
- "icon" = "/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/stackoverflow-icon.svg";
+ "icon" =
+ "/nix/store/ifh4wl3j3cv7f6b5rdzqcnhw5sa27pg9-ulauncher-5.15.7/share/ulauncher/media/stackoverflow-icon.svg";
"is_default_search" = true;
"run_without_argument" = false;
"added" = 0;
@@ -135,7 +137,8 @@ in
xdg.dataFile."applications/ulauncher.desktop".text = desktopEntry;
# Enable autostart for Ulauncher
- xdg.configFile."autostart/ulauncher.desktop".source = "${pkgs.ulauncher}/share/applications/ulauncher.desktop";
+ xdg.configFile."autostart/ulauncher.desktop".source =
+ "${pkgs.ulauncher}/share/applications/ulauncher.desktop";
# Overwrite ulauncher settings and shortcuts
home.activation.ulauncher-config = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
diff --git a/config/home-manager/packages/workstation/waybar.nix b/config/home-manager/packages/workstation/waybar.nix
new file mode 100644
index 0000000..a1766ff
--- /dev/null
+++ b/config/home-manager/packages/workstation/waybar.nix
@@ -0,0 +1,142 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+{
+ programs.waybar = {
+ enable = true;
+ package = pkgs.waybar;
+ settings = {
+ mainBar = {
+ layer = "top";
+ position = "top";
+ height = 30;
+ spacing = 4;
+ modules-left = [
+ "hyprland/workspaces"
+ "hyprland/window"
+ ];
+ modules-center = [ "clock" ];
+ modules-right = [
+ "pulseaudio"
+ "network"
+ "tray"
+ ];
+
+ "hyprland/workspaces" = {
+ format = "{icon}";
+ on-click = "activate";
+ sort-by-number = true;
+ };
+
+ "clock" = {
+ format = "{:%H:%M}";
+ format-alt = "{:%Y-%m-%d}";
+ tooltip-format = "{:%Y %B}\n{calendar}";
+ };
+
+ "network" = {
+ format-wifi = "{essid} ({signalStrength}%) ";
+ format-ethernet = "{ipaddr}/{cidr} ";
+ tooltip-format = "{ifname} via {gwaddr} ";
+ format-linked = "{ifname} (No IP) ";
+ format-disconnected = "Disconnected ⚠";
+ format-alt = "{ifname}: {ipaddr}/{cidr}";
+ };
+
+ "pulseaudio" = {
+ format = "{volume}% {icon} {format_source}";
+ format-bluetooth = "{volume}% {icon} {format_source}";
+ format-bluetooth-muted = " {icon} {format_source}";
+ format-muted = " {format_source}";
+ format-source = "{volume}% ";
+ format-source-muted = "";
+ format-icons = {
+ headphone = "";
+ hands-free = "";
+ headset = "";
+ phone = "";
+ portable = "";
+ car = "";
+ default = [
+ ""
+ ""
+ ""
+ ];
+ };
+ on-click = "pavucontrol";
+ };
+
+ "tray" = {
+ icon-size = 21;
+ spacing = 10;
+ };
+ };
+ };
+
+ style = ''
+ * {
+ border: none;
+ border-radius: 0;
+ font-family: "JetBrainsMono Nerd Font";
+ font-size: 13px;
+ min-height: 0;
+ }
+
+ window#waybar {
+ background: rgba(21, 18, 27, 0.6);
+ color: #cdd6f4;
+ }
+
+ tooltip {
+ background: #1e1e2e;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
+ }
+
+ #workspaces button {
+ padding: 5px;
+ color: #313244;
+ margin-right: 5px;
+ }
+
+ #workspaces button.active {
+ color: #a6adc8;
+ }
+
+ #workspaces button.focused {
+ color: #a6adc8;
+ background: #eba0ac;
+ border-radius: 10px;
+ }
+
+ #workspaces button.urgent {
+ color: #11111b;
+ background: #a6e3a1;
+ border-radius: 10px;
+ }
+
+ #workspaces button:hover {
+ background: #11111b;
+ color: #cdd6f4;
+ border-radius: 10px;
+ }
+
+ #clock,
+ #workspaces,
+ #network,
+ #pulseaudio,
+ #tray {
+ background: #1e1e2e;
+ padding: 0px 10px;
+ margin: 3px 0px;
+ margin-top: 10px;
+ border: 1px solid #181825;
+ }
+ '';
+ };
+}
diff --git a/config/hypridle.conf b/config/hypridle.conf
new file mode 100644
index 0000000..6cc989d
--- /dev/null
+++ b/config/hypridle.conf
@@ -0,0 +1,10 @@
+general {
+ lock_cmd = hyprlock # command to lock the screen
+ ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
+ ignore_systemd_inhibit = false # whether to ignore systemd-inhibit --what=idle inhibitors
+}
+
+listener {
+ timeout = 300 # 5 minutes (300 seconds)
+ on-timeout = hyprlock
+}
\ No newline at end of file
diff --git a/config/hyprland.conf b/config/hyprland.conf
new file mode 100644
index 0000000..a55571a
--- /dev/null
+++ b/config/hyprland.conf
@@ -0,0 +1,308 @@
+# Refer to the wiki for more information.
+# https://wiki.hyprland.org/Configuring/
+
+################
+### MONITORS ###
+################
+
+# See https://wiki.hyprland.org/Configuring/Monitors/
+monitor=eDP-1, highrr, 0x0, 1
+monitor=DP-2, highrr, 2560x0, 1
+
+
+###################
+### MY PROGRAMS ###
+###################
+
+# See https://wiki.hyprland.org/Configuring/Keywords/
+
+# Set programs that you use
+$terminal = kitty
+$fileManager = nautilus
+$menu = ulauncher-wrapped --no-window-shadow --hide-window
+
+
+#################
+### AUTOSTART ###
+#################
+
+# Autostart necessary processes (like notifications daemons, status bars, etc.)
+# Or execute your favorite apps at launch like this:
+
+# exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+# exec-once = gnome-keyring-daemon --start --components=secrets,pkcs11,ssh
+exec-once = hypridle
+exec-once = waybar
+exec-once = hyprpaper
+exec-once = dotf auto-start
+
+#############################
+### ENVIRONMENT VARIABLES ###
+#############################
+
+# See https://wiki.hyprland.org/Configuring/Environment-variables/
+
+env = XCURSOR_SIZE,16
+env = HYPRCURSOR_SIZE,16
+
+
+#####################
+### LOOK AND FEEL ###
+#####################
+
+# Refer to https://wiki.hyprland.org/Configuring/Variables/
+
+# https://wiki.hyprland.org/Configuring/Variables/#general
+general {
+ gaps_in = 4
+ gaps_out = 16
+
+ border_size = 2
+
+ # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
+ col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
+ col.inactive_border = rgba(595959aa)
+
+ # Set to true enable resizing windows by clicking and dragging on borders and gaps
+ resize_on_border = true
+ extend_border_grab_area = 16
+ hover_icon_on_border = true
+
+ # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+ allow_tearing = false
+
+ layout = dwindle
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#decoration
+decoration {
+ rounding = 10
+
+ # Change transparency of focused and unfocused windows
+ active_opacity = 1.0
+ inactive_opacity = 1.0
+
+ shadow {
+ enabled = true
+ range = 4
+ render_power = 3
+ color = rgba(1a1a1aee)
+ }
+
+ # https://wiki.hyprland.org/Configuring/Variables/#blur
+ blur {
+ enabled = true
+ size = 3
+ passes = 1
+
+ vibrancy = 0.1696
+ }
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#animations
+animations {
+ enabled = yes, please :)
+
+ # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+
+ bezier = easeOutQuint,0.23,1,0.32,1
+ bezier = easeInOutCubic,0.65,0.05,0.36,1
+ bezier = linear,0,0,1,1
+ bezier = almostLinear,0.5,0.5,0.75,1.0
+ bezier = quick,0.15,0,0.1,1
+
+ animation = global, 1, 10, default
+ animation = border, 1, 5.39, easeOutQuint
+ animation = windows, 1, 4.79, easeOutQuint
+ animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
+ animation = windowsOut, 1, 1.49, linear, popin 87%
+ animation = fadeIn, 1, 1.73, almostLinear
+ animation = fadeOut, 1, 1.46, almostLinear
+ animation = fade, 1, 3.03, quick
+ animation = layers, 1, 3.81, easeOutQuint
+ animation = layersIn, 1, 4, easeOutQuint, fade
+ animation = layersOut, 1, 1.5, linear, fade
+ animation = fadeLayersIn, 1, 1.79, almostLinear
+ animation = fadeLayersOut, 1, 1.39, almostLinear
+ animation = workspaces, 1, 1.94, almostLinear, fade
+ animation = workspacesIn, 1, 1.21, almostLinear, fade
+ animation = workspacesOut, 1, 1.94, almostLinear, fade
+}
+
+# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
+# "Smart gaps" / "No gaps when only"
+# uncomment all if you wish to use that.
+# workspace = w[tv1], gapsout:0, gapsin:0
+# workspace = f[1], gapsout:0, gapsin:0
+# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
+# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
+# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
+# windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
+
+# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
+dwindle {
+ pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+ preserve_split = true # You probably want this
+}
+
+# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+master {
+ new_status = master
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#misc
+misc {
+ force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
+ disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
+}
+
+
+#############
+### INPUT ###
+#############
+
+# https://wiki.hyprland.org/Configuring/Variables/#input
+input {
+ kb_layout = us
+ kb_variant = euro
+ kb_model =
+ kb_options =
+ kb_rules =
+
+ # 0 = no, 1 = yes, 2 = on click
+ follow_mouse = 2
+ sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+
+ touchpad {
+ natural_scroll = false
+ }
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#gestures
+gestures {
+ workspace_swipe = false
+}
+
+# Example per-device config
+# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
+device {
+ name = epic-mouse-v1
+ sensitivity = -0.5
+}
+
+
+###################
+### KEYBINDINGS ###
+###################
+
+# See https://wiki.hyprland.org/Configuring/Keywords/
+$mainMod = SUPER # Sets "Windows" key as main modifier
+
+# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+bind = CTRL ALT, T, exec, $terminal
+bind = CTRL ALT, SPACE, exec, 1password --quick-access
+bind = $mainMod, L, exec, hyprlock
+bind = $mainMod, C, killactive,
+bind = $mainMod, M, exit,
+bind = $mainMod, E, exec, $fileManager
+bind = $mainMod, V, togglefloating,
+bind = CTRL, SPACE, exec, ulauncher-toggle
+bind = $mainMod, R, exec, $menu
+bind = $mainMod, P, pseudo, # dwindle
+bind = $mainMod, J, togglesplit, # dwindle
+
+# 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
+
+# Laptop multimedia keys for volume and LCD brightness
+bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
+bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
+bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
+bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
+bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
+bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
+
+# Requires playerctl
+bindl = , XF86AudioNext, exec, playerctl next
+bindl = , XF86AudioPause, exec, playerctl play-pause
+bindl = , XF86AudioPlay, exec, playerctl play-pause
+bindl = , XF86AudioPrev, exec, playerctl previous
+
+##############################
+### WINDOWS AND WORKSPACES ###
+##############################
+
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
+
+# Example windowrule v1
+# windowrule = float, ^(kitty)$
+
+# Example windowrule v2
+# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+
+# Ignore maximize requests from apps. You'll probably like this.
+windowrulev2 = suppressevent maximize, class:.*
+
+# Fix some dragging issues with XWayland
+windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
+
+plugin {
+ hyprbars {
+ bar_color = rgba(2a2a2aee)
+ bar_height = 24
+ col.text = rgba(ffffffdd)
+ bar_text_size = 10
+ bar_text_font = Sans
+
+ hyprbars-button = rgb(ff4040), 16,, hyprctl dispatch killactive
+ hyprbars-button = rgb(eeee11), 16,, hyprctl dispatch fullscreen 1
+
+ # The rest of these are defaults, but you can change them
+ bar_precedence_over_border = true
+ bar_part_of_window = true
+ bar_button_padding = 6
+ bar_padding = 6
+ }
+}
+
+exec-once = hyprctl plugin load /run/current-system/sw/lib/libhyprbars.so
diff --git a/config/hyprlock.conf b/config/hyprlock.conf
new file mode 100644
index 0000000..d192c0f
--- /dev/null
+++ b/config/hyprlock.conf
@@ -0,0 +1,65 @@
+# BACKGROUND
+background {
+ monitor =
+ path = screenshot
+ color = $background
+ blur_passes = 2
+ contrast = 1
+ brightness = 0.5
+ vibrancy = 0.2
+ vibrancy_darkness = 0.2
+}
+
+# GENERAL
+general {
+ no_fade_in = true
+ no_fade_out = true
+ hide_cursor = false
+ grace = 0
+ disable_loading_bar = true
+}
+
+# INPUT FIELD
+input-field {
+ monitor =
+ size = 250, 60
+ outline_thickness = 2
+ dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.35 # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = true
+ outer_color = rgba(0, 0, 0, 0)
+ inner_color = rgba(0, 0, 0, 0.2)
+ font_color = $foreground
+ fade_on_empty = false
+ rounding = -1
+ check_color = rgb(204, 136, 34)
+ placeholder_text = Input Password...
+ hide_input = false
+ position = 0, -200
+ halign = center
+ valign = center
+}
+
+# DATE
+label {
+ monitor =
+ text = cmd[update:1000] echo "$(date +"%A, %B %d")"
+ color = rgba(242, 243, 244, 0.75)
+ font_size = 22
+ font_family = JetBrains Mono
+ position = 0, 300
+ halign = center
+ valign = center
+}
+
+# TIME
+label {
+ monitor =
+ text = cmd[update:1000] echo "$(date +"%-I:%M")"
+ color = rgba(242, 243, 244, 0.75)
+ font_size = 95
+ font_family = JetBrains Mono Extrabold
+ position = 0, 200
+ halign = center
+ valign = center
+}
diff --git a/config/hyprpaper.conf b/config/hyprpaper.conf
new file mode 100644
index 0000000..19602d8
--- /dev/null
+++ b/config/hyprpaper.conf
@@ -0,0 +1,5 @@
+preload = ~/dotfiles/secrets/wp/9.png
+
+splash = true
+
+wallpaper = ,~/dotfiles/secrets/wp/9.png
diff --git a/config/kitty-theme.conf b/config/kitty-theme.conf
new file mode 100644
index 0000000..04da5c3
--- /dev/null
+++ b/config/kitty-theme.conf
@@ -0,0 +1,21 @@
+background #202020
+foreground #d0d0d0
+cursor #d0d0d0
+selection_background #303030
+color0 #151515
+color8 #505050
+color1 #ac4142
+color9 #ac4142
+color2 #7e8d50
+color10 #7e8d50
+color3 #e5b566
+color11 #e5b566
+color4 #6c99ba
+color12 #6c99ba
+color5 #9e4e85
+color13 #9e4e85
+color6 #7dd5cf
+color14 #7dd5cf
+color7 #d0d0d0
+color15 #f5f5f5
+selection_foreground #202020
\ No newline at end of file
diff --git a/config/kitty.conf b/config/kitty.conf
new file mode 100644
index 0000000..9228217
--- /dev/null
+++ b/config/kitty.conf
@@ -0,0 +1,246 @@
+# vim:fileencoding=utf-8:ft=conf
+
+# Font family. You can also specify different fonts for the
+# bold/italic/bold-italic variants. By default they are derived automatically,
+# by the OSes font system. Setting them manually is useful for font families
+# that have many weight variants like Book, Medium, Thick, etc. For example:
+# font_family Operator Mono Book
+# bold_font Operator Mono Thick
+# bold_italic_font Operator Mono Medium
+# font_family Input Mono
+font_family FiraCode Nerd Font Mono
+italic_font auto
+bold_font auto
+bold_italic_font auto
+
+# Font size (in pts)
+font_size 16.0
+
+# The foreground color
+foreground #c0b18b
+
+# The background color
+background #262626
+background_opacity 0.9
+# The foreground for selections
+selection_foreground #2f2f2f
+
+# The background for selections
+selection_background #d75f5f
+
+# The cursor color
+cursor #8fee96
+
+# The cursor shape can be one of (block, beam, underline)
+cursor_shape block
+
+# The interval (in seconds) at which to blink the cursor. Set to zero to
+# disable blinking.
+cursor_blink_interval 0.5
+
+# Stop blinking cursor after the specified number of seconds of keyboard inactivity. Set to
+# zero or a negative number to never stop blinking.
+cursor_stop_blinking_after 15.0
+
+# Number of lines of history to keep in memory for scrolling back
+scrollback_lines 2000
+
+# Program with which to view scrollback in a new window. The scrollback buffer is passed as
+# STDIN to this program. If you change it, make sure the program you use can
+# handle ANSI escape sequences for colors and text formatting.
+scrollback_pager less +G -R
+
+# Wheel scroll multiplier (modify the amount scrolled by the mouse wheel)
+wheel_scroll_multiplier 5.0
+
+# The interval between successive clicks to detect double/triple clicks (in seconds)
+click_interval 0.5
+
+# Characters considered part of a word when double clicking. In addition to these characters
+# any character that is marked as an alpha-numeric character in the unicode
+# database will be matched.
+select_by_word_characters :@-./_~?&=%+#
+
+# Hide mouse cursor after the specified number of seconds of the mouse not being used. Set to
+# zero or a negative number to disable mouse cursor hiding.
+mouse_hide_wait 0.0
+
+# The enabled window layouts. A comma separated list of layout names. The special value * means
+# all layouts. The first listed layout will be used as the startup layout.
+# For a list of available layouts, see the file layouts.py
+enabled_layouts *
+
+# If enabled, the window size will be remembered so that new instances of kitty will have the same
+# size as the previous instance. If disabled, the window will initially have size configured
+# by initial_window_width/height, in pixels.
+remember_window_size no
+initial_window_width 640
+initial_window_height 400
+
+# Delay (in milliseconds) between screen updates. Decreasing it, increases fps
+# at the cost of more CPU usage. The default value yields ~100fps which is more
+# that sufficient for most uses.
+# repaint_delay 10
+repaint_delay 10
+
+# Delay (in milliseconds) before input from the program running in the terminal
+# is processed. Note that decreasing it will increase responsiveness, but also
+# increase CPU usage and might cause flicker in full screen programs that
+# redraw the entire screen on each loop, because kitty is so fast that partial
+# screen updates will be drawn.
+input_delay 3
+
+# Visual bell duration. Flash the screen when a bell occurs for the specified number of
+# seconds. Set to zero to disable.
+visual_bell_duration 0.0
+
+# Enable/disable the audio bell. Useful in environments that require silence.
+enable_audio_bell no
+
+# The modifier keys to press when clicking with the mouse on URLs to open the URL
+open_url_modifiers ctrl+shift
+
+# The program with which to open URLs that are clicked on. The special value "default" means to
+# use the operating system's default URL handler.
+open_url_with default
+
+# The value of the TERM environment variable to set
+term xterm-kitty
+
+# The width (in pts) of window borders. Will be rounded to the nearest number of pixels based on screen resolution.
+window_border_width 0
+
+window_margin_width 15
+
+# The color for the border of the active window
+active_border_color #ffffff
+
+# The color for the border of inactive windows
+inactive_border_color #cccccc
+
+# Tab-bar colors
+active_tab_foreground #000
+active_tab_background #eee
+inactive_tab_foreground #444
+inactive_tab_background #999
+
+
+# The 16 terminal colors. There are 8 basic colors, each color has a dull and
+# bright version.
+
+# black
+color0 #2f2f2f
+color8 #656565
+
+# red
+color1 #d75f5f
+color9 #d75f5f
+
+# green
+color2 #d4d232
+color10 #8fee96
+
+# yellow
+color3 #af865a
+color11 #cd950c
+
+# blue
+color4 #22c3a1
+color12 #22c3a1
+
+# magenta
+color5 #775759
+color13 #775759
+
+# cyan
+color6 #84edb9
+color14 #84edb9
+
+# white
+color7 #c0b18b
+color15 #d8d8d8
+
+# Key mapping
+# For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html
+# For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html
+# You can use the special action no_op to unmap a keyboard shortcut that is
+# assigned in the default configuration.
+
+# Clipboard
+map super+v paste_from_clipboard
+map ctrl+shift+s paste_from_selection
+map super+c copy_to_clipboard
+map shift+insert paste_from_selection
+
+# Scrolling
+map ctrl+shift+up scroll_line_up
+map ctrl+shift+down scroll_line_down
+map ctrl+shift+k scroll_line_up
+map ctrl+shift+j scroll_line_down
+map ctrl+shift+page_up scroll_page_up
+map ctrl+shift+page_down scroll_page_down
+map ctrl+shift+home scroll_home
+map ctrl+shift+end scroll_end
+map ctrl+shift+h show_scrollback
+
+# Window management
+map super+n new_os_window
+map super+w close_window
+map ctrl+shift+enter new_window
+map ctrl+shift+] next_window
+map ctrl+shift+[ previous_window
+map ctrl+shift+f move_window_forward
+map ctrl+shift+b move_window_backward
+map ctrl+shift+` move_window_to_top
+map ctrl+shift+1 first_window
+map ctrl+shift+2 second_window
+map ctrl+shift+3 third_window
+map ctrl+shift+4 fourth_window
+map ctrl+shift+5 fifth_window
+map ctrl+shift+6 sixth_window
+map ctrl+shift+7 seventh_window
+map ctrl+shift+8 eighth_window
+map ctrl+shift+9 ninth_window
+map ctrl+shift+0 tenth_window
+
+# Tab management
+map ctrl+shift+right next_tab
+map ctrl+shift+left previous_tab
+map ctrl+shift+t new_tab
+map ctrl+shift+q close_tab
+map ctrl+shift+l next_layout
+map ctrl+shift+. move_tab_forward
+map ctrl+shift+, move_tab_backward
+
+# Miscellaneous
+map ctrl+shift+up increase_font_size
+map ctrl+shift+down decrease_font_size
+map ctrl+shift+backspace restore_font_size
+
+# Symbol mapping (special font for specified unicode code points). Map the
+# specified unicode codepoints to a particular font. Useful if you need special
+# rendering for some symbols, such as for Powerline. Avoids the need for
+# patched fonts. Each unicode code point is specified in the form U+. You can specify multiple code points, separated by commas
+# and ranges separated by hyphens. symbol_map itself can be specified multiple times.
+# Syntax is:
+#
+# symbol_map codepoints Font Family Name
+#
+# For example:
+#
+#symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols
+hide_window_decorations yes
+macos_option_as_alt no
+remember_window_size no
+initial_window_width 2500
+initial_window_height 1380
+
+# Change the color of the kitty window's titlebar on macOS. A value of "system"
+# means to use the default system color, a value of "background" means to use
+# the default background color and finally you can use an arbitrary color, such
+# as #12af59 or "red".
+macos_titlebar_color background
+
+allow_remote_control yes
+include ./theme.conf
diff --git a/config/nixos/common/workstation.nix b/config/nixos/common/workstation.nix
index a0828df..2837194 100644
--- a/config/nixos/common/workstation.nix
+++ b/config/nixos/common/workstation.nix
@@ -11,9 +11,6 @@
# services.desktopManager.cosmic.enable = true;
# services.displayManager.cosmic-greeter.enable = true;
- # Enable hyperland
- programs.hyprland.enable = true;
-
# Install xanmod kernel
boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_stable;
diff --git a/config/nixos/flake.lock b/config/nixos/flake.lock
index 79b5997..c8d1ece 100644
--- a/config/nixos/flake.lock
+++ b/config/nixos/flake.lock
@@ -1,28 +1,365 @@
{
"nodes": {
- "nixpkgs": {
+ "aquamarine": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "hyprwayland-scanner": [
+ "hyprland",
+ "hyprwayland-scanner"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
"locked": {
- "lastModified": 1734323986,
- "narHash": "sha256-m/lh6hYMIWDYHCAsn81CDAiXoT3gmxXI9J987W5tZrE=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "394571358ce82dff7411395829aa6a3aad45b907",
+ "lastModified": 1734906446,
+ "narHash": "sha256-6OWluVE2A8xi+8V3jN9KA72RCgJjYdyyuLBUjxZ2q2U=",
+ "owner": "hyprwm",
+ "repo": "aquamarine",
+ "rev": "eecb74dc79bb6752a2a507e6edee3042390a6091",
"type": "github"
},
"original": {
- "owner": "nixos",
- "ref": "nixos-24.11",
+ "owner": "hyprwm",
+ "repo": "aquamarine",
+ "type": "github"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "gitignore": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "pre-commit-hooks",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1709087332,
+ "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "type": "github"
+ }
+ },
+ "hyprcursor": {
+ "inputs": {
+ "hyprlang": [
+ "hyprland",
+ "hyprlang"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1734906540,
+ "narHash": "sha256-vQ/L9hZFezC0LquLo4TWXkyniWtYBlFHAKIsDc7PYJE=",
+ "owner": "hyprwm",
+ "repo": "hyprcursor",
+ "rev": "69270ba8f057d55b0e6c2dca0e165d652856e613",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprcursor",
+ "type": "github"
+ }
+ },
+ "hyprgraphics": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1734906236,
+ "narHash": "sha256-vH/ysV2ONGQgYZPtcJKwc8jJivzyVxru2aaOxC20ZOE=",
+ "owner": "hyprwm",
+ "repo": "hyprgraphics",
+ "rev": "6dea3fba08fd704dd624b6d4b261638fb4003c9c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprgraphics",
+ "type": "github"
+ }
+ },
+ "hyprland": {
+ "inputs": {
+ "aquamarine": "aquamarine",
+ "hyprcursor": "hyprcursor",
+ "hyprgraphics": "hyprgraphics",
+ "hyprland-protocols": "hyprland-protocols",
+ "hyprland-qtutils": "hyprland-qtutils",
+ "hyprlang": "hyprlang",
+ "hyprutils": "hyprutils",
+ "hyprwayland-scanner": "hyprwayland-scanner",
+ "nixpkgs": "nixpkgs",
+ "pre-commit-hooks": "pre-commit-hooks",
+ "systems": "systems",
+ "xdph": "xdph"
+ },
+ "locked": {
+ "lastModified": 1734907157,
+ "narHash": "sha256-sF3Wot4jIemoSo0YigdHyoR5JMaXgKja+mPJGoXXk/k=",
+ "owner": "hyprwm",
+ "repo": "hyprland",
+ "rev": "5f7ad767dbf0bac9ddd6bf6c825fb9ed7921308a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland",
+ "type": "github"
+ }
+ },
+ "hyprland-plugins": {
+ "inputs": {
+ "hyprland": [
+ "hyprland"
+ ],
+ "nixpkgs": [
+ "hyprland-plugins",
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland-plugins",
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1734887159,
+ "narHash": "sha256-boPq+l4/D/Q+MvDqAI79fCdp/3Dit57YBuPbXa1cjW0=",
+ "owner": "hyprwm",
+ "repo": "hyprland-plugins",
+ "rev": "859b9cd371b4e1bf1043cedc8ab6c514e13ab358",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-plugins",
+ "type": "github"
+ }
+ },
+ "hyprland-protocols": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1728345020,
+ "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=",
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "rev": "a7c183800e74f337753de186522b9017a07a8cee",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "type": "github"
+ }
+ },
+ "hyprland-qtutils": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1734906472,
+ "narHash": "sha256-pWPRv/GA/X/iAwoE6gMNUqn/ZeJX1IeLPRpZI0tTPK0=",
+ "owner": "hyprwm",
+ "repo": "hyprland-qtutils",
+ "rev": "c77109d7e1ddbcdb87cafd32ce411f76328ae152",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-qtutils",
+ "type": "github"
+ }
+ },
+ "hyprlang": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1734906259,
+ "narHash": "sha256-P79t/7HbACO4/PuJBroGpTptvCWJtXTv+gWsF+sM6MI=",
+ "owner": "hyprwm",
+ "repo": "hyprlang",
+ "rev": "0404833ea18d543df44df935ebf1b497310eb046",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprlang",
+ "type": "github"
+ }
+ },
+ "hyprutils": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1734796073,
+ "narHash": "sha256-TnuKsa8OHrSJEmHm3TLGOWbPNA1gRjmZLsRzKrCqOsg=",
+ "owner": "hyprwm",
+ "repo": "hyprutils",
+ "rev": "c3331116ebd0b71df5ae8c6efe9a7f94148b03bf",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprutils",
+ "type": "github"
+ }
+ },
+ "hyprwayland-scanner": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1734793513,
+ "narHash": "sha256-rrrHcXapXJvGFqX+L/Bb0182L25jofAZ0fm1FInvrTQ=",
+ "owner": "hyprwm",
+ "repo": "hyprwayland-scanner",
+ "rev": "4d7367b6eee87397e2dbca2e78078dd0a4ef4c61",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprwayland-scanner",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1734649271,
+ "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-stable": {
+ "locked": {
+ "lastModified": 1730741070,
+ "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
- "lastModified": 1734119587,
- "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
+ "lastModified": 1734649271,
+ "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
+ "rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507",
"type": "github"
},
"original": {
@@ -32,11 +369,109 @@
"type": "github"
}
},
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1734875076,
+ "narHash": "sha256-Pzyb+YNG5u3zP79zoi8HXYMs15Q5dfjDgwCdUI5B0nY=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "1807c2b91223227ad5599d7067a61665c52d1295",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-24.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "pre-commit-hooks": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "gitignore": "gitignore",
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "nixpkgs-stable": "nixpkgs-stable"
+ },
+ "locked": {
+ "lastModified": 1734797603,
+ "narHash": "sha256-ulZN7ps8nBV31SE+dwkDvKIzvN6hroRY8sYOT0w+E28=",
+ "owner": "cachix",
+ "repo": "git-hooks.nix",
+ "rev": "f0f0dc4920a903c3e08f5bdb9246bb572fcae498",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "git-hooks.nix",
+ "type": "github"
+ }
+ },
"root": {
"inputs": {
- "nixpkgs": "nixpkgs",
+ "hyprland": "hyprland",
+ "hyprland-plugins": "hyprland-plugins",
+ "nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable"
}
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1689347949,
+ "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "type": "github"
+ }
+ },
+ "xdph": {
+ "inputs": {
+ "hyprland-protocols": [
+ "hyprland",
+ "hyprland-protocols"
+ ],
+ "hyprlang": [
+ "hyprland",
+ "hyprlang"
+ ],
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "hyprwayland-scanner": [
+ "hyprland",
+ "hyprwayland-scanner"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1734907020,
+ "narHash": "sha256-p6HxwpRKVl1KIiY5xrJdjcEeK3pbmc///UOyV6QER+w=",
+ "owner": "hyprwm",
+ "repo": "xdg-desktop-portal-hyprland",
+ "rev": "d7f18dda5e511749fa1511185db3536208fb1a63",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "xdg-desktop-portal-hyprland",
+ "type": "github"
+ }
}
},
"root": "root",
diff --git a/config/nixos/flake.nix b/config/nixos/flake.nix
index d8b5aaa..edab2cb 100644
--- a/config/nixos/flake.nix
+++ b/config/nixos/flake.nix
@@ -5,6 +5,11 @@
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
+ hyprland.url = "github:hyprwm/hyprland";
+ hyprland-plugins = {
+ url = "github:hyprwm/hyprland-plugins";
+ inputs.hyprland.follows = "hyprland";
+ };
};
outputs =
@@ -12,6 +17,8 @@
self,
nixpkgs,
nixpkgs-unstable,
+ hyprland,
+ hyprland-plugins,
# nixos-cosmic,
}:
let
@@ -35,16 +42,9 @@
./hardware/mennos-laptop.nix
./common/workstation.nix
./configuration.nix
- # nixos-cosmic.nixosModules.default
- # {
- # nix.settings = {
- # substituters = [ "https://cosmic.cachix.org/" ];
- # trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
- # };
- # }
];
specialArgs = {
- inherit pkgs-unstable;
+ inherit pkgs-unstable hyprland hyprland-plugins;
isWorkstation = true;
isServer = false;
};
diff --git a/config/nixos/packages/workstation/default.nix b/config/nixos/packages/workstation/default.nix
index c093a9d..b6dd28e 100644
--- a/config/nixos/packages/workstation/default.nix
+++ b/config/nixos/packages/workstation/default.nix
@@ -5,5 +5,6 @@
./1password.nix
./flatpak.nix
./steam.nix
+ ./hyprland.nix
];
}
diff --git a/config/nixos/packages/workstation/hyprland.nix b/config/nixos/packages/workstation/hyprland.nix
new file mode 100644
index 0000000..e8df15f
--- /dev/null
+++ b/config/nixos/packages/workstation/hyprland.nix
@@ -0,0 +1,55 @@
+{
+ pkgs,
+ hyprland,
+ hyprland-plugins,
+ ...
+}:
+{
+ environment.sessionVariables.NIXOS_OZONE_WL = "1";
+ environment.variables = {
+ TERM = "xterm-256color";
+ };
+
+ security.pam.services.login.enableGnomeKeyring = true;
+ services.gnome.gnome-keyring.enable = true;
+
+ programs.hyprland = {
+ enable = true;
+ xwayland.enable = true;
+ package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
+ };
+
+ environment.systemPackages = with pkgs; [
+ # Authentification agent
+ polkit_gnome
+ (writeShellScriptBin "polkit-agent" ''
+ exec ${polkit_gnome}/libexec/polkit-gnome-authentication-agent-1
+ '')
+
+ # Lock screen
+ hyprlock
+
+ # Lock screen idle timer
+ hypridle
+
+ # Notifications
+ swaynotificationcenter
+
+ # Hyprland plugins
+ hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars
+
+ # Hyprpaper for wallpapers
+ hyprpaper
+
+ # Playerctl for media keys
+ playerctl
+
+ # network manager applet
+ networkmanagerapplet
+
+ # blueman applet
+ blueman
+ ];
+
+ security.polkit.enable = true;
+}