This commit is contained in:
gwg313 2026-01-24 09:44:01 -05:00
parent 49cca73363
commit c05813575f
Signed by: gwg313
GPG key ID: 60FF63B4826B7400
40 changed files with 2364 additions and 526 deletions

View file

@ -26,12 +26,14 @@
../modules/common.nix
../../common/style/vars/vars.nix
../modules/hyprland
# ../modules/niri
../modules/common-gui.nix
../modules/linux-gui.nix
../modules/devenv.nix
../modules/ssh.nix
../modules/gh-dash.nix
../modules/ags.nix
../modules/vesktop.nix
# ../modules/neovim
../modules/yazi.nix
# ../modules/hyprpanel.nix

View file

@ -7,7 +7,8 @@
config,
pkgs,
...
}: {
}:
{
# You can import other home-manager modules here
imports = [
# If you want to use modules your own flake exports (from modules/home-manager):
@ -80,7 +81,7 @@
};
emoji = {
package = pkgs.noto-fonts-emoji;
package = pkgs.noto-fonts-color-emoji;
name = "Noto Color Emoji";
};
};

View file

@ -0,0 +1,51 @@
{
pkgs,
config,
...
}:
let
rounding = config.theme.rounding + config.theme.gaps-out;
inherit (config.stylix) fonts;
in
{
home.packages = with pkgs; [
papirus-icon-theme
];
programs.caelestia.settings = {
paths.sessionGif = ./session-gif-hacker-cat.gif;
background.enabled = true;
appearance = {
transparency = {
enable = true;
base = 0.85;
layers = 0.4;
};
font.family = {
material = "Material Symbols Rounded";
mono = fonts.monospace.name;
sans = fonts.sansSerif.name;
};
};
utilities = {
enabled = true;
maxToasts = 4;
toasts = {
audioInputChanged = true;
audioOutputChanged = true;
capsLockChanged = false;
chargingChanged = true;
configLoaded = false;
dndChanged = true;
gameModeChanged = true;
numLockChanged = false;
nowPlaying = false;
kbLayoutChanged = false;
};
};
border = {
inherit rounding;
thickness = 8;
};
};
}

View file

@ -0,0 +1,69 @@
{
programs.caelestia.settings.bar = {
clock.showIcon = false;
popouts.activeWindow = false;
persistent = true;
status = {
showBattery = true;
showMicrophone = false;
showLockStatus = false;
showBluetooth = true;
showAudio = true;
showKbLayout = false;
showNetwork = true;
};
workspaces = {
activeIndicator = true;
activeLabel = "󰪥 ";
activeTrail = false;
label = " ";
occupiedBg = true;
occupiedLabel = "󰪥 ";
rounded = true;
showWindows = false;
shown = 5;
};
entries = [
{
id = "logo";
enabled = true;
}
{
id = "workspaces";
enabled = true;
}
{
id = "spacer";
enabled = true;
}
{
id = "activeWindow";
enabled = true;
}
{
id = "spacer";
enabled = true;
}
{
id = "tray";
enabled = true;
}
{
id = "clock";
enabled = true;
}
{
id = "statusIcons";
enabled = true;
}
{
id = "power";
enabled = true;
}
];
tray = {
background = false;
recolour = false;
};
};
}

View file

@ -0,0 +1,58 @@
{
wayland.windowManager.hyprland.settings = {
bindin = [
# Launcher
"$mod, mouse:272, global, caelestia:launcherInterrupt"
"$mod, mouse:273, global, caelestia:launcherInterrupt"
"$mod, mouse:274, global, caelestia:launcherInterrupt"
"$mod, mouse:275, global, caelestia:launcherInterrupt"
"$mod, mouse:276, global, caelestia:launcherInterrupt"
"$mod, mouse:277, global, caelestia:launcherInterrupt"
"$mod, mouse_up, global, caelestia:launcherInterrupt"
"$mod, mouse_down, global, caelestia:launcherInterrupt"
];
bind = [
# Launcher
"$mod, SPACE, global, caelestia:launcher"
"$mod, X, global, caelestia:session" # Powermenu
# Misc
"$mod, L, global, caelestia:lock"
"$mod, N, exec, caelestia shell drawers toggle sidebar"
# Utilities
"$mod+Shift, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode
"$mod+Shift, S, global, caelestia:screenshotFreeze" # Capture region (freeze)
"$mod+Shift+Alt, S, global, caelestia:screenshot" # Capture region
"$mod+Alt, R, exec, caelestia record -s" # Record screen with sound
"Ctrl+Alt, R, exec, caelestia record" # Record screen
"$mod+Shift+Alt, R, exec, caelestia record -r" # Record region
"$mod+Shift, E, exec, pkill fuzzel || caelestia emoji -p"
];
bindl = [
# Brightness
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
"$mod, F2, exec, nightshift-toggle"
"$mod, F3, exec, nightshift-toggle"
# Media
", XF86AudioPlay, global, caelestia:mediaToggle"
", XF86AudioPause, global, caelestia:mediaToggle"
", XF86AudioNext, global, caelestia:mediaNext"
", XF86AudioPrev, global, caelestia:mediaPrev"
", XF86AudioStop, global, caelestia:mediaStop"
# Sound
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# Utilities
", Print, exec, caelestia screenshot" # Full screen capture > clipboard
];
bindle = [
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
];
};
}

