noctalia(-shell): Init modules

This commit is contained in:
SebastianStork 2026-03-05 20:58:24 +01:00
parent 048c7fb888
commit 7cc0460181
Signed by: SebastianStork
SSH key fingerprint: SHA256:tRrGdjYOwgHxpSc/wTOZQZEjxcb15P0tyXRsbAfd+2Q
4 changed files with 185 additions and 0 deletions

View file

@ -0,0 +1,41 @@
{
config,
pkgs,
lib,
...
}:
{
options.custom.de.hyprland.noctalia.enable = lib.mkEnableOption "";
config = lib.mkIf config.custom.de.hyprland.noctalia.enable {
custom = {
programs = {
hyprland.enable = true;
noctalia-shell.enable = true;
};
services.cliphist.enable = true;
};
home.packages = [ pkgs.grimblast ];
wayland.windowManager.hyprland.extraConfig = lib.mkBefore ''
# Variables
$ipc = noctalia-shell ipc call
$play-pause = $ipc media playPause
$play-next = $ipc media next
$play-previous = $ipc media previous
$mute = $ipc volume muteOutput
$volume-up = $ipc volume increase
$volume-down = $ipc volume decrease
$mute-mic = $ipc volume muteInput
# Launch programs
bind = SUPER, R, exec, $ipc launcher toggle
bind = SUPER, V, exec, $ipc launcher clipboard
# Manage session
bindrl = SUPER CONTROL, L, exec, $ipc lockScreen lock
'';
};
}

View file

@ -0,0 +1,96 @@
{
config,
osConfig,
inputs,
lib,
...
}:
{
imports = [ inputs.noctalia.homeModules.default ];
options.custom.programs.noctalia-shell.enable = lib.mkEnableOption "";
config = lib.mkIf config.custom.programs.noctalia-shell.enable {
programs.noctalia-shell = {
enable = true;
systemd.enable = true;
settings = {
general = {
animationSpeed = 1.8;
enableShadows = false;
compactLockScreen = true;
autoStartAuth = true;
allowPasswordWithFprintd = true;
showSessionButtonsOnLockScreen = false;
avatarImage = "/home/seb/Pictures/face";
telemetryEnabled = false;
};
ui.boxBorderEnabled = true;
colorSchemes = {
darkMode =
{
dark = true;
light = false;
}
.${config.custom.theme};
predefinedScheme = "GitHub Dark";
};
wallpaper = {
enabled = true;
directory = "/home/seb/Pictures/Wallpapers";
transitionType = "fade";
transitionDuration = 1000;
automationEnabled = true;
randomIntervalSec = 1800;
};
bar = {
barType = "simple";
position = "bottom";
density = "default";
fontScale = 1.2;
widgetSpacing = 10;
widgets = {
left = lib.singleton {
id = "Clock";
formatHorizontal = "HH:mm ddd, d MMM";
tooltipFormat = "yyyy-MM-dd HH:mm";
};
center = lib.singleton {
id = "Workspace";
};
right = [
{ id = "Tray"; }
{
id = "NotificationHistory";
hideWhenZeroUnread = true;
}
{ id = "Volume"; }
(lib.optionalAttrs osConfig.custom.networking.underlay.wireless.enable { id = "Network"; })
(lib.optionalAttrs osConfig.custom.services.bluetooth.enable { id = "Bluetooth"; })
(lib.optionalAttrs config.custom.programs.brightnessctl.enable { id = "Brightness"; })
{
id = "Battery";
displayMode = "icon-hover";
}
];
};
};
dock.enabled = false;
appLauncher = {
overviewLayer = true;
showCategories = false;
enableSessionSearch = false;
enableSettingsSearch = false;
enableWindowsSearch = false;
enableClipboardHistory = true;
};
location.name = "Darmstadt";
sessionMenu = {
largeButtonsStyle = false;
countdownDuration = 3000;
};
audio.mprisBlacklist = "firefox";
};
};
};
}