feat: added glance

This commit is contained in:
Nick 2025-05-24 02:45:00 -05:00
parent 93efd494ca
commit a0de2dba92
15 changed files with 268 additions and 64 deletions

View file

@ -0,0 +1,34 @@
{ instancesFunctions }:
let
inherit (instancesFunctions)
domain0
servicePath
sslPath
sopsPath
;
glanceLabel = "Glance";
glanceName = "glance";
glanceSubdomain = "dashboard";
in
{
label = glanceLabel;
name = glanceName;
email = {
address0 = "noreply@${domain0}";
};
sops = {
path0 = "${sopsPath}/${glanceName}";
};
subdomain = glanceSubdomain;
paths = {
path0 = "${servicePath}/${glanceLabel}";
};
ports = {
port0 = 3434;
};
ssl = {
cert = "${sslPath}/${glanceSubdomain}.${domain0}/fullchain.pem";
key = "${sslPath}/${glanceSubdomain}.${domain0}/key.pem";
};
}

View file

@ -71,6 +71,7 @@ in
theming theming
printManager printManager
finamp finamp
lingot
; ;
}; };
}; };

View file

@ -1,5 +1,5 @@
{ {
"Reddit" = { "reddit" = {
definedAliases = [ definedAliases = [
"@re" "@re"
]; ];
@ -8,7 +8,7 @@
{ template = "https://www.reddit.com/search/?q={searchTerms}"; } { template = "https://www.reddit.com/search/?q={searchTerms}"; }
]; ];
}; };
"YouTube" = { "youtube" = {
definedAliases = [ definedAliases = [
"@yo" "@yo"
]; ];

View file

@ -0,0 +1,12 @@
{
pkgs,
...
}:
{
home.packages = builtins.attrValues {
inherit (pkgs)
lingot
tonelib-gfx
;
};
}

View file

@ -21,17 +21,17 @@ let
"Z, exec, obsidian" "Z, exec, obsidian"
"H, exec, feishin" "H, exec, feishin"
"G, exec, scrcpy" "G, exec, scrcpy"
"L, exec, thunar" "R, exec, thunar"
"S, exec, steam" "S, exec, steam"
"R, exec, ghostty -e zellij a dotfiles" "E, exec, ghostty -e y"
"N, exec, signal-desktop" "N, exec, signal-desktop"
"T, exec, zeditor" "T, exec, zeditor"
"B, exec, floorp" "B, exec, floorp"
"X, exec, freetube" "Y, exec, freetube"
"V, exec, vesktop" "V, exec, vesktop"
"M, exec, element-desktop" "M, exec, element-desktop"
"D, exec, ghostty" "D, exec, ghostty"
"P, exec, bitwarden" "W, exec, bitwarden"
# Workspaces # Workspaces
"1, workspace, 1" "1, workspace, 1"
"2, workspace, 2" "2, workspace, 2"
@ -39,55 +39,40 @@ let
"4, workspace, 4" "4, workspace, 4"
"5, workspace, 5" "5, workspace, 5"
# Windows # Windows
"Tab, killactive" "X, killactive"
"F, togglefloating"
"Backspace, layoutmsg, togglesplit"
"Tab, fullscreen, 0"
# Window Focus # Window Focus
"C, movefocus, l" "Left, movefocus, l"
"A, movefocus, u" "Up, movefocus, u"
"E, movefocus, d" "Down, movefocus, d"
"I, movefocus, r" "Right, movefocus, r"
"F, splitratio, 0.33" "bracketleft, splitratio, -0.33"
"O, splitratio, -0.33" "bracketright, splitratio, 0.33"
# Audio # Audio
"Page_Up, exec, playerctl next" "Page_Up, exec, playerctl next"
"Page_Down, exec, playerctl previous" "Page_Down, exec, playerctl previous"
"Home, exec, playerctl play-pause" "Home, exec, playerctl play-pause"
"Space, exec, fuzzel" "Space, exec, fuzzel"
];
superShiftBinds = builtins.map (x: "SUPER SHIFT, " + x) [
# Super+shift binds
# Quick Action
"T, exec, ghostty"
"S, exec, flameshot gui"
"period, exec, emote"
"Tab, fullscreen, 0"
"Backspace, layoutmsg, togglesplit"
"P, pin, enable"
"F, togglefloating"
# "Print, exec, grim -g \"$(slurp)\""
# Utility # Utility
"End, exec, shutdown now" "End, exec, shutdown now"
"Insert, exec, systemctl reboot" "Insert, exec, systemctl reboot"
"Home, exec, swaylock" "Home, exec, swaylock"
]; ];
superShiftBinds = builtins.map (x: "SUPER SHIFT, " + x) [
# Super+shift binds
"S, exec, flameshot gui"
"period, exec, emote"
# "Print, exec, grim -g \"$(slurp)\""
];
superCtrlBinds = builtins.map (x: "SUPER CTRL, " + x) [ superCtrlBinds = builtins.map (x: "SUPER CTRL, " + x) [
# Super+shift binds # Super+shift binds
]; ];
altBinds = builtins.map (x: "CTRL ALT, " + x) [ altBinds = builtins.map (x: "CTRL ALT, " + x) [
# Alt binds # Alt binds
"1, movetoworkspacesilent, 1"
"2, movetoworkspacesilent, 2"
"3, movetoworkspacesilent, 3"
"4, movetoworkspacesilent, 4"
"5, movetoworkspacesilent, 5"
# Window Move
"C, movewindow, l"
"A, movewindow, u"
"E, movewindow, d"
"I, movewindow, r"
]; ];
shiftBinds = builtins.map (x: "SHIFT, " + x) [ shiftBinds = builtins.map (x: "SHIFT, " + x) [
@ -100,7 +85,17 @@ let
ctrlShiftBinds = builtins.map (x: "CTRL SHIFT, " + x) [ ctrlShiftBinds = builtins.map (x: "CTRL SHIFT, " + x) [
# Ctrl+shift binds # Ctrl+shift binds
# "End, exec, shutdown now" # Window
"1, movetoworkspacesilent, 1"
"2, movetoworkspacesilent, 2"
"3, movetoworkspacesilent, 3"
"4, movetoworkspacesilent, 4"
"5, movetoworkspacesilent, 5"
# Window Move
"Left, movewindow, l"
"Up, movewindow, u"
"Down, movewindow, d"
"Right, movewindow, r"
]; ];
functionBinds = builtins.map (x: " , " + x) [ functionBinds = builtins.map (x: " , " + x) [

View file

@ -1,7 +1,7 @@
let let
blueman = "(.blueman-manager-wrapped)"; blueman = "(.blueman-manager-wrapped)";
calculator = "(org.gnome.Calculator)"; calculator = "(org.gnome.Calculator)";
easyeffects = "(com.github.wwmm.easyeffects)"; pavucontrol = "(org.pulseaudio.pavucontrol)";
floorp = "(floorp)"; floorp = "(floorp)";
nomacs = "(org.nomacs.ImageLounge)"; nomacs = "(org.nomacs.ImageLounge)";
mpv = "(mpv)"; mpv = "(mpv)";
@ -27,7 +27,6 @@ let
maxsizeWindows = [ maxsizeWindows = [
"maxsize 720 400, class:^${blueman}$" "maxsize 720 400, class:^${blueman}$"
"maxsize 360 500, class:^${calculator}$" "maxsize 360 500, class:^${calculator}$"
"maxsize 720 400, class:^${easyeffects}$"
# "maxsize 720 400, class:^${scrcpy}$" # "maxsize 720 400, class:^${scrcpy}$"
"maxsize 720 400, class:^${mpv}$" "maxsize 720 400, class:^${mpv}$"
"maxsize 720 400, class:^${vlc}$" "maxsize 720 400, class:^${vlc}$"
@ -40,13 +39,14 @@ let
"maxsize 1280 720, title:^${battle}$" "maxsize 1280 720, title:^${battle}$"
"minsize 1280 720, title:^${battle}$" "minsize 1280 720, title:^${battle}$"
"maxsize 1280 720, title:^${upload}$" "maxsize 1280 720, title:^${upload}$"
"minsize 1280 720, class:^${pavucontrol}$"
"minsize 1280 720, title:^${upload}$" "minsize 1280 720, title:^${upload}$"
]; ];
floatWindows = builtins.map (x: "float, " + x) [ floatWindows = builtins.map (x: "float, " + x) [
"class:^${blueman}$" "class:^${blueman}$"
"class:^${calculator}$" "class:^${calculator}$"
"class:^${easyeffects}$" "class:^${pavucontrol}$"
"class:^${emote}$" "class:^${emote}$"
"class:^${mpv}$" "class:^${mpv}$"
"class:^${vlc}$" "class:^${vlc}$"
@ -95,7 +95,7 @@ let
centerWindows = builtins.map (x: "center, " + x) [ centerWindows = builtins.map (x: "center, " + x) [
"class:^${blueman}$" "class:^${blueman}$"
"class:^${calculator}$" "class:^${calculator}$"
"class:^${easyeffects}$" "class:^${pavucontrol}$"
"class:^${emote}$" "class:^${emote}$"
"class:^${mpv}$" "class:^${mpv}$"
"class:^${vlc}$" "class:^${vlc}$"

View file

@ -29,26 +29,29 @@ in
"Super+l".action = niri.spawn "slack"; "Super+l".action = niri.spawn "slack";
"Super+h".action = niri.spawn "feishin"; "Super+h".action = niri.spawn "feishin";
"Super+g".action = niri.spawn "scrcpy"; "Super+g".action = niri.spawn "scrcpy";
"Super+k".action = niri.spawn "ghostty -e nu -e y"; "Super+e".action = niri.spawn "ghostty -e nu -e y";
"Super+s".action = niri.spawn "steam"; "Super+s".action = niri.spawn "steam";
"Super+r".action = niri.spawn "ghostty -e zellij a dotfiles";
"Super+n".action = niri.spawn "signal-desktop"; "Super+n".action = niri.spawn "signal-desktop";
"Super+t".action = niri.spawn "zeditor"; "Super+t".action = niri.spawn "zeditor";
"Super+r".action = niri.spawn "thunar";
"Super+b".action = niri.spawn "floorp"; "Super+b".action = niri.spawn "floorp";
"Super+x".action = niri.spawn "freetube"; "Super+y".action = niri.spawn "freetube";
"Super+v".action = niri.spawn "vesktop"; "Super+v".action = niri.spawn "vesktop";
"Super+m".action = niri.spawn "element-desktop"; "Super+m".action = niri.spawn "element-desktop";
"Super+d".action = niri.spawn "ghostty"; "Super+d".action = niri.spawn "ghostty";
"Super+p".action = niri.spawn "bitwarden"; "Super+w".action = niri.spawn "bitwarden";
"Super+Space".action = niri.spawn "fuzzel"; "Super+Space".action = niri.spawn "fuzzel";
"Super+Tab".action = niri.close-window; "Super+Tab".action = niri.close-window;
"Super+u".action = niri.maximize-column; "Super+u".action = niri.maximize-column;
"Super+comma".action = niri.focus-workspace-down; "Super+comma".action = niri.focus-workspace-down;
"Super+period".action = niri.focus-workspace-up; "Super+period".action = niri.focus-workspace-up;
"Super+f".action = niri.swap-window-left; "Super+left".action = niri.move-column-left;
"Super+o".action = niri.swap-window-right; "Super+right".action = niri.move-column-right;
"Super+f".action = niri.fullscreen-window;
"Super+w".action = niri.switch-preset-column-width; "Super+q".action = niri.switch-preset-column-width;
"Super+minus".action = niri.set-column-width "-10%";
"Super+plus".action = niri.set-column-width "+10%";
# "Ctrl+Alt+1".action = niri.move-window-to-workspace workspaceStrings.workspace0 # "Ctrl+Alt+1".action = niri.move-window-to-workspace workspaceStrings.workspace0
# "Ctrl+Alt+2".action = niri.move-window-to-workspace workspaceStrings.workspace1 # "Ctrl+Alt+2".action = niri.move-window-to-workspace workspaceStrings.workspace1
@ -68,15 +71,8 @@ in
"Super+3".action = niri.focus-window-or-workspace-down; "Super+3".action = niri.focus-window-or-workspace-down;
"Super+4".action = niri.focus-column-or-monitor-right; "Super+4".action = niri.focus-column-or-monitor-right;
"Super+Shift+t".action = niri.spawn "ghostty";
"Super+Shift+s".action = niri.spawn "flameshot gui"; "Super+Shift+s".action = niri.spawn "flameshot gui";
"Super+Shift+period".action = niri.spawn "emote"; "Super+Shift+period".action = niri.spawn "emote";
"Super+Shift+Tab".action = niri.fullscreen-window;
"Ctrl+Alt+c".action = niri.move-column-left;
"Ctrl+Alt+i".action = niri.move-column-right;
"Ctrl+Alt+f".action = niri.set-column-width "-10%";
"Ctrl+Alt+o".action = niri.set-column-width "+10%";
"XF86MonBrightnessUp".action = niri.spawn "brightnessctl -d ${deviceLogic "amdgpu_bl1" ""} s +10%"; "XF86MonBrightnessUp".action = niri.spawn "brightnessctl -d ${deviceLogic "amdgpu_bl1" ""} s +10%";
"XF86MonBrightnessDown".action = "XF86MonBrightnessDown".action =

View file

@ -1,3 +1,3 @@
{ {
services.easyeffects.enable = true; services.easyeffects.enable = false;
} }

View file

@ -0,0 +1,11 @@
{
pkgs,
...
}:
{
home.packages = builtins.attrValues {
inherit (pkgs)
pavucontrol
;
};
}

View file

@ -104,7 +104,7 @@ in
format = "{icon} {volume}%"; format = "{icon} {volume}%";
tooltip = false; tooltip = false;
format-muted = " Muted"; format-muted = " Muted";
on-click = "easyeffects"; on-click = "pavucontrol";
on-scroll-up = "pactl set-sink-volume @DEFAULT_SINK@ +5%"; on-scroll-up = "pactl set-sink-volume @DEFAULT_SINK@ +5%";
on-scroll-down = "pactl set-sink-volume @DEFAULT_SINK@ -5%"; on-scroll-down = "pactl set-sink-volume @DEFAULT_SINK@ -5%";
scroll-step = 5; scroll-step = 5;

View file

@ -10,6 +10,7 @@ in
mullvad mullvad
syncthing syncthing
ollama ollama
glance
plasma plasma
sddm sddm
hypr hypr

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View file

@ -0,0 +1,154 @@
{ config, flake, ... }:
let
inherit (flake.config.people) user0;
inherit (flake.config.services.instances) glance web;
inherit (flake.config.machines.devices) ceres;
service = glance;
in
{
services = {
glance = {
enable = true;
settings = {
server = {
# assets-path = "/home/${user0}/Files/Projects/dotfiles/modules/nixos/services/glance/assets";
port = service.ports.port0;
};
# auth = {
# secret-key = config.sops.secrets."${service.name}-key".path;
# users.${user0}.password = config.sops.secrets."${service.name}-${user0}-pass".path;
# };
branding = {
hide-footer = true;
# logo-url = /assets/logo.png;
# favicon-url = /assets/logo.png;
# app-name = "My Dashboard";
# app-icon-url = "/assets/app-icon.png";
# app-background-color = "#151519";
};
theme = {
background-color = "232 23 18";
contrast-multiplier = 1.2;
primary-color = "220 83 75";
positive-color = "105 48 72";
negative-color = "351 74 73";
};
pages = [
{
columns = [
{
size = "full";
widgets = [
{
type = "rss";
title = "Podcasts";
style = "detailed-list";
collapse-after = 6;
feeds = [
{
url = "https://sigmanutrition.libsyn.com/rss/";
title = "Sigma Nutrition Radio";
}
{
url = "https://wakingup.libsyn.com/rss";
title = "Making Sense with Sam Harris";
}
{
url = "https://feeds.simplecast.com/uNKL_XD_";
title = "Docs Who Lift";
}
];
}
];
}
{
size = "small";
widgets = [
{
type = "calendar";
title = "Calendar";
style = "vertical-cards";
}
{
type = "weather";
title = "Weather";
units = "metric";
hour-format = "12h";
location = "Winnipeg, Manitoba, Canada";
}
{
type = "clock";
hour-format = "12h";
timezones = [
{
timezone = "America/Winnipeg";
label = "Winnipeg, MB";
}
{
timezone = "Europe/Berlin";
label = "Berlin, DE";
}
{
timezone = "Asia/Kolkata";
label = "Kolkata, IN";
}
{
timezone = "Asia/Tokyo";
label = "Tokyo, JP";
}
];
}
];
}
];
name = "Dashboard";
}
];
};
};
# sops =
# let
# sopsPath = secret: {
# path = "${service.sops.path0}/${service.name}-${secret}";
# owner = service.name;
# mode = "600";
# };
# in
# {
# secrets = builtins.listToAttrs (
# map
# (secret: {
# name = "${service.name}-${secret}";
# value = sopsPath secret;
# })
# [
# "key"
# "${user0}-pass"
# ]
# );
# };
# fileSystems."/var/lib/${service.name}" = {
# device = service.paths.path0;
# fsType = "none";
# options = [
# "bind"
# ];
# depends = [
# ceres.storage0.mount
# ];
# };
# systemd.tmpfiles.rules = [
# "Z ${service.paths.path0} 755 ${service.name} ${service.name} -"
# "Z ${service.sops.path0} 755 ${service.name} ${service.name} -"
# ];
};
networking = {
firewall = {
allowedTCPPorts = [
service.ports.port0
];
};
};
}

View file

@ -67,11 +67,11 @@ in
in in
{ {
"/" = { "/" = {
device = "/dev/disk/by-uuid/6328deb2-075a-471e-8396-459921a82832"; device = "/dev/disk/by-uuid/cca4aaac-9f98-42a5-8bcc-81c7048aad84";
fsType = "ext4"; fsType = "ext4";
}; };
"/boot" = { "/boot" = {
device = "/dev/disk/by-uuid/6152-9BBC"; device = "/dev/disk/by-uuid/7199-F75B";
fsType = "vfat"; fsType = "vfat";
options = mars.boot.options; options = mars.boot.options;
}; };
@ -83,7 +83,7 @@ in
)); ));
swapDevices = [ swapDevices = [
{ device = "/dev/disk/by-uuid/c8839bac-980b-4b24-9c36-504965acc964"; } { device = "/dev/disk/by-uuid/d9c787ac-9f10-41a4-8702-242922f44056"; }
]; ];
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [

View file

@ -23,7 +23,7 @@ in
3131 # Deskreen 3131 # Deskreen
1234 # Elm-land server 1234 # Elm-land server
5037 # ADB Server 5037 # ADB Server
32929 39724
]; ];
}; };
}; };