View file

@ -0,0 +1,62 @@
{
pkgs,
inputs,
...
}:
{
imports = [
inputs.caelestia-shell.homeManagerModules.default
./bindings.nix
./bar.nix
./launcher.nix
./appearance.nix
./scheme.nix
];
programs.caelestia = {
enable = true;
systemd.enable = false;
settings = {
services.weatherLocation = "Ottawa";
services.useFahrenheit = false;
general = {
apps = {
terminal = [ "ghostty" ];
audio = [ "pavucontrol" ];
explorer = [ "thunar" ];
};
idle = {
timeouts = [ ];
};
};
};
cli = {
enable = true;
settings.theme = {
enableTerm = false;
enableDiscord = false;
enableSpicetify = false;
enableBtop = false;
enableCava = false;
enableHypr = false;
enableGtk = false;
enableQt = false;
};
};
};
home.packages = with pkgs; [
gpu-screen-recorder
];
wayland.windowManager.hyprland.settings.exec-once = [
"uwsm app -- caelestia resizer -d"
"uwsm app -- caelestia shell -d"
"caelestia scheme set -n custom"
];
services.cliphist = {
enable = true;
allowImages = true;
};
}

View file

@ -0,0 +1,174 @@
{
programs.caelestia.settings = {
session.commands = {
logout = [
"loginctl"
"terminate-user"
""
];
shutdown = [
"systemctl"
"poweroff"
];
hibernate = [
"systemctl"
"hibernate"
];
reboot = [
"systemctl"
"reboot"
];
};
launcher = {
actionPrefix = "/";
actions = [
{
name = "Calculator";
icon = "calculate";
description = "Do simple math equations (powered by Qalc)";
command = [
"autocomplete"
"calc"
];
enabled = true;
dangerous = false;
}
{
name = "Shutdown";
icon = "power_settings_new";
description = "Shutdown the system";
command = [
"systemctl"
"poweroff"
];
enabled = true;
dangerous = true;
}
{
name = "Reboot";
icon = "cached";
description = "Reboot the system";
command = [
"systemctl"
"reboot"
];
enabled = true;
dangerous = true;
}
{
name = "Logout";
icon = "exit_to_app";
description = "Log out of the current session";
command = [
"loginctl"
"terminate-user"
""
];
enabled = true;
dangerous = true;
}
{
name = "Lock";
icon = "lock";
description = "Lock the current session";
command = [
"loginctl"
"lock-session"
];
enabled = true;
dangerous = false;
}
{
name = "Sleep";
icon = "bedtime";
description = "Suspend then hibernate";
command = [
"systemctl"
"suspend-then-hibernate"
];
enabled = true;
dangerous = false;
}
{
name = "Restart caelestia";
icon = "cached";
description = "Restart caelestia";
command = [
"hyprctl"
"dispatch"
"exec"
"caelestia-shell kill | sleep 1 | caelestia-shell"
];
enabled = true;
dangerous = false;
}
{
name = "Emoji Picker";
icon = "mood";
description = "Toggle the emoji picker";
command = [
"caelestia"
"emoji"
"-p"
];
enabled = true;
dangerous = false;
}
{
name = "Clipboard History";
icon = "content_paste";
description = "Toggle the clipboard history";
command = [
"caelestia"
"clipboard"
];
enabled = true;
dangerous = false;
}
{
name = "Delete from Clipboard History";
icon = "content_paste_off";
description = "Delete a line from the clipboard history";
command = [
"caelestia"
"clipboard"
];
enabled = true;
dangerous = false;
}
{
name = "Night Shift";
icon = "moon_stars";
description = "Toggle Night Shift, the blue light filter";
command = [ "nightshift-toggle" ];
enabled = true;
dangerous = false;
}
{
name = "Hyprpicker";
icon = "colorize";
description = "Pick an hex color";
command = [
"hyprpicker"
"-a"
];
enabled = true;
dangerous = false;
}
];
dragThreshold = 50;
enableDangerousActions = false;
maxShown = 7;
specialPrefix = "@";
useFuzzy = {
apps = false;
actions = false;
schemes = false;
variants = false;
wallpapers = false;
};
showOnHover = false;
hiddenApps = [ ];
};
};
}

View file

