bunch of stuff with hyprland config, still not great

This commit is contained in:
RingOfStorms (Joshua Bell) 2025-08-23 12:36:38 -05:00
parent 1d051e2b38
commit e51fb08bfc
11 changed files with 632 additions and 217 deletions

View file

@ -60,11 +60,25 @@ with lib;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
wl-clipboard wl-clipboard
wl-clip-persist wl-clip-persist
wofi wofi # application launcher
nemo nemo # file manager
feh feh # image viewer
networkmanager # network management
upower # power management
brightnessctl # screen/keyboard brightness control
wireplumber # media session manager
libgtop # system monitor library
bluez # Bluetooth support
bluez-tools # Bluetooth tools
blueman # Bluetooth manager
power-profiles-daemon # power profiles
grimblast # screenshot tool
wf-recorder # screen recording tool
btop # system monitor
]; ];
services.blueman.enable = config.hardware.bluetooth.enable;
programs.hyprland = { programs.hyprland = {
enable = true; enable = true;
xwayland.enable = true; xwayland.enable = true;

View file

@ -3,11 +3,10 @@
imports = [ imports = [
./theme.nix ./theme.nix
./hyprland.nix ./hyprland.nix
./hyprpanel.nix ./waybar.nix
./hyprpolkitagent.nix ./hyprpolkitagent.nix
# ./quickshell.nix # TODO replace hyprpanel with custom quickshell...
./wofi.nix ./wofi.nix
# ./swaync.nix # notifications, hyprpanel has notifications but I want to replace hyprpanel sometime so keeping this here as reference ./swaync.nix
./swaylock.nix ./swaylock.nix
]; ];
} }

View file

@ -32,10 +32,10 @@ in
# Default monitor configuration # Default monitor configuration
monitor = "monitor = , preferred, auto, 1"; monitor = "monitor = , preferred, auto, 1";
# Add window rules for hyprpanel stability
windowrulev2 = [ windowrulev2 = [
"stayfocused, class:^(hyprpanel)$" "float, class:.*blueman-manager.*"
"pin, class:^(hyprpanel)$" "size 700 500, class:.*blueman-manager.*"
"center, class:.*blueman-manager.*"
]; ];
# Input configuration # Input configuration
@ -105,10 +105,15 @@ in
# Switch workspaces with mainMod + [0-9] # Switch workspaces with mainMod + [0-9]
"$mainMod, 1, workspace, 1" "$mainMod, 1, workspace, 1"
"$mainMod, n, workspace, 1"
"$mainMod, 2, workspace, 2" "$mainMod, 2, workspace, 2"
"$mainMod, m, workspace, 2"
"$mainMod, 3, workspace, 3" "$mainMod, 3, workspace, 3"
"$mainMod, comma, workspace, 3"
"$mainMod, 4, workspace, 4" "$mainMod, 4, workspace, 4"
"$mainMod, period, workspace, 4"
"$mainMod, 5, workspace, 5" "$mainMod, 5, workspace, 5"
"$mainMod, slash, workspace, 5"
"$mainMod, 6, workspace, 6" "$mainMod, 6, workspace, 6"
"$mainMod, 7, workspace, 7" "$mainMod, 7, workspace, 7"
"$mainMod, 8, workspace, 8" "$mainMod, 8, workspace, 8"
@ -120,8 +125,21 @@ in
"$mainMod SHIFT, l, movewindow, r" "$mainMod SHIFT, l, movewindow, r"
"$mainMod SHIFT, k, movewindow, u" "$mainMod SHIFT, k, movewindow, u"
"$mainMod SHIFT, j, movewindow, d" "$mainMod SHIFT, j, movewindow, d"
"$mainMod SHIFT, n, movetoworkspace, m+1" "$mainMod SHIFT, 1, movetoworkspacesilent, 1"
"$mainMod SHIFT, p, movetoworkspace, m-1" "$mainMod SHIFT, n, movetoworkspacesilent, 1"
"$mainMod SHIFT, 2, movetoworkspacesilent, 2"
"$mainMod SHIFT, m, movetoworkspacesilent, 2"
"$mainMod SHIFT, 3, movetoworkspacesilent, 3"
"$mainMod SHIFT, comma, movetoworkspacesilent, 3"
"$mainMod SHIFT, 4, movetoworkspacesilent, 4"
"$mainMod SHIFT, period, movetoworkspacesilent, 4"
"$mainMod SHIFT, 5, movetoworkspacesilent, 5"
"$mainMod SHIFT, slash, movetoworkspacesilent, 5"
"$mainMod SHIFT, 6, movetoworkspacesilent, 6"
"$mainMod SHIFT, 7, movetoworkspacesilent, 7"
"$mainMod SHIFT, 8, movetoworkspacesilent, 8"
"$mainMod SHIFT, 9, movetoworkspacesilent, 9"
"$mainMod SHIFT, 0, movetoworkspacesilent, 10"
# Screenshots # Screenshots
", Print, exec, grimblast copy area" ", Print, exec, grimblast copy area"
@ -135,8 +153,8 @@ in
binde = [ binde = [
# Move between workspaces # Move between workspaces
"$mainMod, n, workspace, r+1" # "$mainMod, n, workspace, r+1"
"$mainMod, p, workspace, r-1" # "$mainMod, p, workspace, r-1"
# Resize windows # Resize windows
"$mainMod CTRL, h, resizeactive, -40 0" "$mainMod CTRL, h, resizeactive, -40 0"
@ -150,6 +168,7 @@ in
"$mainMod, mouse:272, movewindow" "$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow" "$mainMod, mouse:273, resizewindow"
]; ];
} cfg.extraOptions; } cfg.extraOptions;
}; };
} }

