From 629e7b6a9e9cbd03ce5436474841a0441e9195b3 Mon Sep 17 00:00:00 2001 From: GarandPLG Date: Mon, 8 Dec 2025 21:43:17 +0100 Subject: [PATCH] Add enable XDG PWA entries and enable Signal --- hosts/Garand-Desktop/home-modules.nix | 16 +++++++++ hosts/Garand-Desktop/system-modules.nix | 1 + hosts/Garand-Laptop/home-modules.nix | 16 +++++++++ hosts/Garand-Laptop/system-modules.nix | 1 + hosts/default/home-modules.nix | 16 +++++++++ hosts/default/system-modules.nix | 1 + modules/core/packages/packages.nix | 1 + modules/home/hyprland/binds.nix | 1 + modules/home/xdg/desktop-entries.nix | 43 +++++++++++++++++++++---- 9 files changed, 90 insertions(+), 6 deletions(-) diff --git a/hosts/Garand-Desktop/home-modules.nix b/hosts/Garand-Desktop/home-modules.nix index d1a6f86..f613be2 100644 --- a/hosts/Garand-Desktop/home-modules.nix +++ b/hosts/Garand-Desktop/home-modules.nix @@ -53,4 +53,20 @@ _: { Learning tools */ anki.enable = true; # Anki: spaced‑repetition flashcard program + + /* + XDG desktop entries (PWA) + */ + xdgDesktopEntries = { + enable = true; # Enable XDG desktop entries + entries = { + messenger.enable = true; # Messenger: Facebook Messenger + mastodon.enable = true; # Mastodon: a decentralized social network + garandcloud.enable = true; # GarandCloud: my Nextcloud instance + chatgpt.enable = true; # ChatGPT: a large language model + claude.enable = true; # Claude: a large language model + glance.enable = true; # Glance: my home server dashboard + microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool + }; + }; } diff --git a/hosts/Garand-Desktop/system-modules.nix b/hosts/Garand-Desktop/system-modules.nix index 72ffe37..8ec5e78 100644 --- a/hosts/Garand-Desktop/system-modules.nix +++ b/hosts/Garand-Desktop/system-modules.nix @@ -47,6 +47,7 @@ _: { mattermost.enable = true; # Mattermost: open‑source Slack alternative slack.enable = true; # Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client + signal.enable = true; # Signal: secure messaging app /* Productivity / Knowledge Management diff --git a/hosts/Garand-Laptop/home-modules.nix b/hosts/Garand-Laptop/home-modules.nix index d1a6f86..f613be2 100644 --- a/hosts/Garand-Laptop/home-modules.nix +++ b/hosts/Garand-Laptop/home-modules.nix @@ -53,4 +53,20 @@ _: { Learning tools */ anki.enable = true; # Anki: spaced‑repetition flashcard program + + /* + XDG desktop entries (PWA) + */ + xdgDesktopEntries = { + enable = true; # Enable XDG desktop entries + entries = { + messenger.enable = true; # Messenger: Facebook Messenger + mastodon.enable = true; # Mastodon: a decentralized social network + garandcloud.enable = true; # GarandCloud: my Nextcloud instance + chatgpt.enable = true; # ChatGPT: a large language model + claude.enable = true; # Claude: a large language model + glance.enable = true; # Glance: my home server dashboard + microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool + }; + }; } diff --git a/hosts/Garand-Laptop/system-modules.nix b/hosts/Garand-Laptop/system-modules.nix index 72ffe37..8ec5e78 100644 --- a/hosts/Garand-Laptop/system-modules.nix +++ b/hosts/Garand-Laptop/system-modules.nix @@ -47,6 +47,7 @@ _: { mattermost.enable = true; # Mattermost: open‑source Slack alternative slack.enable = true; # Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client + signal.enable = true; # Signal: secure messaging app /* Productivity / Knowledge Management diff --git a/hosts/default/home-modules.nix b/hosts/default/home-modules.nix index d1a6f86..f613be2 100644 --- a/hosts/default/home-modules.nix +++ b/hosts/default/home-modules.nix @@ -53,4 +53,20 @@ _: { Learning tools */ anki.enable = true; # Anki: spaced‑repetition flashcard program + + /* + XDG desktop entries (PWA) + */ + xdgDesktopEntries = { + enable = true; # Enable XDG desktop entries + entries = { + messenger.enable = true; # Messenger: Facebook Messenger + mastodon.enable = true; # Mastodon: a decentralized social network + garandcloud.enable = true; # GarandCloud: my Nextcloud instance + chatgpt.enable = true; # ChatGPT: a large language model + claude.enable = true; # Claude: a large language model + glance.enable = true; # Glance: my home server dashboard + microsoftTeams.enable = true; # Microsoft Teams: a collaboration tool + }; + }; } diff --git a/hosts/default/system-modules.nix b/hosts/default/system-modules.nix index 72ffe37..8ec5e78 100644 --- a/hosts/default/system-modules.nix +++ b/hosts/default/system-modules.nix @@ -47,6 +47,7 @@ _: { mattermost.enable = true; # Mattermost: open‑source Slack alternative slack.enable = true; # Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client + signal.enable = true; # Signal: secure messaging app /* Productivity / Knowledge Management diff --git a/modules/core/packages/packages.nix b/modules/core/packages/packages.nix index 8e991f2..e7dca1e 100644 --- a/modules/core/packages/packages.nix +++ b/modules/core/packages/packages.nix @@ -42,6 +42,7 @@ lazydocker = lazydocker; distrobox = [distrobox pkgs.boxbuddy]; winboat = [winboat freerdp]; + signal = signal-desktop; }; in { imports = builtins.attrValues (builtins.mapAttrs mkPackage packages); diff --git a/modules/home/hyprland/binds.nix b/modules/home/hyprland/binds.nix index ce69f75..f9f1271 100644 --- a/modules/home/hyprland/binds.nix +++ b/modules/home/hyprland/binds.nix @@ -56,6 +56,7 @@ in { # ============================================================================= "$modifier CONTROL, G, exec, gimp" "$modifier CONTROL, M, exec, mattermost-desktop" + "$modifier CONTROL, S, exec, signal-desktop" # ============================================================================= # NARZĘDZIA SYSTEMOWE diff --git a/modules/home/xdg/desktop-entries.nix b/modules/home/xdg/desktop-entries.nix index 2b6be0b..a9ee96f 100644 --- a/modules/home/xdg/desktop-entries.nix +++ b/modules/home/xdg/desktop-entries.nix @@ -1,4 +1,9 @@ -{pkgs, ...}: let +{ + pkgs, + lib, + config, + ... +}: let fetchIcon = url: sha256: pkgs.fetchurl { inherit url sha256; @@ -66,9 +71,35 @@ } ]; in { - xdg.desktopEntries = builtins.listToAttrs (builtins.map (app: { - name = app.name; - value = makeEntry app; - }) - apps); + options.xdgDesktopEntries = { + enable = lib.mkEnableOption "PWA Apps"; + entries = builtins.listToAttrs ( + builtins.map (app: { + name = app.name; + value = { + enable = lib.mkEnableOption "Enable ${app.displayName} PWA"; + }; + }) + apps + ); + }; + + config.xdg.desktopEntries = lib.mkIf config.xdgDesktopEntries.enable ( + builtins.listToAttrs ( + builtins.concatMap ( + app: let + entryConfig = config.xdgDesktopEntries.entries.${app.name}; + in + if entryConfig.enable + then [ + { + name = app.name; + value = makeEntry app; + } + ] + else [] + ) + apps + ) + ); }