Commit 4969862

HPCesia <me@hpcesia.com>
2025-10-17 06:36:13
feat: add vicinae
1 parent 60b0e02
Changed files (7)
modules
desktop
desktop-environment
modules/desktop/desktop-environment/discrete/shell/noctalia/keybindings/niri.nix
@@ -8,7 +8,7 @@
       programs.niri.settings.binds = with config.lib.niri.actions; let
         noctalia = spawn "noctalia-shell" "ipc" "call";
       in {
-        "Mod+Space" = {
+        "Mod+Space" = lib.mkIf (!(config.services.vicinae.enable or false)) {
           action = noctalia "launcher" "toggle";
           hotkey-overlay.title = "Toggle Application Launcher";
         };
modules/desktop/desktop-environment/discrete/shell/noctalia/default.nix
@@ -20,7 +20,7 @@
         };
         appLauncher = {
           backgroundOpacity = config.stylix.opacity.popups;
-          enableClipboardHistory = true;
+          enableClipboardHistory = false;
           terminalCommand = "ghostty -e";
         };
         location.name = "重庆, 中国";
modules/desktop/desktop-environment/discrete/wm/niri/keybinding.nix
@@ -1,4 +1,4 @@
-{
+{lib, ...}: {
   flake.modules.homeManager.wm-niri = {config, ...}: {
     programs.niri.settings.binds = with config.lib.niri.actions; {
       # Mod-Shift-/, which is usually the same as Mod-?,
@@ -15,6 +15,11 @@
 
       "Mod+Grave".action = spawn "ghostty";
 
+      "Mod+Space" = lib.mkIf (config.services.vicinae.enable or false) {
+        action = spawn "vicinae" "toggle";
+        hotkey-overlay.title = "Toggle Application Launcher";
+      };
+
       # === Window and Column Actions ===
       "Mod+Q".action = close-window;
 
modules/desktop/desktop-environment/discrete/clipboard.nix
@@ -2,9 +2,10 @@
   flake.modules.homeManager.de-discrete = {pkgs, ...}: {
     home.packages = [pkgs.wl-clipboard];
 
-    services.cliphist = {
-      enable = true;
-      allowImages = true;
-    };
+    # Use vicinae's clipboard store instead.
+    # services.cliphist = {
+    #   enable = true;
+    #   allowImages = true;
+    # };
   };
 }
modules/desktop/desktop-environment/discrete/vicinae.nix
@@ -0,0 +1,46 @@
+{inputs, ...}: {
+  flake.modules.homeManager.de-discrete = {config, ...}: {
+    imports = [inputs.vicinae.homeManagerModules.default];
+
+    services.vicinae = {
+      enable = true;
+      autoStart = true;
+      settings = {
+        closeOnFocusLoss = true;
+        faviconService = "twenty";
+        popToRootOnClose = true;
+        font = {
+          normal = config.stylix.fonts.sansSerif.name;
+          size = config.stylix.fonts.sizes.popups; # Same to stylix behaviour.
+        };
+        theme = {
+          iconTheme = config.stylix.iconTheme.${config.lib.stylix.colors.variant};
+          name = "stylix.json";
+        };
+        window = {
+          opacity = config.stylix.opacity.popups;
+          rounding = 15;
+        };
+      };
+    };
+
+    xdg.configFile."vicinae/themes/stylix.json".text = builtins.toJSON {
+      version = "1.0.0";
+      appearance = config.lib.stylix.colors.variant;
+      name = "Stylix";
+      description = "Color scheme generated by stylix";
+      palette = with config.lib.stylix.colors.withHashtag; {
+        background = base00;
+        foreground = base05;
+        blue = base0D;
+        green = base0B;
+        magenta = base0E;
+        orange = base09;
+        purple = base17;
+        red = base08;
+        yellow = base0A;
+        cyan = base0C;
+      };
+    };
+  };
+}
flake.lock
@@ -291,6 +291,24 @@
         "type": "github"
       }
     },
+    "flake-utils_2": {
+      "inputs": {
+        "systems": "systems_5"
+      },
+      "locked": {
+        "lastModified": 1731533236,
+        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
     "fromYaml": {
       "flake": false,
       "locked": {
@@ -754,6 +772,7 @@
         "silentSDDM": "silentSDDM",
         "stylix": "stylix",
         "vaultix": "vaultix",
+        "vicinae": "vicinae",
         "wallpapers": "wallpapers"
       }
     },
@@ -913,6 +932,21 @@
         "type": "github"
       }
     },
+    "systems_5": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    },
     "tinted-foot": {
       "flake": false,
       "locked": {
@@ -1051,6 +1085,27 @@
         "type": "github"
       }
     },
+    "vicinae": {
+      "inputs": {
+        "flake-utils": "flake-utils_2",
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1760627979,
+        "narHash": "sha256-PwBlZK87hnEjcWoDq7NXAdRWhLkT6981NU/DnMRljqs=",
+        "owner": "vicinaehq",
+        "repo": "vicinae",
+        "rev": "b7c4d28e0d2b696e803ea35a1496aeba006dfdf1",
+        "type": "github"
+      },
+      "original": {
+        "owner": "vicinaehq",
+        "repo": "vicinae",
+        "type": "github"
+      }
+    },
     "wallpapers": {
       "flake": false,
       "locked": {
flake.nix
@@ -50,6 +50,9 @@
     vaultix.url = "github:milieuim/vaultix";
     vaultix.inputs.nixpkgs.follows = "nixpkgs";
 
+    vicinae.url = "github:vicinaehq/vicinae";
+    vicinae.inputs.nixpkgs.follows = "nixpkgs";
+
     # == Personal inputs ==
     nixos-logo.url = "git+https://repo.hpcesia.com/HPCesia/nixos-logo?shallow=1";
     nixos-logo.flake = false;