@ -0,0 +1,135 @@
{
pkgs,
inputs,
config,
...
}:
let
colors = config.lib.stylix.colors;
customSchemeFile = pkgs.writeText "custom-dark.txt" ''
primary_paletteKeyColor ${colors.base0D}
secondary_paletteKeyColor ${colors.base04}
tertiary_paletteKeyColor ${colors.base08}
neutral_paletteKeyColor ${colors.base03}
neutral_variant_paletteKeyColor ${colors.base03}
background ${colors.base00}
onBackground ${colors.base05}
surface ${colors.base00}
surfaceDim ${colors.base00}
surfaceBright ${colors.base02}
surfaceContainerLowest ${colors.base01}
surfaceContainerLow ${colors.base01}
surfaceContainer ${colors.base01}
surfaceContainerHigh ${colors.base02}
surfaceContainerHighest ${colors.base02}
onSurface ${colors.base05}
surfaceVariant ${colors.base02}
onSurfaceVariant ${colors.base04}
inverseSurface ${colors.base05}
inverseOnSurface ${colors.base00}
outline ${colors.base03}
outlineVariant ${colors.base02}
shadow ${colors.base00}
scrim ${colors.base00}
surfaceTint ${colors.base0D}
primary ${colors.base0D}
onPrimary ${colors.base00}
primaryContainer ${colors.base0D}
onPrimaryContainer ${colors.base05}
inversePrimary ${colors.base0D}
secondary ${colors.base0C}
onSecondary ${colors.base00}
secondaryContainer ${colors.base02}
onSecondaryContainer ${colors.base0C}
tertiary ${colors.base08}
onTertiary ${colors.base00}
tertiaryContainer ${colors.base08}
onTertiaryContainer ${colors.base00}
error ${colors.base08}
onError ${colors.base00}
errorContainer ${colors.base08}
onErrorContainer ${colors.base05}
primaryFixed ${colors.base0D}
primaryFixedDim ${colors.base0D}
onPrimaryFixed ${colors.base00}
onPrimaryFixedVariant ${colors.base00}
secondaryFixed ${colors.base0C}
secondaryFixedDim ${colors.base0C}
onSecondaryFixed ${colors.base00}
onSecondaryFixedVariant ${colors.base02}
tertiaryFixed ${colors.base08}
tertiaryFixedDim ${colors.base08}
onTertiaryFixed ${colors.base00}
onTertiaryFixedVariant ${colors.base00}
term0 ${colors.base00}
term1 ${colors.base08}
term2 ${colors.base0B}
term3 ${colors.base0A}
term4 ${colors.base0D}
term5 ${colors.base0E}
term6 ${colors.base0C}
term7 ${colors.base05}
term8 ${colors.base03}
term9 ${colors.base08}
term10 ${colors.base0B}
term11 ${colors.base0A}
term12 ${colors.base0D}
term13 ${colors.base0E}
term14 ${colors.base0C}
term15 ${colors.base07}
rosewater ${colors.base06}
flamingo ${colors.base0F}
pink ${colors.base0E}
mauve ${colors.base0D}
red ${colors.base08}
maroon ${colors.base08}
peach ${colors.base09}
yellow ${colors.base0A}
green ${colors.base0B}
teal ${colors.base0C}
sky ${colors.base0C}
sapphire ${colors.base0C}
blue ${colors.base0D}
lavender ${colors.base0D}
klink ${colors.base0D}
klinkSelection ${colors.base0D}
kvisited ${colors.base0E}
kvisitedSelection ${colors.base0E}
knegative ${colors.base08}
knegativeSelection ${colors.base08}
kneutral ${colors.base0A}
kneutralSelection ${colors.base0A}
kpositive ${colors.base0B}
kpositiveSelection ${colors.base0B}
text ${colors.base05}
subtext1 ${colors.base04}
subtext0 ${colors.base03}
overlay2 ${colors.base03}
overlay1 ${colors.base03}
overlay0 ${colors.base02}
surface2 ${colors.base02}
surface1 ${colors.base01}
surface0 ${colors.base01}
base ${colors.base00}
mantle ${colors.base00}
crust ${colors.base00}
success ${colors.base0B}
onSuccess ${colors.base00}
successContainer ${colors.base0B}
onSuccessContainer ${colors.base05}
'';
customCli =
inputs.caelestia-cli.packages.${pkgs.stdenv.hostPlatform.system}.default.overrideAttrs
(oldAttrs: {
postUnpack = ''
mkdir -p $sourceRoot/src/caelestia/data/schemes/custom/main
cp ${customSchemeFile} $sourceRoot/src/caelestia/data/schemes/custom/main/dark.txt
echo "Custom scheme added to source"
'';
});
in
{
programs.caelestia.cli.package = customCli;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View file

@ -10,6 +10,8 @@
./zen.nix
./mime.nix
./nixcord.nix
# ./vicinae.nix
./caelestia-shell
];
fonts.fontconfig.enable = true;
@ -22,8 +24,10 @@
nerd-fonts.monaspace
noto-fonts-cjk-sans
rPackages.fontawesome
ubuntu_font_family
ubuntu-classic
yt-dlp
mochi
# mochi TODO: reenable when fixed
jetbrains.idea
wpsoffice
];
}

View file

@ -32,6 +32,7 @@
minio-client
kanata
yatto
ticktick
# Editors
# neovim # Improved version of vim, often used with overlays.
@ -43,7 +44,7 @@
# Builtin Replacements
bottom # Similar to 'htop,' providing a top-like interface with additional features.
colordiff # Tool to colorize 'diff' output, making differences between files easier to spot.
du-dust # Modern replacement for 'du,' offering intuitive and visually appealing disk usage analysis.
dust # Modern replacement for 'du,' offering intuitive and visually appealing disk usage analysis.
duf # Disk Usage/Free utility with a user-friendly interface for visualizing disk space consumption and information.
eza # Modern replacement for 'ls' with additional features and a user-friendly interface.
fd # Faster and user-friendly alternative to 'find' for searching and locating files.

