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:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
];
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
_: {
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
"electron-40.10.5"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
programs.noctalia = {
|
||||
enable = true;
|
||||
package = inputs.noctalia.packages.${system}.default;
|
||||
};
|
||||
|
||||
imports = [
|
||||
./settings
|
||||
];
|
||||
}
|
||||
# {
|
||||
# ...
|
||||
# }: {
|
||||
# programs.noctalia.settings = {
|
||||
# };
|
||||
# }
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
Binary file not shown.
@@ -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";
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -30,6 +30,7 @@
|
||||
};
|
||||
|
||||
noctalia-shell.enable = true;
|
||||
noctalia.enable = true;
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
Reference in New Issue
Block a user