Rename noctalia-shell to noctalia and add support

* Rename `nooctalia-plugins` to `noctalia-plugins` in host modules and
  plugin definitions
* Update Hyprland keybindings and exec-once to use the new `noctalia`
  commands
* Add `stylixImage` option and enable pointer cursor in
  `modules/core/user.nix`
* Introduce `modules/home/nixpkgs.nix` to allow unfree packages and
  insecure Electron
* Add full Noctalia configuration module with settings for audio,
  bar, calendar, location, notifications, plugins, shell, wallpaper,
  and widgets
* Enable `noctalia` in `modules/home/stylix.nix` and replace legacy
  `noctalia-shell` imports in `modules/home/default.nix`
This commit is contained in:
2026-07-17 15:08:33 +02:00
parent 1d0f2a29f3
commit f4a59aefc7
25 changed files with 311 additions and 178 deletions
+3 -1
View File
@@ -7,7 +7,8 @@ _: {
./hyprland
./kitty
./librewolf
./noctalia-shell
./noctalia
# ./noctalia-shell
./obsidian
./scripts
./vscodium
@@ -27,6 +28,7 @@ _: {
./lutris.nix
./mangohud.nix
./nextcloud.nix
./nixpkgs.nix
./obs-studio.nix
./ollama.nix
./onlyoffice.nix
+27 -27
View File
@@ -10,8 +10,8 @@
"SUPER, B, exec, bitwarden #\"Password manager\""
"SUPER, C, exec, chromium #\"Ungoogled Chromium\""
"SUPER, D, exec, vesktop #\"Discord client\""
"SUPER, E, exec, noctalia-shell ipc call launcher emoji #\"Emoji picker\""
"SUPER, Escape, exec, noctalia-shell ipc call lockScreen lock #\"Lock the screen\""
"SUPER, E, exec, noctalia msg panel-toggle launcher \"/emo \" #\"Emoji picker\""
"SUPER, Escape, exec, noctalia msg session lock #\"Lock the screen\""
"SUPER, G, exec, affinity-v3 #\"Graphics editor\""
"SUPER, H, exec, helium #\"Helium web browser\""
"SUPER, I, exec, iotas #\"Note-taking app\""
@@ -22,7 +22,7 @@
"SUPER, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop #\"GarandCloud client\""
"SUPER, O, exec, onlyoffice-desktopeditors #\"Office suite\""
"SUPER, P, exec, plex-desktop #\"Plex media player\""
"SUPER, R, exec, noctalia-shell ipc call plugin:screen-recorder saveReplay #\"Save Replay\""
"SUPER, R, exec, noctalia msg plugin noctalia/screen_recorder:service all replay-save #\"Save Replay\""
"SUPER, Return, exec, kitty #\"Kitty terminal\""
"SUPER, S, exec, steam #\"Steam Game launcher\""
"SUPER, T, exec, thunar #\"File manager\""
@@ -34,43 +34,43 @@
shiftBinds = [
"SUPER SHIFT, C, exec, dex ${desktopEntriesPath}/claude.desktop #\"Claude AI chat\""
"SUPER SHIFT, E, exec, evolution #\"Personal information management application\""
"SUPER SHIFT, Escape, exec, noctalia-shell ipc call sessionMenu toggle #\"Open Session Menu\""
"SUPER SHIFT, Escape, exec, noctalia msg panel-toggle session #\"Open Session Menu\""
"SUPER SHIFT, G, exec, dex ${desktopEntriesPath}/chatgpt.desktop #\"ChatGPT AI chat\""
"SUPER SHIFT, J, exec, dex ${desktopEntriesPath}/jellyfinClient.desktop #\"Jellyfin PWA\""
"SUPER SHIFT, K, exec, noctalia-shell ipc call plugin:keybind-cheatsheet toggle #\"Toggle keybind cheatsheet\""
# "SUPER SHIFT, K, exec, noctalia-shell ipc call plugin:keybind-cheatsheet toggle #\"Toggle keybind cheatsheet\""
"SUPER SHIFT, M, exec, plexamp #\"Music player for Plex\""
"SUPER SHIFT, N, exec, nextcloud #\"Nextcloud desktop sync client\""
"SUPER SHIFT, O, exec, obs #\"Open Broadcaster Software\""
"SUPER SHIFT, P, exec, noctalia-shell ipc call volume togglePanel #\"Toggle volume control panel\""
"SUPER SHIFT, R, exec, restart-noctalia #\"Restart Noctalia shell\""
"SUPER SHIFT, Return, exec, noctalia-shell ipc call launcher toggle #\"Toggle application launcher\""
"SUPER SHIFT, S, exec, noctalia-shell ipc call plugin:screenshot takeScreenshot region #\"Take screenshot\""
"SUPER SHIFT, P, exec, pavucontrol #\"Toggle volume control panel\""
"SUPER SHIFT, R, exec, noctalia msg config-reload #\"Restart Noctalia shell\""
"SUPER SHIFT, Return, exec, noctalia msg panel-toggle launcher #\"Toggle application launcher\""
"SUPER SHIFT, S, exec, noctalia msg screenshot-region #\"Take screenshot\""
"SUPER SHIFT, T, exec, tutanota-desktop #\"Tutanota encrypted email client\""
"SUPER SHIFT, V, exec, noctalia-shell ipc call launcher clipboard #\"Open clipboard manager\""
"SUPER SHIFT, V, exec, noctalia msg panel-toggle clipboard #\"Open clipboard manager\""
];
altBinds = [
"SUPER ALT, C, exec, noctalia-shell ipc call controlCenter toggle #\"Toggle control center\""
"SUPER ALT, C, exec, noctalia msg panel-toggle control-center [tab] #\"Toggle control center\""
"SUPER ALT, F, exec, finamp #\"Jellyfin music client\""
"SUPER ALT, G, exec, dex ${desktopEntriesPath}/glance.desktop #\"Glance server panel\""
"SUPER ALT, K, exec, kdenlive #\"Video editing software\""
"SUPER ALT, M, exec, dex ${desktopEntriesPath}/mastodon.desktop #\"Mastodon social network client\""
"SUPER ALT, N, exec, noctalia-shell ipc call plugin:ntfy-notifications toggle #\"Open ntfy panel\""
# "SUPER ALT, N, exec, noctalia-shell ipc call plugin:ntfy-notifications toggle #\"Open ntfy panel\""
"SUPER ALT, O, exec, obsidian #\"Notes app\""
"SUPER ALT, P, exec, noctalia-shell ipc call settings toggle #\"Open settings panel\""
"SUPER ALT, R, exec, noctalia-shell ipc call plugin:screen-recorder toggleReplay #\"Toggle Replay\""
"SUPER ALT, P, exec, noctalia msg settings-open #\"Open settings panel\""
"SUPER ALT, R, exec, noctalia msg plugin noctalia/screen_recorder:service all replay-toggle #\"Toggle Replay\""
"SUPER ALT, S, exec, slack #\"Slack team communication tool\""
"SUPER ALT, T, exec, gedit #\"GNOME text editor\""
"SUPER ALT, W, exec, noctalia-shell ipc call wallpaper toggle #\"Toggle wallpaper\""
"SUPER ALT, W, exec, noctalia msg panel-toggle wallpaper #\"Toggle wallpaper\""
];
controlBinds = [
"SUPER CONTROL, C, exec, noctalia-shell ipc call powerProfile cycle #\"Cycle through power profiles\""
"SUPER CONTROL, C, exec, noctalia msg power-cycle #\"Cycle through power profiles\""
"SUPER CONTROL, G, exec, gimp #\"GNU Image Manipulation Program\""
"SUPER CONTROL, M, exec, mattermost-desktop #\"Mattermost team chat client\""
"SUPER CONTROL, N, exec, noctalia-shell ipc call plugin:ntfy-notifications refresh #\"Refresh ntfy\""
# "SUPER CONTROL, N, exec, noctalia-shell ipc call plugin:ntfy-notifications refresh #\"Refresh ntfy\""
"SUPER CONTROL, O, exec, dex ${desktopEntriesPath}/openWebUI.desktop #\"My own AI chat interface\""
"SUPER CONTROL, R, exec, noctalia-shell ipc call plugin:screen-recorder toggle #\"Toogle screen recording\""
"SUPER CONTROL, R, exec, noctalia msg plugin noctalia/screen_recorder:service all toggle #\"Toogle screen recording\""
"SUPER CONTROL, S, exec, signal-desktop #\"Signal encrypted messaging\""
"SUPER CONTROL, T, exec, tsukimi #\"A simple Emby/Jellyfin Client\""
"SUPER CONTROL, P, exec, hyprpicker -a #\"Pick color from screen\""
@@ -135,15 +135,15 @@
];
systemMediaAndControllsBinds = [
",XF86AudioLowerVolume, exec, noctalia-shell ipc call volume decrease #\"Lower system volume\""
",XF86AudioMute, exec, noctalia-shell ipc call volume muteOutput #\"Mute audio output\""
",XF86AudioMicMute, exec, noctalia-shell ipc call volume muteInput #\"Mute audio input\""
",XF86AudioNext, exec, noctalia-shell ipc call media next #\"Next media track\""
",XF86AudioPlay, exec, noctalia-shell ipc call media playPause #\"Play/Pause media\""
",XF86AudioPrev, exec, noctalia-shell ipc call media previous #\"Previous media track\""
",XF86AudioRaiseVolume, exec, noctalia-shell ipc call volume increase #\"Raise system volume\""
",XF86MonBrightnessDown, exec, noctalia-shell ipc call brightness decrease #\"Decrease screen brightness\""
",XF86MonBrightnessUp, exec, noctalia-shell ipc call brightness increase #\"Increase screen brightness\""
",XF86AudioLowerVolume, exec, noctalia msg volume-down #\"Lower system volume\""
",XF86AudioMute, exec, noctalia msg volume-mute #\"Mute audio output\""
",XF86AudioMicMute, exec, noctalia msg mic-mute #\"Mute audio input\""
",XF86AudioNext, exec, noctalia msg media next #\"Next media track\""
",XF86AudioPlay, exec, noctalia msg media toggle #\"Play/Pause media\""
",XF86AudioPrev, exec, noctalia msg media previous #\"Previous media track\""
",XF86AudioRaiseVolume, exec, noctalia msg volume-up #\"Raise system volume\""
",XF86MonBrightnessDown, exec, noctalia msg brightness-down #\"Decrease screen brightness\""
",XF86MonBrightnessUp, exec, noctalia msg brightness-up #\"Increase screen brightness\""
];
mkBlock = header: lines:
+1 -1
View File
@@ -3,7 +3,7 @@ _: {
"dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user start hyprpolkitagent"
"noctalia-shell"
"noctalia"
"wl-paste --type text --watch cliphist store" # Saves text
"wl-paste --type image --watch cliphist store" # Saves images
];
+8
View File
@@ -0,0 +1,8 @@
_: {
nixpkgs.config = {
allowUnfree = true;
permittedInsecurePackages = [
"electron-40.10.5"
];
};
}
+9 -9
View File
@@ -5,7 +5,7 @@
}: let
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
in {
options.nooctalia-plugins = {
options.noctalia-plugins = {
mini-docker.enable = lib.mkEnableOption "Mini docker plugin";
timer.enable = lib.mkEnableOption "Timer plugin";
keybind-cheatsheet.enable = lib.mkEnableOption "Keybind cheatsheet plugin";
@@ -26,35 +26,35 @@ in {
}
];
states = {
mini-docker = lib.mkIf config.nooctalia-plugins.mini-docker.enable {
mini-docker = lib.mkIf config.noctalia-plugins.mini-docker.enable {
enabled = true;
sourceUrl = sourceUrl;
};
timer = lib.mkIf config.nooctalia-plugins.timer.enable {
timer = lib.mkIf config.noctalia-plugins.timer.enable {
enabled = true;
sourceUrl = sourceUrl;
};
keybind-cheatsheet = lib.mkIf config.nooctalia-plugins.keybind-cheatsheet.enable {
keybind-cheatsheet = lib.mkIf config.noctalia-plugins.keybind-cheatsheet.enable {
enabled = true;
sourceUrl = sourceUrl;
};
kde-connect = lib.mkIf config.nooctalia-plugins.kde-connect.enable {
kde-connect = lib.mkIf config.noctalia-plugins.kde-connect.enable {
enabled = true;
sourceUrl = sourceUrl;
};
screen-recorder = lib.mkIf config.nooctalia-plugins.screen-recorder.enable {
screen-recorder = lib.mkIf config.noctalia-plugins.screen-recorder.enable {
enabled = true;
sourceUrl = sourceUrl;
};
screenshot = lib.mkIf config.nooctalia-plugins.screenshot.enable {
screenshot = lib.mkIf config.noctalia-plugins.screenshot.enable {
enabled = true;
sourceUrl = sourceUrl;
};
ntfy-notifications = lib.mkIf config.nooctalia-plugins.ntfy-notifications.enable {
ntfy-notifications = lib.mkIf config.noctalia-plugins.ntfy-notifications.enable {
enabled = true;
sourceUrl = sourceUrl;
};
tailscale = lib.mkIf config.nooctalia-plugins.tailscale.enable {
tailscale = lib.mkIf config.noctalia-plugins.tailscale.enable {
enabled = true;
sourceUrl = sourceUrl;
};
+21
View File
@@ -0,0 +1,21 @@
{
inputs,
system,
...
}: {
programs.noctalia = {
enable = true;
package = inputs.noctalia.packages.${system}.default;
};
imports = [
./settings
];
}
# {
# ...
# }: {
# programs.noctalia.settings = {
# };
# }
+8
View File
@@ -0,0 +1,8 @@
{username, ...}: {
programs.noctalia.settings.audio = {
enable_overdrive = true;
enable_sounds = true;
notification_sound = "/home/${username}/garandos/modules/home/noctalia/settings/notification/payday-2-new-objective-sound-effect.wav";
sound_volume = 0.1;
};
}
+33
View File
@@ -0,0 +1,33 @@
_: {
programs.noctalia.settings.bar = {
enabled = true;
background_opacity = 0.0;
widget_spacing = 10;
margin_ends = 0;
scale = 0.95;
font_family = "FiraCode Nerd Font";
start = [
"launcher"
"spacer_2"
"clock"
"spacer_3"
"cpu"
"ram"
"network_rx"
"network_tx"
"sysmon"
];
center = ["workspaces"];
end = [
"tray"
"notifications"
"bluetooth"
"battery"
"recorder"
"volume"
"network"
"control-center"
];
};
}
@@ -0,0 +1,12 @@
{gitEmail, ...}: {
programs.noctalia.settings.calendar = {
enabled = true;
account."home_nextcloud" = {
name = "Kalendarz";
provider = "custom";
server_url = "https://nextcloud.garandplg.com/remote.php/dav";
type = "caldav";
username = "${gitEmail}";
};
};
}
@@ -0,0 +1,13 @@
_: {
imports = [
./notification
./plugins
./audio.nix
./bar.nix
./calendar.nix
./location.nix
./shell.nix
./wallpaper.nix
./widget.nix
];
}
@@ -0,0 +1,6 @@
{location, ...}: {
programs.noctalia.settings.location = {
auto_locate = false;
address = "${location}";
};
}
@@ -0,0 +1,7 @@
_: {
programs.noctalia.settings.notification = {
enable_daemon = true;
show_app_name = true;
show_actions = true;
};
}
@@ -0,0 +1,9 @@
_: {
programs.noctalia.settings.plugins = {
enabled = ["noctalia/timer" "noctalia/screen_recorder"];
};
imports = [
./screen-recorder.nix
];
}
@@ -0,0 +1,15 @@
_: {
programs.noctalia.settings.plugin_settings."noctalia/screen_recorder" = {
audio_codec = "flac";
audio_source = "both";
color_range = "full";
hide_inactive = true;
quality = "ultra";
replay_duration = 60;
replay_enabled = true;
replay_storage = "disk";
resolution = "1920x1080";
video_codec = "hevc";
video_source = "focused";
};
}
+14
View File
@@ -0,0 +1,14 @@
{username, ...}: {
programs.noctalia.settings.shell = {
app_icon_colorize = true;
avatar_path = "/home/${username}/garandos/modules/home/hyprland/face.jpg";
corner_radius_scale = 2.0;
lang = "pl";
launch_apps_as_systemd_services = true;
screen_time_enabled = true;
time_format = "{:%H:%M:%S}";
panel.open_near_click_control_center = true;
screen_corners.enabled = true;
screenshot.confirm_region = true;
};
}
@@ -0,0 +1,12 @@
{
username,
stylixImage,
...
}: let
wallpapersPath = "/home/${username}/Pictures/Wallpapers";
in {
programs.noctalia.settings = {
lockscreen.wallpaper = "${wallpapersPath}/${stylixImage}";
wallpaper.enabled = true;
};
}
+50
View File
@@ -0,0 +1,50 @@
{username, ...}: {
programs.noctalia.settings.widget = {
battery.display_mode = "graphic";
bluetooth.hide_when_no_connected_device = true;
clock.format = "{:%H:%M:%S}";
control-center = {
custom_image = "/home/${username}/garandos/GarandOS.svg";
scale = 1.3;
};
cpu.display = "text";
launcher.glyph = "rocket";
media.title_scroll = "on_hover";
network.show_label = false;
network_rx = {
display = "text";
network_speed_compact = true;
};
network_tx = {
display = "text";
network_speed_compact = true;
};
ram.display = "text";
recorder.type = "noctalia/screen_recorder:recorder";
spacer_2.type = "spacer";
spacer_3.type = "spacer";
sysmon = {
display = "text";
path = "/home";
stat = "disk_pct";
};
tray.hidden = ["nm-applet" "Easy Effects"];
workspaces.scale = 1.1;
};
}
+1
View File
@@ -30,6 +30,7 @@
};
noctalia-shell.enable = true;
noctalia.enable = true;
gtk = {
enable = true;