{ pkgs, lib, config, ... }: { options.niri.useNoctalia = lib.mkOption { type = lib.types.bool; default = true; }; config = let useNoctalia = config.niri.useNoctalia; in { # ── Niri desktop environment ───────────────────────────────────────────────── xdg.configFile."niri" = { source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-dotfiles/config/niri"; }; xdg.configFile."noctalia" = lib.mkIf useNoctalia { source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-dotfiles/config/noctalia"; }; xdg.configFile."foot".source = ./config/foot; xdg.configFile."waybar" = lib.mkIf (!useNoctalia) { source = ./config/waybar; }; xdg.configFile."fuzzel/fuzzel.ini" = lib.mkIf (!useNoctalia) { 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" = lib.mkIf (!useNoctalia) { source = ./config/waybar/network.sh; executable = true; }; home.file.".local/bin/waybar-weather.sh" = lib.mkIf (!useNoctalia) { source = ./config/waybar/weather.sh; executable = true; }; xdg.dataFile."applications/switch-wallpaper.desktop".source = ./config/applications/switch-wallpaper.desktop; xdg.dataFile."applications/signal.desktop".source = ./config/applications/signal.desktop; xdg.dataFile."applications/vesktop.desktop".source = ./config/applications/vesktop.desktop; xdg.dataFile."applications/steam.desktop".source = ./config/applications/steam.desktop; 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" ]; }; 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; [ # wayland / desktop libnotify wl-clipboard slurp grim satty wlogout brightnessctl awww lxqt.lxqt-policykit # messaging telegram-desktop signal-desktop vesktop karere ] ++ lib.optionals (!useNoctalia) [ fuzzel waybar ] ++ lib.optionals useNoctalia [ noctalia-shell ]; }; }