diff --git a/configuration.nix b/configuration.nix index eb1be2e..d43ff78 100644 --- a/configuration.nix +++ b/configuration.nix @@ -6,6 +6,31 @@ let andaredConnectScript = pkgs.writeShellScriptBin "andared-connect" (builtins.readFile ./andared-connect.sh); labUpdateMonitor = pkgs.writeShellScriptBin "lab-update-monitor" (builtins.readFile ./update-monitor.sh); labUpdateLauncher = pkgs.writeShellScriptBin "lab-update-launcher" (builtins.readFile ./update-launcher.sh); + # flatpak app IDs that overlap with nix-installed packages — blocked from + # being installed via Flatpak (both CLI and Discover) using a remote filter. + blockedFlatpakIds = [ + "org.chromium.Chromium" + "com.google.Chrome" + "org.mozilla.firefox" + "com.visualstudio.code" + "com.vscodium.codium" + "com.jetbrains.PyCharm-Community" + "com.jetbrains.PyCharm-Professional" + "com.jetbrains.DataGrip" + "org.kde.kdenlive" + "com.getpostman.Postman" + "org.gimp.GIMP" + "org.freecad.FreeCAD" + "org.freecadweb.FreeCAD" + "cc.arduino.IDE2" + "cc.arduino.arduinoide" + "org.wireshark.Wireshark" + "org.libreoffice.LibreOffice" + ]; + + flathubFilter = pkgs.writeText "lab-flathub.filter" ( + lib.concatMapStringsSep "\n" (id: "deny ${id}") blockedFlatpakIds + "\n" + ); labUpdateDesktop = pkgs.makeDesktopItem { name = "lab-updates"; desktopName = "Actualizaciones de la distribución"; @@ -385,7 +410,7 @@ in }; systemd.services.flatpak-flathub-user = { - description = "configura Flathub para el usuario"; + description = "configura Flathub para el usuario con filtro de apps duplicadas"; after = [ "network-online.target" ]; wants = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; @@ -393,7 +418,10 @@ in Type = "oneshot"; User = username; Environment = "HOME=/home/${username}"; - ExecStart = "${pkgs.flatpak}/bin/flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo"; }; + script = '' + ${pkgs.flatpak}/bin/flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + ${pkgs.flatpak}/bin/flatpak remote-modify --user --filter=${flathubFilter} flathub + ''; }; } diff --git a/readme.md b/readme.md index e30ba34..69cdfe2 100644 --- a/readme.md +++ b/readme.md @@ -49,3 +49,11 @@ La configuración habilita `Flatpak` y deja `Flathub` configurado automáticamen - El usuario `usuario` puede abrir `Discover`, buscar una aplicación y pulsar `Instalar`. - Las aplicaciones instaladas así quedan fuera de NixOS declarativo y se guardan en el perfil Flatpak del propio usuario. - Si se quiere revisar lo instalado por esa vía, se puede usar `flatpak list --user` o abrir la pestaña de instaladas en `Discover`. + +### protección contra duplicados + +El sistema evita que haya aplicaciones duplicadas (una instalada por Nix y otra por Flatpak) usando un **filtro nativo de Flatpak** en el remoto de Flathub: + +- Las apps que ya se instalan por Nix (Chromium, Firefox, VS Code, GIMP, LibreOffice, etc.) están bloqueadas a nivel de catálogo de Flathub. No aparecen en Discover ni se pueden instalar por CLI. +- El filtro se aplica en cada arranque mediante `flatpak remote-modify --filter=...`, así que se actualiza automáticamente cuando cambia `configuration.nix`. +- Para añadir o quitar apps bloqueadas, editar la lista `blockedFlatpakIds` en `configuration.nix`.