Commit 8adf831

HPCesia <me@hpcesia.com>
2026-06-21 09:22:49
Add flatpak for desktop
1 parent c377eaf
Changed files (4)
modules
desktop
users
hpcesia
modules/desktop/flatpak.nix
@@ -0,0 +1,58 @@
+{
+  inputs,
+  lib,
+  ...
+}: {
+  flake-file.inputs.nix-flatpak = {
+    url = "github:gmodena/nix-flatpak";
+  };
+
+  den.aspects.desktop.flatpak = {
+    settings = {
+      packages = lib.mkOption {
+        type = lib.types.listOf (lib.types.either lib.types.str lib.types.attr);
+        default = [];
+      };
+    };
+
+    cache = {
+      directories = [
+        "/var/lib/flatpak"
+      ];
+    };
+
+    persistHome = {
+      directories = [
+        ".var" # Flatpak app data
+      ];
+    };
+
+    cacheHome = {config, ...}: {
+      directories = [
+        "${config.xdg.dataHome}/flatpak"
+      ];
+    };
+
+    nixos = {host, ...}: {
+      imports = [inputs.nix-flatpak.nixosModules.nix-flatpak];
+
+      services.flatpak = {
+        enable = true;
+
+        inherit (host.settings.desktop.flatpak) packages;
+      };
+    };
+
+    homeManager = {user, ...}: {
+      imports = [inputs.nix-flatpak.homeManagerModules.nix-flatpak];
+
+      services.flatpak = {
+        enable = true;
+
+        packages = user.system.settings.desktop.flatpak.packages or [];
+
+        overrides.settings = user.system.settings.desktop.flatpak.overrides or {};
+      };
+    };
+  };
+}
modules/users/hpcesia/default.nix
@@ -22,6 +22,7 @@
           desktop.browser.floorp.mkDefault
           desktop.env.shell.noctalia
           desktop.env.wm.niri
+          desktop.flatpak
           desktop.gnupg
           desktop.terminal.foot
         ]));
@@ -49,7 +50,23 @@
       hashedPasswordAged = ./hashed-password.age;
       themes.theme = "catppuccin";
       settings = {
-        desktop.terminal.default = "foot";
+        desktop = {
+          terminal.default = "foot";
+          flatpak = {
+            packages = [
+              "com.qq.QQ"
+              "org.mozilla.thunderbird"
+            ];
+            overrides = {
+              "org.mozilla.thunderbird".Context = {
+                sockets = [
+                  "gpg-agent" # Expose GPG agent
+                  "pcsc" # Expose smart cards (i.e. YubiKey)
+                ];
+              };
+            };
+          };
+        };
       };
     };
   };
flake.lock
@@ -214,6 +214,21 @@
         "type": "github"
       }
     },
+    "nix-flatpak": {
+      "locked": {
+        "lastModified": 1780908363,
+        "narHash": "sha256-llGS4y3Qh1eUkli3/Y2VY9FV3GOUKFZR1E2BDftt45Q=",
+        "owner": "gmodena",
+        "repo": "nix-flatpak",
+        "rev": "1df08625f0f8c7d6e300a0e5df7955bbb877d809",
+        "type": "github"
+      },
+      "original": {
+        "owner": "gmodena",
+        "repo": "nix-flatpak",
+        "type": "github"
+      }
+    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1780243769,
@@ -327,6 +342,7 @@
         "home-manager": "home-manager",
         "impermanence": "impermanence",
         "import-tree": "import-tree",
+        "nix-flatpak": "nix-flatpak",
         "nixpkgs": "nixpkgs",
         "noctalia": "noctalia",
         "nur": "nur",
flake.nix
@@ -33,6 +33,7 @@
       };
     };
     import-tree.url = "github:denful/import-tree";
+    nix-flatpak.url = "github:gmodena/nix-flatpak";
     nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
     noctalia = {
       url = "github:noctalia-dev/noctalia";