View file

@ -1,159 +0,0 @@
{
pkgs,
lib,
...
}:
{
home.packages = with pkgs; [
# aylurs-gtk-shell-git
wireplumber
libgtop
bluez
bluez-tools
networkmanager
dart-sass
wl-clipboard
upower
gvfs
gtksourceview3
libchamplain_libsoup3 # libsoup3
## Used for Tracking GPU Usage in your Dashboard (NVidia only)
# python
# python-gpustat
## To control screen/keyboard brightness
brightnessctl
## Only if a pywal hook from wallpaper changes applied through settings is desired
# pywal
## To check for pacman updates in the default script used in the updates module
# pacman-contrib
## To switch between power profiles in the battery module
power-profiles-daemon
## To take snapshots with the default snapshot shortcut in the dashboard
grimblast
## To record screen through the dashboard record shortcut
wf-recorder
## To enable the eyedropper color picker with the default snapshot shortcut in the dashboard
hyprpicker
## To enable hyprland's very own blue light filter
hyprsunset
## To click resource/stat bars in the dashboard and open btop
btop
## To enable matugen based color theming
# matugen
## To enable matugen based color theming and setting wallpapers
# swww
];
# uncomment this to make it possible to use the normal config agent using
# > hyprpanel toggleWindow settings-dialog
# xdg.configFile.hyprpanel.target = lib.mkForce "hyprpanel/config.generated.json";
programs.hyprpanel = {
enable = true;
settings = {
bar.layouts = {
"DP-1" = {
left = [
# "dashboard"
"workspaces"
"media"
"volume"
];
middle = [
"notifications"
"clock"
"cputemp"
"cpu"
"ram"
"storage"
];
right = [
"netstat"
"network"
"bluetooth"
# "battery"
# "updates"
"kbinput"
"power"
];
};
"*" = {
left = [
"workspaces"
];
middle = [
"clock"
];
right = [
"systray"
"cava"
];
};
};
bar.workspaces = {
# workspaces = 10;
show_icons = false;
show_numbered = false;
showWsIcons = true;
showApplicationIcons = false;
workspaceMask = true;
numbered_active_indicator = "highlight";
workspaceIconMap = {
"1" = ""; # "1" いち | ひとつ
"2" = ""; # "2" に | ふたつ
"3" = ""; # "3" さん | みっつ
"4" = ""; # "4" し | よん
"5" = ""; # "5" ご | いつつ
"6" = ""; # "6" ろく | むっつ
"7" = ""; # "7" しち | ななつ
"8" = ""; # "8" はち | やっつ
"9" = ""; # "9" きゅう | ここのつ
"10" = ""; # "10" じゅう | とお
"11" = ""; # "11" じゅういち | じゅうひとつ
"12" = ""; # "12" じゅうに | じゅうふたつ
"13" = ""; # "13" じゅうさん | じゅうみっつ
"14" = ""; # "14" じゅうし | じゅうよん
"15" = ""; # "15" じゅうご | じゅういつつ
"16" = ""; # "16" じゅうろく | じゅうむっつ
"17" = ""; # "17" じゅうしち | じゅうななつ
"18" = ""; # "18" じゅうはち | じゅうやっつ
"19" = ""; # "19" じゅうきゅう | じゅうここのつ
"20" = ""; # "20" にじゅう | にじっつ
};
};
notifications.ignore = [ "spotify" ];
customModules = {
cava = {
showActiveOnly = true;
showIcon = false;
icon = "";
};
};
theme = {
matugen = false;
name = "tokyo-night-vivid";
font = {
name = "JetBrainsMonoNL Nerd Font Regular";
size = "12px";
};
bar = {
transparent = true;
floating = true;
outer_spacing = "0px";
margin_bottom = "0px";
margin_top = "0px";
margin_sides = "0px";
};
};
wallpaper = {
enable = false;
image = "";
};
};
};
}

