vicinae, other tweaks

This commit is contained in:
Reid 2026-03-22 16:59:30 -07:00
parent 8cc93daddc
commit 8b022298e2
Signed by: reidlab
GPG key ID: DAF5EAF6665839FD
13 changed files with 254 additions and 43 deletions

View file

@ -14,6 +14,10 @@ in {
] ]
++ (mapModulesRec' (toString ./modules) import); ++ (mapModulesRec' (toString ./modules) import);
hm.imports = [
inputs.vicinae.homeManagerModules.default
];
system.stateVersion = "23.11"; system.stateVersion = "23.11";
system.configurationRevision = with inputs; mkIf (self ? rev) self.rev; system.configurationRevision = with inputs; mkIf (self ? rev) self.rev;
hm.home.stateVersion = config.system.stateVersion; hm.home.stateVersion = config.system.stateVersion;

114
flake.lock generated
View file

@ -535,6 +535,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": {
"locked": {
"lastModified": 1772542754,
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8c809a146a140c5c8806f13399592dbcb1bb5dc4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"rofi-catppuccin": { "rofi-catppuccin": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -565,6 +581,8 @@
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_4",
"rofi-catppuccin": "rofi-catppuccin", "rofi-catppuccin": "rofi-catppuccin",
"systems": "systems_3", "systems": "systems_3",
"vicinae": "vicinae",
"vicinae-extensions": "vicinae-extensions",
"waybar-catppuccin": "waybar-catppuccin" "waybar-catppuccin": "waybar-catppuccin"
} }
}, },
@ -613,6 +631,102 @@
"type": "github" "type": "github"
} }
}, },
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"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"
}
},
"vicinae": {
"inputs": {
"nixpkgs": "nixpkgs_5",
"systems": "systems_4"
},
"locked": {
"lastModified": 1774140862,
"narHash": "sha256-OQC0RntH2eeSGYGnG5C8kdKxnJIi+KYh7usLMoBVYec=",
"owner": "vicinaehq",
"repo": "vicinae",
"rev": "9076d4cba5bcade305b7e78cd68759ad2b34a5a3",
"type": "github"
},
"original": {
"owner": "vicinaehq",
"repo": "vicinae",
"type": "github"
}
},
"vicinae-extensions": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_5",
"vicinae": "vicinae_2"
},
"locked": {
"lastModified": 1773786526,
"narHash": "sha256-GVIbXYiA506LV0cEsG1AA4vTwDJq9R6v6lFFs8z7knY=",
"owner": "vicinaehq",
"repo": "extensions",
"rev": "50233dff9dfc70fc6b39c2387687e5661b09f005",
"type": "github"
},
"original": {
"owner": "vicinaehq",
"repo": "extensions",
"type": "github"
}
},
"vicinae_2": {
"inputs": {
"nixpkgs": [
"vicinae-extensions",
"nixpkgs"
],
"systems": [
"vicinae-extensions",
"systems"
]
},
"locked": {
"lastModified": 1768856963,
"narHash": "sha256-u5bWDuwk6oieTnvm1YjNotcYK8iJSddH5+S68+X4TSc=",
"owner": "vicinaehq",
"repo": "vicinae",
"rev": "934bc0ad47be6dbd6498a0dac655c4613fd0ab27",
"type": "github"
},
"original": {
"owner": "vicinaehq",
"repo": "vicinae",
"type": "github"
}
},
"waybar-catppuccin": { "waybar-catppuccin": {
"flake": false, "flake": false,
"locked": { "locked": {

View file

@ -16,6 +16,10 @@
niri.url = "github:sodiboo/niri-flake"; niri.url = "github:sodiboo/niri-flake";
vicinae.url = "github:vicinaehq/vicinae";
vicinae-extensions.url = "github:vicinaehq/extensions";
vicinae-extensions.inputs.nixpkgs.follows = "nixpkgs";
hyprlock.url = "github:hyprwm/hyprlock"; hyprlock.url = "github:hyprwm/hyprlock";
hyprlock.inputs.nixpkgs.follows = "nixpkgs"; hyprlock.inputs.nixpkgs.follows = "nixpkgs";
hypridle.url = "github:hyprwm/hypridle"; hypridle.url = "github:hyprwm/hypridle";

View file

@ -39,6 +39,7 @@
print.enable = true; print.enable = true;
pointer.enable = true; pointer.enable = true;
tablet.enable = true; tablet.enable = true;
networking.enable = true;
}; };
dev = { dev = {
enable = true; enable = true;
@ -63,8 +64,9 @@
batsignal.enable = true; batsignal.enable = true;
wob.enable = true; wob.enable = true;
gammastep.enable = true; gammastep.enable = true;
cliphist.enable = true; # cliphist.enable = true;
wl-clip-persist.enable = true; wl-clip-persist.enable = true;
vicinae.enable = true;
# display manager # display manager
regreet.enable = true; regreet.enable = true;

View file

@ -17,15 +17,9 @@ in {
modules.desktop.fonts.baseFonts = true; modules.desktop.fonts.baseFonts = true;
modules.desktop.thumbnailers.enable = true; modules.desktop.thumbnailers.enable = true;
# enable networking
networking.networkmanager.enable = true;
networking.networkmanager.wifi.backend = "iwd";
networking.wireless.iwd.settings.Settings.AutoConnect = true;
# speed up boot # speed up boot
# https://discourse.nixos.org/t/boot-faster-by-disabling-udev-settle-and-nm-wait-online/6339 # https://discourse.nixos.org/t/boot-faster-by-disabling-udev-settle-and-nm-wait-online/6339
systemd.services.systemd-udev-settle.enable = false; systemd.services.systemd-udev-settle.enable = false;
systemd.services.NetworkManager-wait-online.enable = false;
# mounting, trash, and mtp support # mounting, trash, and mtp support
services.gvfs.enable = true; services.gvfs.enable = true;

View file

@ -291,44 +291,41 @@ in {
} }
]; ];
# TODO: add shadows onto notifications. weird geometry beware !!!
# TODO: add shadows onto waybar again, but make it show the shadow drops behind the windows
# TODO: rounded vicinae
layer-rules = [ layer-rules = [
{ {
matches = [ matches = [
{ namespace = "^notifications$"; } { namespace = "^notifications$"; }
{ namespace = "^rofi$"; } # a bit silly, but we use rofi for clipboard history # obliterate all dmenu-like things--too dangerous to stream (clipboard history, passwords)
{ namespace = "^rofi$"; }
{ namespace = "^vicinae$"; }
{ namespace = "^launcher$"; }
]; ];
block-out-from = "screen-capture"; block-out-from = "screen-capture";
} }
{ {
matches = [ matches = [
{ namespace = "^launcher$"; } { namespace = "^launcher$"; }
{ namespace = "^notifications$"; }
{ namespace = "^rofi$"; } { namespace = "^rofi$"; }
{ namespace = "^waybar$"; } { namespace = "^vicinae$"; }
{ namespace = "^wob$"; } { namespace = "^wob$"; }
]; ];
shadow = { shadow = {
enable = true; enable = true;
}; };
} }
# special rounded corner cases. gah!! # shadow rounded corner cases...
# also for some reason int literals aren't accepted # defined in program config but we need to edit geometry too for shadows!!
# so multiply by 1.0 to make it a float # monospace
{ {
matches = [ matches = [
{ namespace = "^launcher$"; }
{ namespace = "^rofi$"; } { namespace = "^rofi$"; }
{ namespace = "^waybar$"; }
]; ];
geometry-corner-radius = allCorners (config.modules.desktop.fonts.fonts.monospace.size * 1.0); # its 1em, so geometry-corner-radius = allCorners (config.modules.desktop.fonts.fonts.monospace.size * 1.0); # its 1em, so
} }
{
matches = [ { namespace = "^launcher$"; } ];
geometry-corner-radius = allCorners (config.hm.programs.fuzzel.settings.border.radius * 1.0);
}
{
matches = [ { namespace = "^notifications$"; } ];
geometry-corner-radius = allCorners (config.hm.services.dunst.settings.global.corner_radius * 1.0);
}
]; ];
binds = with config.hm.lib.niri.actions; let binds = with config.hm.lib.niri.actions; let
@ -336,7 +333,8 @@ in {
in { in {
"Mod+Shift+Slash".action = show-hotkey-overlay; "Mod+Shift+Slash".action = show-hotkey-overlay;
"Mod+D".action = spawn "fuzzel"; # "Mod+D".action = spawn "fuzzel";
"Mod+D".action = spawn "vicinae" "vicinae://toggle";
"Mod+Q".action = close-window; "Mod+Q".action = close-window;
@ -438,7 +436,8 @@ in {
"XF86AudioNext".action = sh "${lib.getExe pkgs.playerctl} next"; "XF86AudioNext".action = sh "${lib.getExe pkgs.playerctl} next";
"Mod+Shift+C".action = sh "${lib.getExe pkgs.hyprpicker} -a"; "Mod+Shift+C".action = sh "${lib.getExe pkgs.hyprpicker} -a";
"Mod+V".action = sh "${config.modules.desktop.cliphist.summonScript}"; # "Mod+V".action = sh "${config.modules.desktop.cliphist.summonScript}";
"Mod+V".action = spawn "vicinae" "vicinae://extensions/vicinae/clipboard/history";
"Mod+Shift+Control+T".action = toggle-debug-tint; "Mod+Shift+Control+T".action = toggle-debug-tint;
"Mod+Shift+Control+O".action = debug-toggle-opaque-regions; "Mod+Shift+Control+O".action = debug-toggle-opaque-regions;

View file

@ -48,23 +48,9 @@ in {
fit = "Cover"; fit = "Cover";
}; };
}; };
# TODO: move to theme module
theme = with config.modules.desktop.themes.gtkTheme; {
name = name;
package = package;
};
iconTheme = with config.modules.desktop.themes.iconTheme; {
name = name;
package = package;
};
cursorTheme = with config.modules.desktop.themes.cursorTheme; {
name = name;
package = package;
};
font = with config.modules.desktop.fonts.fonts.sansSerif; { font = with config.modules.desktop.fonts.fonts.sansSerif; {
inherit size package;
name = family; name = family;
size = size;
package = package;
}; };
}; };
}; };

