diff --git a/README.md b/README.md index 4ab5cca6..af90a1de 100644 --- a/README.md +++ b/README.md @@ -151,8 +151,7 @@ Other dotfiles that inspired me: - [davidtwco/veritas](https://github.com/davidtwco/veritas) - [gvolpe/nix-config](https://github.com/gvolpe/nix-config) - [Ruixi-rebirth/flakes](https://github.com/Ruixi-rebirth/flakes) - - [fufexan/dotfiles](https://github.com/fufexan/dotfiles): gtk theme, xdg, git, media, anyrun, - etc. + - [fufexan/dotfiles](https://github.com/fufexan/dotfiles): gtk theme, xdg, git, media, etc. - [nix-community/srvos](https://github.com/nix-community/srvos): a collection of opinionated and sharable NixOS configurations for servers - Modularized NixOS Configuration diff --git a/home/README.md b/home/README.md index 9e0980bc..a7245ba3 100644 --- a/home/README.md +++ b/home/README.md @@ -39,7 +39,7 @@ home/ - Shared configurations for editors, shells, and essential tools 2. **linux**: Linux-specific configuration - - Desktop environments (Hyprland, Niri) + - Desktop environments (Noctalia Shell, Niri compositor) - Linux-specific GUI applications - System integration tools diff --git a/home/linux/README.md b/home/linux/README.md index 019e702a..8f598998 100644 --- a/home/linux/README.md +++ b/home/linux/README.md @@ -28,6 +28,5 @@ cases. ## Usage - **Lightweight/Terminal**: Use `core.nix` or `tui.nix` for terminal-focused setups -- **Desktops**: Use `gui.nix` for full desktop environments with window managers like Hyprland or - Niri +- **Desktops**: Use `gui.nix` for full desktop environments with Noctalia Shell and Niri compositor - **Custom**: Mix and match configurations as needed for your specific use case diff --git a/home/linux/gui/README.md b/home/linux/gui/README.md index 10df4e9e..3078b133 100644 --- a/home/linux/gui/README.md +++ b/home/linux/gui/README.md @@ -13,16 +13,15 @@ Manager. ### Base Desktop Environment - **base**: Common desktop configurations shared across all environments, including: - - Desktop applications (noctalia-shell) + - **Noctalia Shell**: All-in-one Wayland desktop shell (replaces gammastep, swaylock, anyrun, + mako, waybar, wallpaper-switcher, wlogout, and other desktop tools) - Creative tools and media applications - Development tools - - Eye protection utilities (gammastep) - Fcitx5 input method framework - Games and gaming utilities - GTK theme configurations - Immutable file handling - Note-taking applications - - Wallpaper management with auto-switcher - Wayland applications - XDG desktop configurations @@ -35,7 +34,7 @@ Manager. 1. **Configuration Location**: Desktop environment configuration files are located in `~/.config`, which can be easily managed by Home Manager. -2. **User-specific Services**: Many user-specific systemd services (gammastep, wallpaper-switcher, +2. **User-specific Services**: User-specific systemd services (noctalia-shell, fcitx5, hypridle, etc.) can be easily managed by Home Manager. If desktop environments were configured via NixOS Module, these user-level services might fail to start automatically. With Home Manager modules, we can control systemd service dependency order more effectively. diff --git a/home/linux/gui/base/README.md b/home/linux/gui/base/README.md new file mode 100644 index 00000000..c53397e1 --- /dev/null +++ b/home/linux/gui/base/README.md @@ -0,0 +1,84 @@ +# Base Desktop Environment Configuration + +This directory contains base configurations for Linux desktop environments, providing essential +components for a complete Wayland desktop experience. + +## Overview + +The configuration is organized into modular components that can be selectively enabled: + +- **Desktop Shell**: Noctalia Shell for unified desktop environment +- **Applications**: Desktop tools, browsers, editors, media players, etc. +- **Development Tools**: IDEs and development utilities +- **System Integration**: Input methods, theming, XDG specifications, GPU settings + +## Noctalia Shell + +**Noctalia Shell** is an all-in-one Wayland desktop shell that replaces multiple separate tools with +a single, unified solution. It provides: + +- **Unified Configuration**: All components configured in a single `settings.json` file +- **Consistent Experience**: Cohesive visual design and interaction patterns +- **Reduced Complexity**: No need to maintain multiple separate config files + +### Component Replacement + +Noctalia Shell consolidates functionality that previously required multiple tools: + +| Traditional Component | Purpose | Noctalia Replacement | +| ---------------------- | -------------------- | ------------------------------ | +| **gammastep** | Blue light filter | `nightLight` configuration | +| **swaylock** | Screen locker | Built-in lock screen | +| **anyrun** | Application launcher | `appLauncher` | +| **mako** | Notification daemon | `notifications` | +| **waybar** | Status bar | `bar` (with widgets) | +| **wallpaper-switcher** | Wallpaper management | `wallpaper` (with transitions) | +| **wlogout** | Session menu | `sessionMenu` | +| **wl-clipboard** | Clipboard management | Built-in clipboard manager | + +## Configuration Modules + +### Desktop Shell + +- **[`noctalia/default.nix`](./noctalia/default.nix)**: Package installation and systemd service +- **[`noctalia/settings.json`](./noctalia/settings.json)**: Main configuration with all settings + + Key features: bar, control center, night light, wallpaper, session menu, system monitor, + audio/volume, brightness, screen recorder, calendar, color schemes, dock, notifications, OSD, and + more. + +- **[`hypridle/`](./hypridle/)**: Idle management + +### Desktop Environment + +- **[`gtk.nix`](./gtk.nix)**: GTK theme configuration +- **[`xdg.nix`](./xdg.nix)**: XDG specifications +- **[`nvidia.nix`](./nvidia.nix)**: NVIDIA GPU settings + +### Input & Localization + +- **[`fcitx5/`](./fcitx5/)**: Fcitx5 input method with Mozc (Japanese input) + +### Applications + +- **[`desktop-tools.nix`](./desktop-tools.nix)**: Daily GUI apps (foliate, remmina, messaging) +- **[`browsers.nix`](./browsers.nix)**: Web browsers +- **[`editors.nix`](./editors.nix)**: Desktop text editors +- **[`media.nix`](./media.nix)**: Media players +- **[`gaming.nix`](./gaming.nix)**: Gaming applications +- **[`creative.nix`](./creative.nix)**: Creative software +- **[`note-taking.nix`](./note-taking.nix)**: Note-taking apps + +### Development + +- **[`dev-tools.nix`](./dev-tools.nix)**: Development tools and IDEs + +### System Utilities + +- **[`misc.nix`](./misc.nix)**: Wayland tools (screenshots, screen recording, color picker, audio) +- **[`immutable-file.nix`](./immutable-file.nix)**: Immutable file handling + +## Related Documentation + +- Noctalia Shell: https://docs.noctalia.dev/docs +- Parent: [`../README.md`](../README.md) diff --git a/home/linux/gui/base/desktop/default.nix b/home/linux/gui/base/desktop-tools.nix similarity index 96% rename from home/linux/gui/base/desktop/default.nix rename to home/linux/gui/base/desktop-tools.nix index 65433a2e..0bc0fe5b 100644 --- a/home/linux/gui/base/desktop/default.nix +++ b/home/linux/gui/base/desktop-tools.nix @@ -1,7 +1,5 @@ { mylib, pkgs, ... }: { - imports = mylib.scanPaths ./.; - # wayland related home.sessionVariables = { "NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland diff --git a/home/linux/gui/base/eye-protection.nix b/home/linux/gui/base/eye-protection.nix deleted file mode 100644 index 77c87350..00000000 --- a/home/linux/gui/base/eye-protection.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - pkgs, - lib, - ... -}: -{ - # Adjust the color temperature(& brightness) of your screen according to - # your surroundings. This may help your eyes hurt less if you are - # working in front of the screen at night. - # - # works fine with both x11 & wayland(hyprland) - # - # https://gitlab.com/chinstrap/gammastep - services.gammastep = { - enable = true; - # add a gammastep icon in the system tray - # has problem with wayland, so disable it - tray = false; - temperature = { - day = 6000; - night = 4500; - }; - # https://gitlab.com/chinstrap/gammastep/-/blob/master/gammastep.conf.sample?ref_type=heads - settings = { - general = { - fade = "1"; # gradually apply the new screen temperature/brightness over a couple of seconds. - - # it is a fake brightness adjustment obtained by manipulating the gamma ramps, - # which means that it does not reduce the backlight of the screen. - # Preferably only use it if your normal backlight adjustment is too coarse-grained. - # - # brightness-day = "1.3"; - # brightness-night = "1"; - - location-provider = "manual"; - - # by default, Redshift will use the current elevation of the sun - # to determine whether it is daytime, night or in transition (dawn/dusk). - # dawn-time = "6:00-8:45"; - # dusk-time = "18:35-20:15"; - }; - manual = { - # China, Shenzhen - lat = "22.5"; # latitude - lon = "114.1"; # longitude - }; - }; - }; -} diff --git a/home/linux/gui/base/desktop/hypridle/default.nix b/home/linux/gui/base/hypridle/default.nix similarity index 100% rename from home/linux/gui/base/desktop/hypridle/default.nix rename to home/linux/gui/base/hypridle/default.nix diff --git a/home/linux/gui/base/desktop/hypridle/hypridle.conf b/home/linux/gui/base/hypridle/hypridle.conf similarity index 100% rename from home/linux/gui/base/desktop/hypridle/hypridle.conf rename to home/linux/gui/base/hypridle/hypridle.conf diff --git a/home/linux/gui/base/desktop/noctalia/default.nix b/home/linux/gui/base/noctalia/default.nix similarity index 97% rename from home/linux/gui/base/desktop/noctalia/default.nix rename to home/linux/gui/base/noctalia/default.nix index 9498872a..2fc3c2a6 100644 --- a/home/linux/gui/base/desktop/noctalia/default.nix +++ b/home/linux/gui/base/noctalia/default.nix @@ -24,7 +24,7 @@ xdg.configFile = let mkSymlink = config.lib.file.mkOutOfStoreSymlink; - confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/desktop/noctalia"; + confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/noctalia"; in { "noctalia/settings.json".source = mkSymlink "${confPath}/settings.json"; diff --git a/home/linux/gui/base/desktop/noctalia/settings.json b/home/linux/gui/base/noctalia/settings.json similarity index 99% rename from home/linux/gui/base/desktop/noctalia/settings.json rename to home/linux/gui/base/noctalia/settings.json index 95a852aa..727f6bf2 100644 --- a/home/linux/gui/base/desktop/noctalia/settings.json +++ b/home/linux/gui/base/noctalia/settings.json @@ -332,7 +332,7 @@ "autoSchedule": true, "dayTemp": "6500", "enabled": true, - "forced": false, + "forced": true, "manualSunrise": "06:30", "manualSunset": "18:30", "nightTemp": "4000" diff --git a/home/linux/gui/base/desktop/nvidia.nix b/home/linux/gui/base/nvidia.nix similarity index 100% rename from home/linux/gui/base/desktop/nvidia.nix rename to home/linux/gui/base/nvidia.nix