View file

@ -4,5 +4,263 @@
{ {
services.swaync = { services.swaync = {
enable = true; enable = true;
settings = {
ignore = [
"com.spotify.Client"
];
positionX = "center";
positionY = "top";
layer = "overlay";
control-center-layer = "top";
layer-shell = true;
cssPriority = "application";
control-center-margin-top = 0;
control-center-margin-bottom = 0;
control-center-margin-right = 0;
control-center-margin-left = 0;
notification-2fa-action = true;
notification-inline-replies = false;
notification-icon-size = 64;
notification-body-image-height = 100;
notification-body-image-width = 200;
timeout = 10;
timeout-low = 5;
timeout-critical = 0;
control-center-width = 500;
control-center-height = 600;
notification-window-width = 500;
keyboard-shortcuts = true;
image-visibility = "when-available";
transition-time = 200;
hide-on-clear = false;
hide-on-action = true;
script-fail-notify = true;
widgets = [
"inhibitors"
"title"
"dnd"
"volume"
"backlight"
"mpris"
"buttons-grid#quick"
"notifications"
];
# Widget configurations
widget-config = {
inhibitors = {
text = "Inhibitors";
button-text = "Clear All";
clear-all-button = true;
};
title = {
text = "Notifications";
clear-all-button = true;
button-text = "Clear All";
};
dnd.text = "Do Not Disturb";
mpris = {
image-size = 96;
image-radius = 12;
};
volume = {
label = "󰕾";
show-per-app = true;
};
backlight = {
label = "󰃟";
device = "intel_backlight";
};
"buttons-grid#quick" = {
columns = 4; # adjust: 3/4/5
icon-size = 20; # tweak to taste
actions = [
# Power
{
label = "󰐥";
tooltip = "Shutdown";
command = "systemctl poweroff";
}
{
label = "󰜉";
tooltip = "Reboot";
command = "systemctl reboot";
}
{
label = "󰍃";
tooltip = "Logout";
command = "hyprctl dispatch exit";
}
{
label = "󰤄";
tooltip = "Suspend";
command = "systemctl suspend";
}
# Network (requires NetworkManager/nmcli)
{
label = "󰖪";
tooltip = "Toggle WiFi";
command = "nmcli radio wifi toggle";
}
{
label = "󰖩";
tooltip = "WiFi Settings";
command = "nm-connection-editor";
}
# Bluetooth (requires bluez/bluetoothctl, blueman optional)
{
label = "󰂲";
tooltip = "Toggle Bluetooth";
command = "bluetoothctl power toggle";
}
{
label = "󰂯";
tooltip = "Bluetooth Settings";
command = "blueman-manager";
}
];
};
};
};
# Custom CSS for the control center
style = ''
.control-center {
background: #1a1b26;
border: 2px solid #7dcae4;
border-radius: 12px;
}
.control-center-list {
background: transparent;
}
.control-center .notification-row:focus,
.control-center .notification-row:hover {
opacity: 1;
background: #24283b;
}
.notification {
border-radius: 8px;
margin: 6px 12px;
box-shadow: 0 0 0 1px rgba(125, 196, 228, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3);
padding: 0;
}
/* Widget styling */
.widget-title {
margin: 8px;
font-size: 1.5rem;
color: #c0caf5;
}
.widget-dnd {
margin: 8px;
font-size: 1.1rem;
color: #c0caf5;
}
.widget-dnd > switch {
font-size: initial;
border-radius: 8px;
background: #414868;
border: 1px solid #7dcae4;
}
.widget-dnd > switch:checked {
background: #7dcae4;
}
.widget-mpris {
color: #c0caf5;
background: #24283b;
padding: 8px;
margin: 8px;
border-radius: 8px;
}
.widget-mpris-player {
padding: 8px;
margin: 8px;
}
.widget-mpris-title {
font-weight: bold;
font-size: 1.25rem;
}
.widget-mpris-subtitle {
font-size: 1.1rem;
color: #9ece6a;
}
.widget-volume {
background: #24283b;
padding: 8px;
margin: 8px;
border-radius: 8px;
color: #c0caf5;
}
.widget-backlight {
background: #24283b;
padding: 8px;
margin: 8px;
border-radius: 8px;
color: #c0caf5;
}
.widget-menubar {
background: #24283b;
padding: 8px;
margin: 8px;
border-radius: 8px;
color: #c0caf5;
}
.widget-menubar .menu-item button {
background: #1f2335;
color: #c0caf5;
border-radius: 8px;
padding: 6px 10px;
margin: 4px;
border: 1px solid #2e3440;
font-family: "JetBrainsMonoNL Nerd Font";
}
.widget-menubar .menu-item button:hover {
background: #414868;
border-color: #7dcae4;
}
.topbar-buttons button {
border: none;
background: transparent;
color: #c0caf5;
font-size: 1.1rem;
border-radius: 8px;
margin: 0 4px;
padding: 8px;
}
.topbar-buttons button:hover {
background: #414868;
}
.topbar-buttons button:active {
background: #7dcae4;
color: #1a1b26;
}
'';
}; };
} }

