refactor: replace gammastep by noctalia-shell, update README (#241)

This commit is contained in:
Ryan Yin
2026-01-04 00:06:22 +08:00
committed by GitHub
parent fb7a0cd178
commit 74c8912897
12 changed files with 92 additions and 62 deletions
+1 -2
View File
@@ -151,8 +151,7 @@ Other dotfiles that inspired me:
- [davidtwco/veritas](https://github.com/davidtwco/veritas) - [davidtwco/veritas](https://github.com/davidtwco/veritas)
- [gvolpe/nix-config](https://github.com/gvolpe/nix-config) - [gvolpe/nix-config](https://github.com/gvolpe/nix-config)
- [Ruixi-rebirth/flakes](https://github.com/Ruixi-rebirth/flakes) - [Ruixi-rebirth/flakes](https://github.com/Ruixi-rebirth/flakes)
- [fufexan/dotfiles](https://github.com/fufexan/dotfiles): gtk theme, xdg, git, media, anyrun, - [fufexan/dotfiles](https://github.com/fufexan/dotfiles): gtk theme, xdg, git, media, etc.
etc.
- [nix-community/srvos](https://github.com/nix-community/srvos): a collection of opinionated and - [nix-community/srvos](https://github.com/nix-community/srvos): a collection of opinionated and
sharable NixOS configurations for servers sharable NixOS configurations for servers
- Modularized NixOS Configuration - Modularized NixOS Configuration
+1 -1
View File
@@ -39,7 +39,7 @@ home/
- Shared configurations for editors, shells, and essential tools - Shared configurations for editors, shells, and essential tools
2. **linux**: Linux-specific configuration 2. **linux**: Linux-specific configuration
- Desktop environments (Hyprland, Niri) - Desktop environments (Noctalia Shell, Niri compositor)
- Linux-specific GUI applications - Linux-specific GUI applications
- System integration tools - System integration tools
+1 -2
View File
@@ -28,6 +28,5 @@ cases.
## Usage ## Usage
- **Lightweight/Terminal**: Use `core.nix` or `tui.nix` for terminal-focused setups - **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 - **Desktops**: Use `gui.nix` for full desktop environments with Noctalia Shell and Niri compositor
Niri
- **Custom**: Mix and match configurations as needed for your specific use case - **Custom**: Mix and match configurations as needed for your specific use case
+3 -4
View File
@@ -13,16 +13,15 @@ Manager.
### Base Desktop Environment ### Base Desktop Environment
- **base**: Common desktop configurations shared across all environments, including: - **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 - Creative tools and media applications
- Development tools - Development tools
- Eye protection utilities (gammastep)
- Fcitx5 input method framework - Fcitx5 input method framework
- Games and gaming utilities - Games and gaming utilities
- GTK theme configurations - GTK theme configurations
- Immutable file handling - Immutable file handling
- Note-taking applications - Note-taking applications
- Wallpaper management with auto-switcher
- Wayland applications - Wayland applications
- XDG desktop configurations - XDG desktop configurations
@@ -35,7 +34,7 @@ Manager.
1. **Configuration Location**: Desktop environment configuration files are located in `~/.config`, 1. **Configuration Location**: Desktop environment configuration files are located in `~/.config`,
which can be easily managed by Home Manager. 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 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, Module, these user-level services might fail to start automatically. With Home Manager modules,
we can control systemd service dependency order more effectively. we can control systemd service dependency order more effectively.
+84
View File
@@ -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)
@@ -1,7 +1,5 @@
{ mylib, pkgs, ... }: { mylib, pkgs, ... }:
{ {
imports = mylib.scanPaths ./.;
# wayland related # wayland related
home.sessionVariables = { home.sessionVariables = {
"NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland "NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland
-49
View File
@@ -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
};
};
};
}
@@ -24,7 +24,7 @@
xdg.configFile = xdg.configFile =
let let
mkSymlink = config.lib.file.mkOutOfStoreSymlink; 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 in
{ {
"noctalia/settings.json".source = mkSymlink "${confPath}/settings.json"; "noctalia/settings.json".source = mkSymlink "${confPath}/settings.json";
@@ -332,7 +332,7 @@
"autoSchedule": true, "autoSchedule": true,
"dayTemp": "6500", "dayTemp": "6500",
"enabled": true, "enabled": true,
"forced": false, "forced": true,
"manualSunrise": "06:30", "manualSunrise": "06:30",
"manualSunset": "18:30", "manualSunset": "18:30",
"nightTemp": "4000" "nightTemp": "4000"