{ pkgs, inputs, config, lib, ... }: { imports = [ inputs.noctalia.homeModules.default ]; programs.noctalia-shell = { enable = true; settings = { bar = { position = "top"; floating = true; backgroundOpacity = 0.93; }; general = { animationSpeed = 1.5; radiusRatio = 1.2; }; colorSchemes = { darkMode = true; useWallpaperColors = true; }; location = { weatherEnabled = false; }; wallpaper = { enabled = true; }; }; }; home.file.".cache/noctalia/wallpapers.json" = { text = builtins.toJSON { defaultWallpaper = "${../wallpaper.png}"; wallpapers = { }; }; }; programs.niri.settings = { spawn-at-startup = [ { command = [ "noctalia-shell" ]; } ]; # place noctalia overview wallpaper on the backdrop layer layer-rules = [ { matches = [ { namespace = "^noctalia-overview*"; } ]; place-within-backdrop = true; } ]; # allow notification actions and window activation from noctalia debug = { honor-xdg-activation-with-invalid-serial = [ ]; }; binds = with config.lib.niri.actions; let noctalia = cmd: [ "noctalia-shell" "ipc" "call" ] ++ (lib.splitString " " cmd); in { # noctalia shell keybinds "Mod+D".action = spawn (noctalia "launcher toggle"); "Mod+A".action = spawn (noctalia "controlCenter toggle"); "Mod+Escape".action = spawn (noctalia "sessionMenu toggle"); "Mod+Shift+X".action = spawn (noctalia "lockScreen lock"); "Mod+N".action = spawn (noctalia "notifications toggleHistory"); }; }; }