a dotfile but it's really big

try out noctalia shell

karitham.dev cd72e7d3 7f70f4ec

verified
+587 -6
+21
flake.lock
··· 479 479 "type": "github" 480 480 } 481 481 }, 482 + "noctalia": { 483 + "inputs": { 484 + "nixpkgs": [ 485 + "nixpkgs" 486 + ] 487 + }, 488 + "locked": { 489 + "lastModified": 1769449928, 490 + "narHash": "sha256-fV7n9IWFZqC7qg7GAF3sO1VEadRaPCI6uf9CT0H9g+A=", 491 + "owner": "noctalia-dev", 492 + "repo": "noctalia-shell", 493 + "rev": "e66a77a801e09d3fbaca7a7e595e5b94167d838b", 494 + "type": "github" 495 + }, 496 + "original": { 497 + "owner": "noctalia-dev", 498 + "repo": "noctalia-shell", 499 + "type": "github" 500 + } 501 + }, 482 502 "pre-commit": { 483 503 "inputs": { 484 504 "flake-compat": "flake-compat_2", ··· 515 535 "niri": "niri", 516 536 "nixos-wsl": "nixos-wsl", 517 537 "nixpkgs": "nixpkgs_4", 538 + "noctalia": "noctalia", 518 539 "sops-nix": "sops-nix", 519 540 "ssh-keys": "ssh-keys", 520 541 "starship-jj": "starship-jj"
+4
flake.nix
··· 37 37 inputs.nixpkgs.follows = "nixpkgs"; 38 38 }; 39 39 niri.url = "github:sodiboo/niri-flake?ref=main"; 40 + noctalia = { 41 + url = "github:noctalia-dev/noctalia-shell"; 42 + inputs.nixpkgs.follows = "nixpkgs"; 43 + }; 40 44 starship-jj.url = "gitlab:lanastara_foss/starship-jj"; 41 45 ssh-keys = { 42 46 url = "https://github.com/karitham.keys";
+2
modules/desktop/home.nix
··· 12 12 inherit (osConfig.desktop or { }) 13 13 enable 14 14 wm 15 + noctalia 15 16 waybar 16 17 hyprlock 17 18 wallpaper ··· 26 27 enable = mkEnableOption "all desktop tools"; 27 28 28 29 wm.enable = mkEnableOption "window manager and interface tools"; 30 + noctalia.enable = mkEnableOption "Noctalia Shell"; 29 31 waybar.enable = mkEnableOption "Waybar status bar"; 30 32 hyprlock.enable = mkEnableOption "Hyprlock screen locker"; 31 33 wallpaper.enable = mkEnableOption "Wallpaper management";
+14 -5
modules/desktop/nixos.nix
··· 8 8 enable = mkEnableOption "all desktop tools"; 9 9 10 10 wm.enable = mkEnableOption "window manager and interface tools"; 11 + noctalia.enable = mkEnableOption "Noctalia Shell"; 11 12 waybar.enable = mkEnableOption "Waybar status bar"; 12 13 hyprlock.enable = mkEnableOption "Hyprlock screen locker"; 13 14 wallpaper.enable = mkEnableOption "Wallpaper management"; ··· 31 32 ]; 32 33 33 34 config = { 35 + assertions = [ 36 + { 37 + assertion = !(cfg.waybar.enable && cfg.noctalia.enable); 38 + message = "Cannot enable both Waybar and Noctalia at the same time."; 39 + } 40 + ]; 41 + 34 42 desktop.wm.enable = mkIf cfg.enable true; 35 - desktop.waybar.enable = mkIf cfg.wm.enable true; 36 - desktop.hyprlock.enable = mkIf cfg.wm.enable true; 37 - desktop.wallpaper.enable = mkIf cfg.wm.enable true; 38 - desktop.notification.enable = mkIf cfg.wm.enable true; 39 - desktop.launcher.enable = mkIf cfg.wm.enable true; 43 + # Default to Waybar if Noctalia is not explicitly enabled for now 44 + desktop.waybar.enable = mkIf (cfg.wm.enable && !cfg.noctalia.enable) true; 45 + desktop.hyprlock.enable = mkIf (cfg.wm.enable && !cfg.noctalia.enable) true; 46 + desktop.wallpaper.enable = mkIf (cfg.wm.enable && !cfg.noctalia.enable) true; 47 + desktop.notification.enable = mkIf (cfg.wm.enable && !cfg.noctalia.enable) true; 48 + desktop.launcher.enable = mkIf (cfg.wm.enable && !cfg.noctalia.enable) true; 40 49 desktop.terminal.enable = mkIf cfg.enable true; 41 50 desktop.audio.enable = mkIf cfg.enable true; 42 51 desktop.apps.enable = mkIf cfg.enable true;
+1
modules/desktop/wm/default.nix
··· 6 6 ./hyprlock.nix 7 7 ./wallpaper.nix 8 8 ./niri.nix 9 + ./noctalia.nix 9 10 ./waybar.nix 10 11 ./xdg.nix 11 12 ];
-1
modules/desktop/wm/niri.nix
··· 111 111 binds = 112 112 with config.lib.niri.actions; 113 113 let 114 - # programs.niri.settings.binds."Mod+Q".action.close-window = [] 115 114 toAction = 116 115 act: dir: 117 116 (lib.mapAttrs' (
+544
modules/desktop/wm/noctalia.nix
··· 1 + { 2 + inputs, 3 + config, 4 + lib, 5 + ... 6 + }: 7 + { 8 + imports = [ inputs.noctalia.homeModules.default ]; 9 + 10 + config = lib.mkIf config.desktop.noctalia.enable { 11 + programs.noctalia-shell = { 12 + enable = true; 13 + systemd.enable = true; 14 + settings = { 15 + enable = true; 16 + settings = { 17 + settingsVersion = 45; 18 + appLauncher = { 19 + autoPasteClipboard = false; 20 + clipboardWrapText = true; 21 + customLaunchPrefix = ""; 22 + customLaunchPrefixEnabled = false; 23 + enableClipPreview = true; 24 + enableClipboardHistory = false; 25 + enableSettingsSearch = true; 26 + iconMode = "native"; 27 + ignoreMouseInput = false; 28 + pinnedApps = [ 29 + "firefox-devedition" 30 + "com.mitchellh.ghostty" 31 + "vesktop" 32 + "signal" 33 + ]; 34 + position = "center"; 35 + screenshotAnnotationTool = ""; 36 + showCategories = false; 37 + showIconBackground = false; 38 + sortByMostUsed = true; 39 + terminalCommand = "ghostty -e"; 40 + useApp2Unit = false; 41 + viewMode = "grid"; 42 + }; 43 + audio = { 44 + cavaFrameRate = 30; 45 + mprisBlacklist = [ ]; 46 + preferredPlayer = ""; 47 + visualizerType = "linear"; 48 + volumeFeedback = false; 49 + volumeOverdrive = false; 50 + volumeStep = 5; 51 + }; 52 + bar = { 53 + backgroundOpacity = 0.93; 54 + barType = "simple"; 55 + capsuleOpacity = 1; 56 + density = "default"; 57 + exclusive = true; 58 + floating = false; 59 + frameRadius = 12; 60 + frameThickness = 8; 61 + hideOnOverview = false; 62 + marginHorizontal = 4; 63 + marginVertical = 4; 64 + monitors = [ ]; 65 + outerCorners = true; 66 + position = "top"; 67 + screenOverrides = [ ]; 68 + showCapsule = true; 69 + showOutline = false; 70 + useSeparateOpacity = false; 71 + widgets = { 72 + center = [ 73 + { 74 + characterCount = 2; 75 + colorizeIcons = false; 76 + emptyColor = "secondary"; 77 + enableScrollWheel = true; 78 + focusedColor = "primary"; 79 + followFocusedScreen = false; 80 + groupedBorderOpacity = 1; 81 + hideUnoccupied = false; 82 + iconScale = 0.8; 83 + id = "Workspace"; 84 + labelMode = "index"; 85 + occupiedColor = "secondary"; 86 + showApplications = false; 87 + showBadge = true; 88 + showLabelsOnlyWhenOccupied = true; 89 + unfocusedIconsOpacity = 1; 90 + } 91 + ]; 92 + left = [ 93 + { 94 + icon = "rocket"; 95 + id = "Launcher"; 96 + usePrimaryColor = false; 97 + } 98 + { 99 + customFont = ""; 100 + formatHorizontal = "HH:mm ddd, MMM dd"; 101 + formatVertical = "HH mm - dd MM"; 102 + id = "Clock"; 103 + tooltipFormat = "HH:mm ddd, MMM dd"; 104 + useCustomFont = false; 105 + usePrimaryColor = false; 106 + } 107 + { 108 + compactMode = true; 109 + diskPath = "/"; 110 + id = "SystemMonitor"; 111 + showCpuTemp = true; 112 + showCpuUsage = true; 113 + showDiskUsage = false; 114 + showGpuTemp = false; 115 + showLoadAverage = false; 116 + showMemoryAsPercent = false; 117 + showMemoryUsage = true; 118 + showNetworkStats = false; 119 + showSwapUsage = false; 120 + useMonospaceFont = true; 121 + usePrimaryColor = false; 122 + } 123 + { 124 + colorizeIcons = false; 125 + hideMode = "hidden"; 126 + id = "ActiveWindow"; 127 + maxWidth = 145; 128 + scrollingMode = "hover"; 129 + showIcon = true; 130 + useFixedWidth = false; 131 + } 132 + { 133 + compactMode = false; 134 + compactShowAlbumArt = true; 135 + compactShowVisualizer = false; 136 + hideMode = "hidden"; 137 + hideWhenIdle = false; 138 + id = "MediaMini"; 139 + maxWidth = 145; 140 + panelShowAlbumArt = true; 141 + panelShowVisualizer = true; 142 + scrollingMode = "hover"; 143 + showAlbumArt = true; 144 + showArtistFirst = true; 145 + showProgressRing = true; 146 + showVisualizer = false; 147 + useFixedWidth = false; 148 + visualizerType = "linear"; 149 + } 150 + ]; 151 + right = [ 152 + { 153 + blacklist = [ ]; 154 + colorizeIcons = false; 155 + drawerEnabled = true; 156 + hidePassive = false; 157 + id = "Tray"; 158 + pinned = [ ]; 159 + } 160 + { 161 + hideWhenZero = false; 162 + hideWhenZeroUnread = false; 163 + id = "NotificationHistory"; 164 + showUnreadBadge = true; 165 + } 166 + { 167 + deviceNativePath = ""; 168 + displayMode = "onhover"; 169 + hideIfIdle = false; 170 + hideIfNotDetected = true; 171 + id = "Battery"; 172 + showNoctaliaPerformance = false; 173 + showPowerProfiles = false; 174 + warningThreshold = 30; 175 + } 176 + { 177 + displayMode = "onhover"; 178 + id = "Volume"; 179 + middleClickCommand = "pwvucontrol || pavucontrol"; 180 + } 181 + { 182 + displayMode = "onhover"; 183 + id = "Brightness"; 184 + } 185 + { 186 + colorizeDistroLogo = false; 187 + colorizeSystemIcon = "none"; 188 + customIconPath = ""; 189 + enableColorization = false; 190 + icon = "noctalia"; 191 + id = "ControlCenter"; 192 + useDistroLogo = false; 193 + } 194 + ]; 195 + }; 196 + }; 197 + brightness = { 198 + brightnessStep = 5; 199 + enableDdcSupport = false; 200 + enforceMinimum = true; 201 + }; 202 + calendar = { 203 + cards = [ 204 + { 205 + enabled = true; 206 + id = "calendar-header-card"; 207 + } 208 + { 209 + enabled = true; 210 + id = "calendar-month-card"; 211 + } 212 + { 213 + enabled = true; 214 + id = "weather-card"; 215 + } 216 + ]; 217 + }; 218 + colorSchemes = { 219 + darkMode = true; 220 + generationMethod = "tonal-spot"; 221 + manualSunrise = "06:30"; 222 + manualSunset = "18:30"; 223 + monitorForColors = ""; 224 + predefinedScheme = "Catppuccin"; 225 + schedulingMode = "off"; 226 + useWallpaperColors = false; 227 + }; 228 + controlCenter = { 229 + cards = [ 230 + { 231 + enabled = true; 232 + id = "profile-card"; 233 + } 234 + { 235 + enabled = true; 236 + id = "shortcuts-card"; 237 + } 238 + { 239 + enabled = true; 240 + id = "audio-card"; 241 + } 242 + { 243 + enabled = false; 244 + id = "brightness-card"; 245 + } 246 + { 247 + enabled = true; 248 + id = "weather-card"; 249 + } 250 + { 251 + enabled = true; 252 + id = "media-sysmon-card"; 253 + } 254 + ]; 255 + diskPath = "/"; 256 + position = "close_to_bar_button"; 257 + shortcuts = { 258 + left = [ 259 + { id = "Network"; } 260 + { id = "Bluetooth"; } 261 + { id = "WallpaperSelector"; } 262 + { id = "NoctaliaPerformance"; } 263 + ]; 264 + right = [ 265 + { id = "Notifications"; } 266 + { id = "PowerProfile"; } 267 + { id = "KeepAwake"; } 268 + { id = "NightLight"; } 269 + ]; 270 + }; 271 + }; 272 + desktopWidgets = { 273 + enabled = false; 274 + gridSnap = false; 275 + monitorWidgets = [ ]; 276 + }; 277 + dock = { 278 + animationSpeed = 1; 279 + backgroundOpacity = 1; 280 + colorizeIcons = false; 281 + deadOpacity = 0.6; 282 + displayMode = "auto_hide"; 283 + enabled = true; 284 + floatingRatio = 1; 285 + inactiveIndicators = false; 286 + monitors = [ "eDP-1" ]; 287 + onlySameOutput = true; 288 + pinnedApps = [ ]; 289 + pinnedStatic = false; 290 + position = "bottom"; 291 + size = 1; 292 + }; 293 + general = { 294 + allowPanelsOnScreenWithoutBar = true; 295 + animationDisabled = false; 296 + animationSpeed = 1; 297 + autoStartAuth = false; 298 + avatarImage = "/home/${config.my.username}/.face"; 299 + boxRadiusRatio = 1; 300 + compactLockScreen = false; 301 + dimmerOpacity = 0.2; 302 + enableLockScreenCountdown = true; 303 + enableShadows = true; 304 + forceBlackScreenCorners = false; 305 + iRadiusRatio = 1; 306 + language = ""; 307 + lockOnSuspend = true; 308 + lockScreenCountdownDuration = 10000; 309 + radiusRatio = 1; 310 + scaleRatio = 1; 311 + screenRadiusRatio = 0; 312 + shadowDirection = "bottom_right"; 313 + shadowOffsetX = 2; 314 + shadowOffsetY = 3; 315 + showChangelogOnStartup = true; 316 + showHibernateOnLockScreen = false; 317 + showScreenCorners = false; 318 + showSessionButtonsOnLockScreen = true; 319 + telemetryEnabled = false; 320 + }; 321 + hooks = { 322 + darkModeChange = ""; 323 + enabled = false; 324 + performanceModeDisabled = ""; 325 + performanceModeEnabled = ""; 326 + screenLock = ""; 327 + screenUnlock = ""; 328 + session = ""; 329 + startup = ""; 330 + wallpaperChange = ""; 331 + }; 332 + location = { 333 + analogClockInCalendar = false; 334 + firstDayOfWeek = -1; 335 + hideWeatherCityName = false; 336 + hideWeatherTimezone = false; 337 + name = "Paris"; 338 + showCalendarEvents = true; 339 + showCalendarWeather = true; 340 + showWeekNumberInCalendar = false; 341 + use12hourFormat = false; 342 + useFahrenheit = false; 343 + weatherEnabled = true; 344 + weatherShowEffects = true; 345 + }; 346 + network = { 347 + bluetoothDetailsViewMode = "grid"; 348 + bluetoothHideUnnamedDevices = false; 349 + bluetoothRssiPollIntervalMs = 10000; 350 + bluetoothRssiPollingEnabled = false; 351 + wifiDetailsViewMode = "grid"; 352 + wifiEnabled = true; 353 + }; 354 + nightLight = { 355 + autoSchedule = true; 356 + dayTemp = "6500"; 357 + enabled = false; 358 + forced = false; 359 + manualSunrise = "06:30"; 360 + manualSunset = "18:30"; 361 + nightTemp = "4000"; 362 + }; 363 + notifications = { 364 + backgroundOpacity = 1; 365 + criticalUrgencyDuration = 15; 366 + enableKeyboardLayoutToast = true; 367 + enableMediaToast = false; 368 + enabled = true; 369 + location = "top_right"; 370 + lowUrgencyDuration = 3; 371 + monitors = [ ]; 372 + normalUrgencyDuration = 8; 373 + overlayLayer = true; 374 + respectExpireTimeout = false; 375 + saveToHistory = { 376 + critical = true; 377 + low = true; 378 + normal = true; 379 + }; 380 + sounds = { 381 + criticalSoundFile = ""; 382 + enabled = false; 383 + excludedApps = "discord,firefox,chrome,chromium,edge"; 384 + lowSoundFile = ""; 385 + normalSoundFile = ""; 386 + separateSounds = false; 387 + volume = 0.5; 388 + }; 389 + }; 390 + osd = { 391 + autoHideMs = 2000; 392 + backgroundOpacity = 1; 393 + enabled = true; 394 + enabledTypes = [ 395 + 0 396 + 1 397 + 2 398 + ]; 399 + location = "top_right"; 400 + monitors = [ ]; 401 + overlayLayer = true; 402 + }; 403 + sessionMenu = { 404 + countdownDuration = 10000; 405 + enableCountdown = true; 406 + largeButtonsLayout = "grid"; 407 + largeButtonsStyle = false; 408 + position = "center"; 409 + powerOptions = [ 410 + { 411 + action = "lock"; 412 + enabled = true; 413 + } 414 + { 415 + action = "suspend"; 416 + enabled = true; 417 + } 418 + { 419 + action = "hibernate"; 420 + enabled = true; 421 + } 422 + { 423 + action = "reboot"; 424 + enabled = true; 425 + } 426 + { 427 + action = "logout"; 428 + enabled = true; 429 + } 430 + { 431 + action = "shutdown"; 432 + enabled = true; 433 + } 434 + ]; 435 + showHeader = true; 436 + showNumberLabels = true; 437 + }; 438 + systemMonitor = { 439 + cpuCriticalThreshold = 90; 440 + cpuPollingInterval = 3000; 441 + cpuWarningThreshold = 80; 442 + criticalColor = ""; 443 + diskCriticalThreshold = 90; 444 + diskPollingInterval = 30000; 445 + diskWarningThreshold = 80; 446 + enableDgpuMonitoring = false; 447 + externalMonitor = "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor"; 448 + gpuCriticalThreshold = 90; 449 + gpuPollingInterval = 3000; 450 + gpuWarningThreshold = 80; 451 + loadAvgPollingInterval = 3000; 452 + memCriticalThreshold = 90; 453 + memPollingInterval = 3000; 454 + memWarningThreshold = 80; 455 + networkPollingInterval = 3000; 456 + swapCriticalThreshold = 90; 457 + swapWarningThreshold = 80; 458 + tempCriticalThreshold = 90; 459 + tempPollingInterval = 3000; 460 + tempWarningThreshold = 80; 461 + useCustomColors = false; 462 + warningColor = ""; 463 + }; 464 + templates = { 465 + activeTemplates = [ ]; 466 + enableUserTheming = false; 467 + }; 468 + ui = { 469 + bluetoothDetailsViewMode = "grid"; 470 + bluetoothHideUnnamedDevices = false; 471 + boxBorderEnabled = false; 472 + fontDefault = "Lexend"; 473 + fontDefaultScale = 1; 474 + fontFixed = "MonoLisa"; 475 + fontFixedScale = 1; 476 + networkPanelView = "wifi"; 477 + panelBackgroundOpacity = 0.93; 478 + panelsAttachedToBar = true; 479 + settingsPanelMode = "attached"; 480 + tooltipsEnabled = true; 481 + wifiDetailsViewMode = "grid"; 482 + }; 483 + wallpaper = { 484 + automationEnabled = false; 485 + directory = "/home/kar/Pictures/Wallpapers"; 486 + enableMultiMonitorDirectories = false; 487 + enabled = true; 488 + fillColor = "#000000"; 489 + fillMode = "crop"; 490 + hideWallpaperFilenames = false; 491 + monitorDirectories = [ ]; 492 + overviewEnabled = false; 493 + panelPosition = "follow_bar"; 494 + randomIntervalSec = 300; 495 + setWallpaperOnAllMonitors = true; 496 + showHiddenFiles = false; 497 + solidColor = "#1a1a2e"; 498 + transitionDuration = 1500; 499 + transitionEdgeSmoothness = 0.05; 500 + transitionType = "random"; 501 + useSolidColor = false; 502 + useWallhaven = true; 503 + viewMode = "single"; 504 + wallhavenApiKey = ""; 505 + wallhavenCategories = "111"; 506 + wallhavenOrder = "desc"; 507 + wallhavenPurity = "100"; 508 + wallhavenQuery = "catppuccin"; 509 + wallhavenRatios = ""; 510 + wallhavenResolutionHeight = ""; 511 + wallhavenResolutionMode = "atleast"; 512 + wallhavenResolutionWidth = ""; 513 + wallhavenSorting = "relevance"; 514 + wallpaperChangeMode = "random"; 515 + }; 516 + }; 517 + }; 518 + }; 519 + 520 + programs.niri.settings.binds = { 521 + "Mod+R".action.spawn = [ 522 + "noctalia-shell" 523 + "ipc" 524 + "call" 525 + "launcher" 526 + "toggle" 527 + ]; 528 + "Mod+Shift+N".action.spawn = [ 529 + "noctalia-shell" 530 + "ipc" 531 + "call" 532 + "controlCenter" 533 + "toggle" 534 + ]; 535 + "Mod+Shift+O".action.spawn = [ 536 + "noctalia-shell" 537 + "ipc" 538 + "call" 539 + "sessionMenu" 540 + "toggle" 541 + ]; 542 + }; 543 + }; 544 + }
+1
systems/kiwi/default.nix
··· 9 9 10 10 system.stateVersion = "25.11"; 11 11 12 + desktop.noctalia.enable = true; 12 13 home-manager.users.${config.my.username} = { 13 14 nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "hayase" ]; 14 15