View file

@ -102,6 +102,8 @@ in {
wezterm = '' wezterm = ''
config.color_scheme = 'Catppuccin ${pascalCase variant}' config.color_scheme = 'Catppuccin ${pascalCase variant}'
''; '';
vicinae = "catppuccin-${variant}";
}; };
}; };
} }

View file

@ -10,11 +10,8 @@ button, button:hover {
window#waybar { window#waybar {
color: @text; color: @text;
/* background: alpha(@base, 0.8); */
/* background: @base; */
background: alpha(@base, 0.9999999); background: alpha(@base, 0.9999999);
border-radius: 1em; border-radius: 1em;
/* font-family: 'Lexica Ultralegible', 'Atkinson Hyperlegible', "Font Awesome 6 Free", "Noto Sans CJK"; */
font-family: "CozetteVector", monospace, "FontAwesome 6 Free", "Noto Sans CJK"; font-family: "CozetteVector", monospace, "FontAwesome 6 Free", "Noto Sans CJK";
font-size: 13px; font-size: 13px;
font-style: normal; font-style: normal;

View file

@ -65,11 +65,13 @@ in {
fuzzel = mkOpt (nullOr str) null; fuzzel = mkOpt (nullOr str) null;
wezterm = mkOpt (nullOr str) null; wezterm = mkOpt (nullOr str) null;
vicinae = mkOpt (nullOr str) null;
}; };
config = mkIf (cfg.active != null) { config = mkIf (cfg.active != null) {
programs.dconf.enable = true; programs.dconf.enable = true;
# i think this may be done by ohome-manager already?? # i think this may be done by home-manager already??
# better safe than sorry # better safe than sorry
hm.dconf = { hm.dconf = {
enable = true; enable = true;
@ -114,6 +116,12 @@ in {
package = cfg.iconTheme.package; package = cfg.iconTheme.package;
}; };
programs.regreet.settings = {
theme = cfg.gtkTheme;
iconTheme = cfg.iconTheme;
cursorTheme = cfg.cursorTheme;
};
hm.programs.vscode.profiles.default = { hm.programs.vscode.profiles.default = {
extensions = [ extensions = [
cfg.editor.vscode.colorTheme.extension cfg.editor.vscode.colorTheme.extension
@ -146,6 +154,16 @@ in {
icon-theme = cfg.iconTheme.name; icon-theme = cfg.iconTheme.name;
}; };
hm.services.vicinae.settings.theme = let
themeConf = {
name = cfg.vicinae;
iconTheme = cfg.iconTheme.name;
};
in {
light = themeConf;
dark = themeConf;
};
hm.xdg.configFile = let hm.xdg.configFile = let
iniFmt = pkgs.formats.ini {}; iniFmt = pkgs.formats.ini {};

View file

@ -0,0 +1,71 @@
{ inputs, lib, config, pkgs, system, ... }:
with lib;
let
cfg = config.modules.desktop.vicinae;
in {
options.modules.desktop.vicinae = {
enable = mkEnableOption "Enable vicinae, a launcher built in react";
package = mkOption {
type = types.package;
default = inputs.vicinae.packages.${system}.default;
};
};
config = mkIf cfg.enable {
hm.services.vicinae = {
enable = true;
package = cfg.package;
systemd = {
enable = true;
autoStart = true;
environment = {
USE_LAYER_SHELL = 1;
};
};
settings = {
"$schema" = "https://vicinae.com/schemas/config.json";
pop_to_root_on_close = true;
launcher_window = {
opacity = 0.95;
client_side_decorations.enabled = false;
layer_shell = {
enabled = true;
keyboard_interactivity = "exclusive";
layer = "top";
};
};
favorites = [
"core:search-emojis"
"clipboard:history"
];
providers = {
applications = {
preferences = {
defaultAction = "launch";
};
};
files.enabled = false;
};
escape_key_behavior = "close_window";
font = let
fonts = config.modules.desktop.fonts.fonts;
in {
normal = { inherit (fonts.sansSerif) family size; };
};
};
extensions = with inputs.vicinae-extensions.packages.${system}; [
nix
] ++ optional config.modules.desktop.niri.enable niri;
};
};
}

View file

@ -0,0 +1,18 @@
{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.modules.hardware.networking;
in {
options.modules.hardware.networking = {
enable = mkEnableOption "Enable NetworkManager, a daemon for configuring network interfaces";
};
config = mkIf cfg.enable {
networking.networkmanager.enable = true;
networking.networkmanager.wifi.backend = "iwd";
networking.wireless.iwd.settings.Settings.AutoConnect = true;
systemd.services.NetworkManager-wait-online.enable = false;
};
}

View file

@ -23,6 +23,7 @@
"https://nixpkgs-wayland.cachix.org" "https://nixpkgs-wayland.cachix.org"
"https://wezterm.cachix.org" "https://wezterm.cachix.org"
"https://niri.cachix.org" "https://niri.cachix.org"
"https://vicinae.cachix.org"
"https://cache.soopy.moe" "https://cache.soopy.moe"
]; ];
trusted-public-keys = [ trusted-public-keys = [
@ -30,6 +31,7 @@
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA=" "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
"wezterm.cachix.org-1:kAbhjYUC9qvblTE+s7S+kl5XM1zVa4skO+E/1IDWdH0=" "wezterm.cachix.org-1:kAbhjYUC9qvblTE+s7S+kl5XM1zVa4skO+E/1IDWdH0="
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964=" "niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
"vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc="
"cache.soopy.moe-1:0RZVsQeR+GOh0VQI9rvnHz55nVXkFardDqfm4+afjPo=" "cache.soopy.moe-1:0RZVsQeR+GOh0VQI9rvnHz55nVXkFardDqfm4+afjPo="
]; ];
}; };