Files
garandos/modules/home/noctalia-shell/plugins.nix
T
GarandPLG f4a59aefc7 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`
2026-07-17 15:08:33 +02:00

134 lines
4.3 KiB
Nix

{
lib,
config,
...
}: let
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
in {
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";
kde-connect.enable = lib.mkEnableOption "KDE Connect plugin";
screen-recorder.enable = lib.mkEnableOption "Screen-recorder plugin";
screenshot.enable = lib.mkEnableOption "Screenshot plugin";
ntfy-notifications.enable = lib.mkEnableOption "ntfy notifications plugin";
tailscale.enable = lib.mkEnableOption "Tailscale plugin";
};
config.programs.noctalia-shell = lib.mkForce {
plugins = {
sources = [
{
enabled = true;
name = "Noctalia Plugins";
url = sourceUrl;
}
];
states = {
mini-docker = lib.mkIf config.noctalia-plugins.mini-docker.enable {
enabled = true;
sourceUrl = sourceUrl;
};
timer = lib.mkIf config.noctalia-plugins.timer.enable {
enabled = true;
sourceUrl = sourceUrl;
};
keybind-cheatsheet = lib.mkIf config.noctalia-plugins.keybind-cheatsheet.enable {
enabled = true;
sourceUrl = sourceUrl;
};
kde-connect = lib.mkIf config.noctalia-plugins.kde-connect.enable {
enabled = true;
sourceUrl = sourceUrl;
};
screen-recorder = lib.mkIf config.noctalia-plugins.screen-recorder.enable {
enabled = true;
sourceUrl = sourceUrl;
};
screenshot = lib.mkIf config.noctalia-plugins.screenshot.enable {
enabled = true;
sourceUrl = sourceUrl;
};
ntfy-notifications = lib.mkIf config.noctalia-plugins.ntfy-notifications.enable {
enabled = true;
sourceUrl = sourceUrl;
};
tailscale = lib.mkIf config.noctalia-plugins.tailscale.enable {
enabled = true;
sourceUrl = sourceUrl;
};
};
version = 2;
};
pluginSettings = {
mini-docker.refreshInterval = 5000;
timer.compactMode = true;
keybind-cheatsheet = {
niriConfigPath = "~/.config/niri/config.kdl";
hyprlandConfigPath = "~/.config/hypr/hyprland.conf";
modKeyVariable = "SUPER";
windowHeight = 850;
windowWidth = 1100;
columnCount = 2;
autoHeight = true;
};
kde-connect = {
hideIfNoDeviceConnected = true;
};
screen-recorder = {
hideInactive = true;
iconColor = "none";
directory = "";
filenamePattern = "recording_yyyyMMdd_HHmmss";
frameRate = 60;
audioCodec = "aac";
videoCodec = "hevc";
quality = "ultra";
colorRange = "full";
showCursor = true;
copyToClipboard = false;
audioSource = "both";
videoSource = "portal";
resolution = "1920x1080";
replayEnabled = true;
replayDuration = 60;
customReplayDuration = 30;
replayStorage = "disk";
restorePortalSession = true;
customFrameRate = 6;
};
screenshot.mode = "region";
# ntfy-notifications = {
# serverUrl = "https://ntfy.garandplg.com";
# topics = "beszel,dockhand,jellyfin,nixos-unstable,radarr,rss-feeds,seerr,sonarr";
# authMethod = "basic";
# authToken = "";
# authUsername = ''$(cat ${config.sops.secrets."credentials/ntfy/username".path})'';
# authPassword = ''$(cat ${config.sops.secrets."credentials/ntfy/password".path})'';
# pollInterval = 30;
# enableToasts = true;
# maxMessages = 100;
# readMessageIds = [];
# };
tailscale = {
refreshInterval = 5000;
compactMode = true;
showIpAddress = false;
showPeerCount = false;
hideDisconnected = false;
hideMullvadExitNodes = true;
showSearchBar = false;
terminalCommand = "kitty";
sshUsername = "";
pingCount = 5;
defaultPeerAction = "copy-ip";
taildropEnabled = true;
taildropDownloadDir = "~/Downloads";
taildropReceiveMode = "operator";
loginServer = "https://hs.garandplg.com";
};
};
};
}