View file

@ -7,14 +7,20 @@
programs.ghostty = {
enable = true;
enableZshIntegration = true;
installVimSyntax = true;
settings = {
window-padding-x = 10;
window-padding-y = 10;
auto-update = "off";
working-directory = "home";
window-inherit-working-directory = false; # avoid inheritance
keybinds = [ ];
# background-opacity = 0.8;
background-opacity = 1;
confirm-close-surface = false;
# font-family = lib.mkForce "Comic Code Ligatures";
font-family = lib.mkForce "Terminus";
font-size = 9;
font-family = lib.mkForce "Comic Code Ligatures";
# font-family = lib.mkForce "Terminus";
font-size = 14;
gtk-titlebar = false;
# theme = "Teerb";
};

View file

@ -10,55 +10,55 @@
"$mod" = "SUPER";
bind =
[
# general binds
",switch:Lid Switch, exec, ${pkgs.hyprlock}/bin/hyprlock" # Lock when closing Lid
# "$mod, RETURN, exec, ${pkgs.alacritty}/bin/alacritty"
"$mod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
"$mod,E, exec, uwsm app -- ${pkgs.xfce.thunar}/bin/thunar" # Thunar
"$shiftMod,SPACE, exec, hyprfocus-toggle" # Toggle HyprFocus
"$mod, Q, killactive"
"SUPER_SHIFT, Q, exec, ${pkgs.wlogout}/bin/wlogout"
"$mod, SPACE, exec, pkill fuzzel || ${pkgs.fuzzel}/bin/fuzzel" # pkill or allows for toggle
"$mod,T, togglefloating," # Toggle Floating
# "$mod, F, fullscreen"
"$mod,F, fullscreen" # Toggle fullscreen
"$mod, L, exec, ${pkgs.hyprlock}/bin/hyprlock"
"$mod, B, exec, ${pkgs.grim}/bin/grim \"desktop-$(${pkgs.busybox}/bin/date +\"%Y%m%d%H%m\").png"
"SUPER_SHIFT, B, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -d)\" - | ${pkgs.wl-clipboard}/bin/wl-copy" # Screenshot selection directly to clipboard
bind = [
# general binds
",switch:Lid Switch, exec, ${pkgs.hyprlock}/bin/hyprlock" # Lock when closing Lid
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
# "$mod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
"$mod,E, exec, uwsm app -- ${pkgs.xfce.thunar}/bin/thunar" # Thunar
"$shiftMod,SPACE, exec, hyprfocus-toggle" # Toggle HyprFocus
"$mod, Q, killactive"
"SUPER_SHIFT, Q, exec, ${pkgs.wlogout}/bin/wlogout"
# "$mod, SPACE, exec, pkill fuzzel || ${pkgs.fuzzel}/bin/fuzzel" # pkill or allows for toggle
# "$mod, SPACE, exec, vicinae toggle"
"$mod,T, togglefloating," # Toggle Floating
# "$mod, F, fullscreen"
"$mod,F, fullscreen" # Toggle fullscreen
"$mod, L, exec, ${pkgs.hyprlock}/bin/hyprlock"
"$mod, B, exec, ${pkgs.grim}/bin/grim \"desktop-$(${pkgs.busybox}/bin/date +\"%Y%m%d%H%m\").png"
"SUPER_SHIFT, B, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp -d)\" - | ${pkgs.wl-clipboard}/bin/wl-copy" # Screenshot selection directly to clipboard
"$shiftMod,T, exec, hyprpanel-toggle" # Toggle hyprpanel
"$shiftMod,T, exec, hyprpanel-toggle" # Toggle hyprpanel
"$shiftMod,up, focusmonitor, -1" # Focus previous monitor
"$shiftMod,down, focusmonitor, 1" # Focus next monitor
"$shiftMod,left, layoutmsg, addmaster" # Add to master
"$shiftMod,right, layoutmsg, removemaster" # Remove from master
"$shiftMod,up, focusmonitor, -1" # Focus previous monitor
"$shiftMod,down, focusmonitor, 1" # Focus next monitor
"$shiftMod,left, layoutmsg, addmaster" # Add to master
"$shiftMod,right, layoutmsg, removemaster" # Remove from master
# move focus
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
"$mod,right,workspace,+1"
"$mod,left,workspace,-1"
# move focus
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
"$mod,right,workspace,+1"
"$mod,left,workspace,-1"
# Scroll through workspaces
"$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1"
]
++ (builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"$mod,code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT,code:1${toString i}, movetoworkspace, ${toString ws}"
]
) 9
));
# Scroll through workspaces
"$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1"
]
++ (builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"$mod,code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT,code:1${toString i}, movetoworkspace, ${toString ws}"
]
) 9
));
bindl = [
",XF86AudioMute, exec, sound-toggle" # Toggle Mute

View file

@ -23,15 +23,17 @@ in
./bindings.nix
./polkitagent.nix
# ./hyprspace.nix
./hyprpanel.nix
./hyprlock.nix
# ./hyprpanel.nix
# ./hyprlock.nix
./hyprpaper.nix
../caelestia-shell
];
home.packages = with pkgs; [
qt5.qtwayland
qt6.qtwayland
libsForQt5.qt5ct
qt6ct
qt6Packages.qt6ct
hyprshot
hyprpicker
swappy
@ -71,6 +73,7 @@ in
"systemctl --user enable --now hyprpaper.service &"
"systemctl --user enable --now hypridle.service &"
"systemctl --user enable --now nextcloud-client.service &"
"vicinae server"
];
monitor = [
@ -151,7 +154,7 @@ in
disable_splash_rendering = true;
disable_autoreload = true;
focus_on_activate = true;
new_window_takes_over_fullscreen = 2;
# new_window_takes_over_fullscreen = 2;
};
windowrulev2 = [
@ -188,10 +191,10 @@ in
"size 640 400, class:^(.*jetbrains.*)$, title:^(splash)$"
];
layerrule = [
"noanim, launcher"
"noanim, ^ags-.*"
];
# layerrule = [
# "noanim, launcher"
# "noanim, ^ags-.*"
# ];
input = {
# kb_layout = keyboardLayout;

View file

@ -0,0 +1,29 @@
{
lib,
pkgs,
...
}:
{
services.hyprpaper = {
enable = true;
settings = {
ipc = "on";
splash = false;
splash_offset = 2;
};
};
home.packages = [
pkgs.hyprpaper
];
systemd.user.services.hyprpaper.Unit.After = lib.mkForce "graphical-session.target";
wayland.windowManager.hyprland.settings.exec-once = [
"systemctl --user enable --now hyprpaper.service"
];
services.hyprpaper.settings.wallpaper = lib.singleton {
# TODO: Remove after merge https://github.com/nix-community/stylix/pull/2087
monitor = "eDP-1";
path = toString ../../../wallpapers/oasis.png;
};
}

View file

@ -0,0 +1,11 @@
{ pkgs }:
{
browser = "${pkgs.firefox}/bin/firefox";
terminal = "${pkgs.ghostty}/bin/ghostty";
fileManager = "${pkgs.xfce.thunar}/bin/thunar";
appLauncher = "${pkgs.walker}/bin/walker";
screenshotArea = "${pkgs.bash}/bin/bash -c '${pkgs.grim}/bin/grim -g \"\\\$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy'";
screenshotWindow = "${pkgs.bash}/bin/bash -c '${pkgs.grim}/bin/grim -g \"\\\$(${pkgs.slurp}/bin/slurp -w)\" - | ${pkgs.wl-clipboard}/bin/wl-copy'";
screenshotOutput = "${pkgs.bash}/bin/bash -c '${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy'";
}

View file

@ -0,0 +1,22 @@
{
lib,
pkgs,
...
}:
{
programs.niri.settings.spawn-at-startup = [
{
command = [
"systemctl"
"--user"
"start"
"hyprpolkitagent"
];
}
{ command = [ "xwayland-satellite" ]; }
{ command = [ "qs" ]; }
{ command = [ "swww-daemon" ]; }
#{ command = ["${pkgs.swaybg}/bin/swaybg" "-o" "DP-1" "-i" "/home/lysec/nixos/assets/wallpapers/clouds.png" "-m" "fill"]; }
#{ command = ["sh" "-c" "swww-daemon & swww img /home/lysec/nixos/wallpapers/cloud.png"]; }
];
}

View file

@ -0,0 +1,16 @@
{
config,
pkgs,
inputs,
...
}:
{
imports = [
inputs.niri.homeModules.niri # Import Niri's home-manager module
./settings.nix # Your custom configuration files for Niri
./keybinds.nix
./rules.nix
./autostart.nix
./noctaliashell.nix
];
}

View file

@ -0,0 +1,69 @@
{
lib,
config,
pkgs,
...
}:
let
apps = import ./applications.nix { inherit pkgs; };
in
{
programs.niri.settings.binds =
with config.lib.niri.actions;
let
pactl = "${pkgs.pulseaudio}/bin/pactl";
volume-up = spawn pactl [
"set-sink-volume"
"@DEFAULT_SINK@"
"+5%"
];
volume-down = spawn pactl [
"set-sink-volume"
"@DEFAULT_SINK@"
"-5%"
];
in
{
# Quickshell Keybinds Start
"super+space".action = spawn [
"noctalia-shell"
"ipc"
"call"
"launcher"
"toggle"
];
# Quickshell Keybinds End
"xf86audioraisevolume".action = volume-up;
"xf86audiolowervolume".action = volume-down;
"control+super+xf86audioraisevolume".action = spawn "brightness" "up";
"control+super+xf86audiolowervolume".action = spawn "brightness" "down";
"super+q".action = close-window;
"super+b".action = spawn apps.browser;
"super+Return".action = spawn apps.terminal;
#"super+Control+Return".action = spawn apps.appLauncher;
"super+E".action = spawn apps.fileManager;
"super+f".action = maximize-column;
"super+Shift+f".action = fullscreen-window;
"super+t".action = toggle-window-floating;
"super+r".action = switch-preset-column-width;
"super+Shift+r".action = switch-preset-window-height;
# "control+shift+1".action = screenshot;
# "control+shift+2".action = screenshot-window {write-to-disk = true;};
"super+Left".action = focus-column-left;
"super+Right".action = focus-column-right;
"super+Down".action = focus-workspace-down;
"super+Up".action = focus-workspace-up;
"super+Shift+Left".action = move-column-left;
"super+Shift+Right".action = move-column-right;
"super+Shift+Down".action = move-column-to-workspace-down;
"super+Shift+Up".action = move-column-to-workspace-up;
};
}

View file

@ -0,0 +1,68 @@
{
pkgs,
inputs,
...
}:
{
imports = [
inputs.noctalia.homeModules.default
];
# configure options
programs.noctalia-shell = {
enable = true;
settings = {
# configure noctalia here
bar = {
density = "compact";
position = "left";
showCapsule = false;
widgets = {
left = [
{
id = "ControlCenter";
useDistroLogo = true;
}
{
id = "Network";
}
{
id = "Bluetooth";
}
];
center = [
{
hideUnoccupied = false;
id = "Workspace";
labelMode = "none";
}
];
right = [
{
alwaysShowPercentage = false;
id = "Battery";
warningThreshold = 30;
}
{
formatHorizontal = "HH:mm";
formatVertical = "HH mm";
id = "Clock";
useMonospacedFont = true;
usePrimaryColor = true;
}
];
};
};
colorSchemes.predefinedScheme = "Monochrome";
general = {
avatarImage = "/home/drfoobar/.face";
radiusRatio = 0.2;
};
location = {
monthBeforeDay = true;
name = "Toronto, Canada";
};
};
# this may also be a string or a path to a JSON file.
};
}

View file

@ -0,0 +1,48 @@
{
config,
pkgs,
...
}:
{
programs.niri.settings = {
layer-rules = [
{
matches = [
{
namespace = "^quickshell-wallpaper$";
}
];
#place-within-backdrop = true;
}
{
matches = [
{
namespace = "^quickshell-overview$";
}
];
place-within-backdrop = true;
}
{
matches = [
{
namespace = "^swww-daemon$";
}
];
place-within-backdrop = true;
}
];
window-rules = [
{
matches = [ { } ];
geometry-corner-radius = {
top-left = 20.0;
top-right = 20.0;
bottom-left = 20.0;
bottom-right = 20.0;
};
clip-to-geometry = true;
}
];
};
}

View file

@ -0,0 +1,31 @@
{ pkgs, ... }:
let
brightnessScript = pkgs.writeShellScriptBin "brightness" ''
BUS=10
STEP=5
MIN=0
MAX=100
OSD_FILE="/tmp/brightness_osd_level"
current=$(ddcutil --bus=$BUS getvcp 10 | grep -oP "current value\\s*=\\s*\\K[0-9]+")
new=$current
if [[ "$1" == "up" ]]; then
new=$((current + STEP))
(( new > MAX )) && new=$MAX
elif [[ "$1" == "down" ]]; then
new=$((current - STEP))
(( new < MIN )) && new=$MIN
else
exit 1
fi
ddcutil --bus=$BUS setvcp 10 "$new"
echo "$new" > "$OSD_FILE"
'';
in
{
home.packages = [
brightnessScript
];
}

View file

@ -0,0 +1,145 @@
{
config,
pkgs,
...
}:
{
home.sessionVariables = {
XDG_ICON_DIR = "${pkgs.whitesur-icon-theme}/share/icons/WhiteSur";
GSETTINGS_SCHEMA_DIR = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas";
XCURSOR_THEME = "Bibata-Original-Ice";
XCURSOR_SIZE = "20";
};
programs.niri = {
enable = true;
package = pkgs.niri;
settings = {
environment = {
# CLUTTER_BACKEND = "wayland";
# DISPLAY = null;
# MOZ_ENABLE_WAYLAND = "1";
# NIXOS_OZONE_WL = "1";
# QT_QPA_PLATFORM = "wayland;xcb";
# QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
SDL_VIDEODRIVER = "wayland";
WLR_RENDERER = "vulkan";
WLR_NO_HARDWARE_CURSORS = "1";
QT_QPA_PLATFORMTHEME = "qt6ct";
GTK_IM_MODULE = "simple";
};
spawn-at-startup = [
{
command = [
"noctalia-shell"
];
}
];
prefer-no-csd = true;
hotkey-overlay = {
skip-at-startup = true;
};
layout = {
preset-column-widths = [
{ proportion = 1. / 3.; }
{ proportion = 1. / 2.; }
{ proportion = 2. / 3.; }
];
default-column-width = {
proportion = 0.5;
};
preset-window-heights = [
{ proportion = 1. / 3.; }
{ proportion = 1. / 2.; }
{ proportion = 2. / 3.; }
];
background-color = "#00000000";
focus-ring = {
enable = true;
width = 3;
active = {
color = "#A8AEFF";
};
inactive = {
color = "#505050";
};
};
gaps = 6;
struts = {
left = 20;
right = 20;
top = 20;
bottom = 20;
};
};
input = {
touchpad = {
click-method = "button-areas";
dwt = true;
dwtp = true;
natural-scroll = true;
scroll-method = "two-finger";
tap = true;
tap-button-map = "left-right-middle";
middle-emulation = true;
accel-profile = "adaptive";
};
focus-follows-mouse.enable = true;
warp-mouse-to-focus.enable = false;
};
outputs = {
"eDP-1" = {
mode = {
width = 1920;
height = 1080;
};
scale = 1.0;
position = {
x = 0;
y = 0;
};
};
"desc:Microstep MSI MP161 E2 PB7H314B00225" = {
mode = {
width = 1920;
height = 1080;
};
scale = 1.0;
position = {
x = 0;
y = 1080;
};
};
};
cursor = {
size = 20;
theme = "Adwaita";
};
environment = {
CLUTTER_BACKEND = "wayland";
GDK_BACKEND = "wayland,x11";
MOZ_ENABLE_WAYLAND = "1";
NIXOS_OZONE_WL = "1";
QT_QPA_PLATFORM = "wayland";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
ELECTRON_OZONE_PLATFORM_HINT = "auto";
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "niri";
DISPLAY = ":0";
};
};
};
}

View file

@ -55,5 +55,52 @@
})
'';
};
settings.vim.augroups = [
{ name = "SwiftSetup"; }
];
settings.vim.autocmds = [
# Start Swift LSP automatically for Swift files
{
event = [ "FileType" ];
pattern = [ "swift" ];
group = "SwiftSetup";
desc = "Start sourcekit-lsp for Swift files";
callback = lib.generators.mkLuaInline ''
function()
local lspconfig = require("lspconfig")
-- Avoid starting LSP multiple times
for _, client in pairs(vim.lsp.get_active_clients()) do
if client.name == "sourcekit" then
return
end
end
lspconfig.sourcekit.setup({
cmd = { "sourcekit-lsp" },
filetypes = { "swift", "swiftpm" },
root_dir = lspconfig.util.root_pattern("Package.swift", ".git"),
})
end
'';
}
# Format Swift files on save using swift-format
{
event = [ "BufWritePost" ];
pattern = [ "*.swift" ];
group = "SwiftSetup";
desc = "Format Swift files on save";
callback = lib.generators.mkLuaInline ''
function()
if vim.fn.executable("swift-format") == 1 then
vim.cmd("silent! noautocmd !swift-format -i %")
vim.cmd("checktime")
end
end
'';
}
];
};
}

