mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-01-11 22:30:25 +01:00
refactor: replace gammastep by noctalia-shell, update README (#241)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
84
home/linux/gui/base/README.md
Normal file
84
home/linux/gui/base/README.md
Normal 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, ... }:
|
||||
{
|
||||
imports = mylib.scanPaths ./.;
|
||||
|
||||
# wayland related
|
||||
home.sessionVariables = {
|
||||
"NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland
|
||||
@@ -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 =
|
||||
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";
|
||||
@@ -332,7 +332,7 @@
|
||||
"autoSchedule": true,
|
||||
"dayTemp": "6500",
|
||||
"enabled": true,
|
||||
"forced": false,
|
||||
"forced": true,
|
||||
"manualSunrise": "06:30",
|
||||
"manualSunset": "18:30",
|
||||
"nightTemp": "4000"
|
||||
Reference in New Issue
Block a user