View file

@ -0,0 +1,264 @@
{
...
}:
{
programs.waybar = {
enable = true;
systemd.enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 30;
spacing = 6;
margin-top = 0;
margin-bottom = 0;
margin-left = 10;
margin-right = 10;
modules-left = [
"hyprland/workspaces"
];
modules-center = [
"clock"
"temperature"
"custom/notifications"
"cpu"
"memory"
"disk"
];
modules-right = [
"pulseaudio"
"network"
"bluetooth"
"hyprland/language"
"custom/power"
];
# Workspaces configuration
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
"7" = "";
"8" = "";
"9" = "";
"10" = "";
"11" = "";
"12" = "";
"13" = "";
"14" = "";
"15" = "";
"16" = "";
"17" = "";
"18" = "";
"19" = "";
"20" = "";
};
show-special = false;
};
pulseaudio = {
format = "{icon} {volume}%";
format-bluetooth = "󰂰 {volume}%";
format-bluetooth-muted = "󰂲 ";
format-muted = "󰖁 ";
format-source = "󰍬 {volume}%";
format-source-muted = "󰍭 ";
format-icons = {
headphone = "󰋋";
hands-free = "󰂑";
headset = "󰂑";
phone = "󰏲";
portable = "󰦧";
car = "󰄋";
default = [
"󰕿"
"󰖀"
"󰕾"
];
};
};
"custom/notifications" = {
format = "{icon} {}";
format-icons = {
notification = "";
none = "";
dnd-notification = "󰂛";
dnd-none = "󰂛";
inhibited-notification = "";
inhibited-none = "";
dnd-inhibited-notification = "󰂛";
dnd-inhibited-none = "󰂛";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
tooltip = false;
};
# Clock
clock.format = "{:%Y-%m-%d} {:%H:%M}";
temperature = {
thermal-zone = 2;
hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input";
critical-threshold = 80;
format-critical = "󰔏 {temperatureC}°C";
format = "󰔏 {temperatureC}°C";
};
cpu = {
format = "󰻠 {usage}%";
tooltip = false;
on-click = "btop";
};
memory = {
format = "󰍛 {}%";
on-click = "btop";
};
disk = {
interval = 30;
format = "󰋊 {percentage_used}%";
path = "/";
on-click = "btop";
};
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}";
};
bluetooth = {
format = "󰂯 {status}";
format-connected = "󰂱 {device_alias}";
format-connected-battery = "󰂱 {device_alias} {device_battery_percentage}%";
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
on-click = "blueman-manager";
};
# Keyboard input (language)
"hyprland/language" = {
format = "{}";
format-en = "EN";
format-ja = "JP";
};
"custom/power" = {
format = "";
tooltip = false;
on-click = "wlogout";
};
};
};
style = ''
* {
font-family: "JetBrainsMonoNL Nerd Font";
font-size: 12px;
border: none;
border-radius: 0;
min-height: 0;
}
window#waybar {
background: transparent;
border-radius: 10px;
margin: 0px;
}
.modules-left,
.modules-center,
.modules-right {
background: rgba(26, 27, 38, 0.8);
border-radius: 10px;
margin: 4px;
padding: 0 10px;
}
#workspaces {
padding: 0 5px;
}
#workspaces button {
padding: 0 8px;
background: transparent;
color: #c0caf5;
border-radius: 5px;
margin: 2px;
}
#workspaces button:hover {
background: rgba(125, 196, 228, 0.2);
color: #7dcae4;
}
#workspaces button.active {
background: #7dcae4;
color: #1a1b26;
}
#pulseaudio,
#custom-notifications,
#clock,
#temperature,
#cpu,
#memory,
#disk,
#network,
#bluetooth,
#language,
#custom-power {
padding: 0 8px;
color: #c0caf5;
margin: 2px;
}
#temperature.critical {
color: #f7768e;
}
#custom-power {
color: #f7768e;
padding: 0 10px;
}
#custom-power:hover {
background: rgba(247, 118, 142, 0.2);
border-radius: 5px;
}
#network.disconnected {
color: #f7768e;
}
#bluetooth.disabled {
color: #565f89;
}
#pulseaudio.muted {
color: #565f89;
}
'';
};
}