View file

@ -41,7 +41,6 @@
context.enable = true;
highlight = {
enable = true;
additionalVimRegexHighlighting = true;
};
};
lsp = {

View file

@ -32,6 +32,9 @@
hostname = "grymforge.zt"; # added to hosts in zerotier config
user = "gwg313";
identityFile = "/home/gwg313/.ssh/home/id_ed25519";
extraOptions = {
"VisualHostKey" = "no";
};
};
"waypoint" = {
@ -57,6 +60,28 @@
user = "root";
identityFile = "/home/gwg313/.ssh/colmena/id_ed25519";
};
"qnx" = {
hostname = "10.1.40.32";
user = "qnxuser";
identitiesOnly = true;
identityFile = "/home/gwg313/.ssh/qnxuser";
extraOptions = {
"Ciphers" = "aes256-ctr";
};
};
"qnxzt" = {
hostname = "10.1.40.32";
user = "qnxuser";
identitiesOnly = true;
identityFile = "/home/gwg313/.ssh/qnxuser";
proxyJump = "grymforge.zt";
extraOptions = {
"Ciphers" = "aes256-ctr";
"VisualHostKey" = "no";
};
};
};
};
}

View file

@ -0,0 +1,186 @@
{ pkgs, ... }:
{
services.arrpc.enable = true;
home.packages = with pkgs; [
discord-ptb # Used for completing Discord quests
];
programs.nixcord = {
enable = true;
discord.enable = false;
vesktop.enable = true;
vesktop.useSystemVencord = false;
config = {
themeLinks = [
# "https://raw.githubusercontent.com/refact0r/system24/refs/heads/main/theme/system24.theme.css"
"https://catppuccin.github.io/discord/dist/catppuccin-mocha.theme.css"
# "https://catppuccin.github.io/discord/dist/catppuccin-mocha-lavender.theme.css"
];
frameless = true;
disableMinSize = true;
plugins = {
accountPanelServerProfile.enable = true;
alwaysExpandRoles.enable = true;
alwaysTrust.enable = true;
anonymiseFileNames.enable = true;
betterGifAltText.enable = true;
betterGifPicker.enable = true;
betterNotesBox.enable = true;
betterRoleContext.enable = true;
betterRoleDot.enable = true;
betterSessions.enable = false;
betterSettings.enable = true;
betterUploadButton.enable = true;
biggerStreamPreview.enable = true;
BlurNSFW.enable = true;
callTimer = {
enable = true;
format = "human";
};
ClearURLs.enable = true;
colorSighted.enable = true;
consoleJanitor.enable = true;
consoleShortcuts.enable = true;
copyEmojiMarkdown.enable = true;
copyFileContents.enable = true;
CopyUserURLs.enable = true;
CustomRPC = {
enable = false; # TODO
};
dearrow.enable = true;
decor.enable = true;
disableCallIdle.enable = true;
dontRoundMyTimestamps.enable = true;
experiments = {
enable = true;
toolbarDevMenu = true;
};
f8Break.enable = true;
fakeProfileThemes.enable = true;
favoriteEmojiFirst.enable = true;
favoriteGifSearch.enable = true;
fixCodeblockGap.enable = true;
fixImagesQuality.enable = true;
fixSpotifyEmbeds.enable = true;
fixYoutubeEmbeds.enable = true;
forceOwnerCrown.enable = true;
friendInvites.enable = true;
friendsSince.enable = true;
fullSearchContext.enable = true;
gameActivityToggle.enable = true;
gifPaste.enable = true;
greetStickerPicker.enable = true;
iLoveSpam.enable = true;
imageLink.enable = true;
imageZoom = {
enable = true;
nearestNeighbour = true;
};
implicitRelationships.enable = true;
# invisibleChat.enable = true; # Equicord only
keepCurrentChannel.enable = true;
memberCount.enable = true;
mentionAvatars.enable = true;
messageClickActions = {
enable = true;
enableDoubleClickToEdit = false;
enableDoubleClickToReply = false;
};
messageLatency = {
enable = true;
latency = 4;
};
messageLinkEmbeds.enable = true;
messageLogger.enable = true;
messageTags.enable = true;
# moreCommands.enable = true;
# moreKaomoji.enable = true;
# moreUserTags.enable = true;
MutualGroupDMs.enable = true;
newGuildSettings = {
enable = true;
# Values: 0 = All messages, 1 = Only @mentions, 2 = Nothing, 3 = Server default'';
messages = 1;
role = false;
};
noBlockedMessages.enable = true;
noDevtoolsWarning.enable = true;
noF1.enable = true;
noMosaic.enable = true;
noOnboardingDelay.enable = true;
noPendingCount.enable = true;
noTypingAnimation.enable = true;
noUnblockToJump.enable = true;
normalizeMessageLinks.enable = true;
openInApp.enable = true;
overrideForumDefaults.enable = true;
permissionFreeWill.enable = true;
permissionsViewer.enable = true;
petpet.enable = true;
pictureInPicture.enable = true;
PinDMs.enable = true;
platformIndicators.enable = true;
previewMessage.enable = true;
quickMention.enable = true;
quickReply.enable = true;
reactErrorDecoder.enable = true;
readAllNotificationsButton.enable = true;
relationshipNotifier.enable = true;
replaceGoogleSearch.enable = true;
replyTimestamp.enable = true;
revealAllSpoilers.enable = true;
reverseImageSearch.enable = true;
roleColorEverywhere.enable = true;
summaries.enable = true;
sendTimestamps.enable = true;
serverInfo.enable = true;
shikiCodeblocks.enable = true;
showAllMessageButtons.enable = true;
showConnections.enable = true;
showHiddenChannels = {
enable = true;
# Values: 0 = Lock Icon replacing channel icon, 2 = Eye icon on the right, 1 = Lock icon on the right
showMode = 0;
};
showHiddenThings.enable = true;
showTimeoutDuration.enable = true;
silentMessageToggle.enable = true;
sortFriendRequests.enable = true;
spotifyControls.enable = true;
spotifyCrack.enable = true;
spotifyShareCommands.enable = true;
startupTimings.enable = true;
streamerModeOnStream.enable = true;
themeAttributes.enable = true;
translate.enable = true;
typingIndicator.enable = true;
typingTweaks.enable = true;
unindent.enable = true;
unlockedAvatarZoom.enable = true;
unsuppressEmbeds.enable = true;
userVoiceShow.enable = true;
validReply.enable = true;
validUser.enable = true;
voiceChatDoubleClick.enable = true;
vencordToolbox.enable = true;
viewIcons.enable = true;
viewRaw.enable = true;
voiceDownload.enable = true;
voiceMessages.enable = true;
volumeBooster.enable = true;
youtubeAdblock.enable = true;
};
};
vesktopConfig = {
plugins = {
webKeybinds.enable = true;
webRichPresence.enable = true;
webScreenShareFixes.enable = true;
};
};
};
}

View file

@ -0,0 +1,37 @@
{
inputs,
pkgs,
...
}:
{
# ...
services.vicinae = {
enable = true;
systemd = {
enable = true;
autoStart = true;
environment = {
USE_LAYER_SHELL = 1;
};
};
settings = {
close_on_focus_loss = true;
consider_preedit = true;
pop_to_root_on_close = true;
favicon_service = "twenty";
search_files_in_root = true;
font = {
normal = {
size = 12;
normal = "Comic Code Ligatures";
};
};
};
extensions = with inputs.vicinae-extensions.packages.${pkgs.stdenv.hostPlatform.system}; [
bluetooth
nix
power-profile
];
};
}

View file

@ -1,5 +1,9 @@
# Zen is a minimalistic web browser.
{ inputs, ... }:
{
inputs,
config,
...
}:
{
imports = [
inputs.zen-browser.homeModules.beta