{ pkgs, lib, config, ... }: { options.niri.useNoctalia = lib.mkOption { type = lib.types.bool; default = true; }; config = let useNoctalia = config.niri.useNoctalia; in lib.mkMerge [ # ── Niri (shared) ──────────────────────────────────────────────────────────── { xdg.configFile."niri" = { source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-dotfiles/config/niri"; }; xdg.configFile."foot".source = ../config/foot; systemd.user.services.xwayland-satellite = { Unit = { Description = "Xwayland for niri"; BindsTo = [ "graphical-session.target" ]; After = [ "graphical-session.target" ]; }; Service = { ExecStart = "${pkgs.xwayland-satellite}/bin/xwayland-satellite"; Restart = "on-failure"; }; Install.WantedBy = [ "graphical-session.target" ]; }; home.packages = with pkgs; [ libnotify wl-clipboard slurp grim satty brightnessctl lxqt.lxqt-policykit ]; } # ── Noctalia ───────────────────────────────────────────────────────────────── (lib.mkIf useNoctalia { xdg.configFile."noctalia" = { source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-dotfiles/config/noctalia"; }; home.packages = with pkgs; [ noctalia-shell ]; }) # ── Non-noctalia ───────────────────────────────────────────────────────────── (lib.mkIf (!useNoctalia) { xdg.configFile."waybar".source = ../config/waybar; xdg.configFile."fuzzel/fuzzel.ini".source = ../config/fuzzel/fuzzel.ini; home.file.".local/bin/wallpaper.sh" = { source = ../config/niri/wallpaper.sh; executable = true; }; home.file.".local/bin/waybar-network.sh" = { source = ../config/waybar/network.sh; executable = true; }; home.file.".local/bin/waybar-weather.sh" = { source = ../config/waybar/weather.sh; executable = true; }; services.mako = { enable = true; settings = { background-color = "#0a0a0a99"; text-color = "#f3eeea"; border-color = "#cd0a00"; border-radius = 8; border-size = 1; default-timeout = 7500; max-icon-size = 64; padding = "10,14"; font = "JetBrains Mono 12"; }; }; home.packages = with pkgs; [ awww wlogout fuzzel waybar ]; }) ]; }