View file

@ -49,7 +49,7 @@ let
trustedKeys = authorityKey ++ gpdPocket3 ++ lio ++ joe ++ oren ++ h001 ++ h002 ++ h003; trustedKeys = authorityKey ++ gpdPocket3 ++ lio ++ joe ++ oren ++ h001 ++ h002 ++ h003;
o001 = [ o001 = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFrwvahx1x4rue28QHCzyADQndOeTESIv80f7d00NXWT" # root "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFrwvahx1x4rue28QHCzyADQndOeTESIv80f7d00NXWT root@o001"
]; ];
in in
{ {

View file

@ -13,7 +13,6 @@ in
options = { }; options = { };
imports = [ imports = [
common.nixosModules.containers.librechat
common.nixosModules.containers.obsidian_sync common.nixosModules.containers.obsidian_sync
]; ];

47
hosts/lio/flake.lock generated
View file

@ -29,22 +29,17 @@
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2",
"ragenix": "ragenix" "ragenix": "ragenix"
}, },
"locked": { "locked": {
"lastModified": 1755840659, "path": "../../common",
"narHash": "sha256-h/qwTgidh4lPLj018fRllg1VtoRXVEpC+L6RFomWesw=", "type": "path"
"ref": "refs/heads/master",
"rev": "c91d9dc23c4abf3567b653f383578621a77be0ab",
"revCount": 614,
"type": "git",
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
}, },
"original": { "original": {
"type": "git", "path": "../../common",
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles" "type": "path"
} },
"parent": []
}, },
"crane": { "crane": {
"locked": { "locked": {
@ -194,22 +189,6 @@
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": {
"lastModified": 1753694789,
"narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "dc9637876d0dcc8c9e5e22986b857632effeb727",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1741379970, "lastModified": 1741379970,
"narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=",
@ -225,7 +204,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1755471983, "lastModified": 1755471983,
"narHash": "sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg=", "narHash": "sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg=",
@ -241,7 +220,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1755648324, "lastModified": 1755648324,
"narHash": "sha256-+2TxwJEXWXGC7JBsRGUHtmQ66lRGPcDI2kFKTTU5e2s=", "narHash": "sha256-+2TxwJEXWXGC7JBsRGUHtmQ66lRGPcDI2kFKTTU5e2s=",
@ -256,7 +235,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_6": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1755186698, "lastModified": 1755186698,
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
@ -1178,7 +1157,7 @@
"agenix": "agenix", "agenix": "agenix",
"crane": "crane", "crane": "crane",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
@ -1198,7 +1177,7 @@
"root": { "root": {
"inputs": { "inputs": {
"common": "common", "common": "common",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_3",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"ros_neovim": "ros_neovim", "ros_neovim": "ros_neovim",
"zaphkiel": "zaphkiel" "zaphkiel": "zaphkiel"
@ -1206,7 +1185,7 @@
}, },
"ros_neovim": { "ros_neovim": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_4",
"nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim", "nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim",
"nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim", "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim",
"nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring", "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring",
@ -1368,7 +1347,7 @@
}, },
"zaphkiel": { "zaphkiel": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_6", "nixpkgs": "nixpkgs_5",
"quickshell": "quickshell", "quickshell": "quickshell",
"systems": "systems_3" "systems": "systems_3"
}, },

View file

@ -4,8 +4,8 @@
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# Use relative to get current version for testing # Use relative to get current version for testing
# common.url = "path:../../common"; common.url = "path:../../common";
common.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles"; # common.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles";
ros_neovim.url = "git+https://git.joshuabell.xyz/ringofstorms/nvim"; ros_neovim.url = "git+https://git.joshuabell.xyz/ringofstorms/nvim";
@ -90,12 +90,25 @@
}; };
desktopEnvironment.hyprland = { desktopEnvironment.hyprland = {
enable = true; enable = true;
extraOptions = { extraOptions =
let
main = "desc:ASUSTek COMPUTER INC ASUS PG43U 0x01010101";
secondary = "desc:Samsung Electric Company C34J79x HTRM900776";
in
{
# hyprctl monitors all # hyprctl monitors all
monitor = [ monitor = [
"desc:ASUSTek COMPUTER INC ASUS PG43U 0x01010101,3840x2160@97.98,0x0,1,transform,0" "${main},3840x2160@97.98,0x0,1,transform,0"
"desc:Samsung Electric Company C34J79x HTRM900776,3440x1440@99.98,-1440x-640,1,transform,1" "${secondary},3440x1440@99.98,-1440x-640,1,transform,1"
]; ];
# Pin workspaces 1-6 to main monitor and rest on other monitor
workspace =
let
inherit (builtins) map toString;
inherit (lib) range;
mkWs = monitor: i: "${toString i},monitor:${monitor}";
in
(map (mkWs main) (range 1 6)) ++ (map (mkWs secondary) (range 7 10));
}; };
}; };
programs = { programs = {

View file

@ -69,6 +69,35 @@
enableACME = true; enableACME = true;
forceSSL = true; forceSSL = true;
locations = { locations = {
"~ ^/ttyd-t(.*)$" = {
proxyPass = "http://100.64.0.8:9999";
extraConfig = ''
rewrite ^/ttyd-tempus(.*) /$1 break;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 1d; # dont kill connection after 60s of inactivity
'';
};
# "~ ^/tunnel_tempus/(?<port>[0-9]+)(.*)$" = {
# extraConfig = ''
# set $target_port $port;
# rewrite ^/tunnel_tempus/(?<port>[0-9]+)(.*)$ /$2 break;
# proxy_pass http://100.64.0.8:$target_port;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# proxy_set_header Host $host;
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Forwarded-Port $server_port;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_read_timeout 1d; # dont kill connection after 60s of inactivity
# '';
# };
"/wasabi" = { "/wasabi" = {
proxyPass = "http://192.168.100.11/"; proxyPass = "http://192.168.100.11/";
extraConfig = '' extraConfig = ''