mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-07-14 08:32:39 +02: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)
|
- [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
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+1
-1
@@ -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";
|
||||||
+1
-1
@@ -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"
|
||||||
Reference in New Issue
Block a user