Skip to content
Open
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
adc1630
feat: migrate desktop shell to noctalia
RAPSNX Aug 21, 2026
462d63c
feat(noctalia): update config, PAM service, and documentation
RAPSNX Aug 28, 2026
9834874
fix steam / gaming
RAPSNX Aug 29, 2026
cdaa784
docs: add plan for noctalia mode, satty screenshot tool, and keybinds
RAPSNX Aug 29, 2026
5e2054b
feat(hyprland): migrate configuration to lua
RAPSNX Aug 28, 2026
d7b82a9
feat(hyprland): add noctalia mode submap, satty screenshot tool, and …
RAPSNX Aug 31, 2026
29e02ed
Remove PAM shit
RAPSNX Aug 31, 2026
b727ead
Font and minors
RAPSNX Sep 1, 2026
e84ad2f
Add ginkgo
RAPSNX Sep 1, 2026
f1a1ac6
Noctalia submap plugin
RAPSNX Sep 1, 2026
9b5045e
use difftastic
RAPSNX Sep 1, 2026
90bfc2b
Update LazyGit difftastic renderer
RAPSNX Sep 1, 2026
7c119cd
Make Noctalia external locker configurable
RAPSNX Sep 1, 2026
59721b6
shutdown
RAPSNX Sep 1, 2026
423a01a
Fix logout / login zion and reduce changes
RAPSNX Sep 2, 2026
3b6ef78
Cleanup and module extraction
RAPSNX Sep 2, 2026
68c5af6
Split noctalia setup, reduce and simplyfi
RAPSNX Sep 2, 2026
bcf8332
neonix update
RAPSNX Sep 2, 2026
206791e
Add meet room
RAPSNX Sep 3, 2026
39cb19d
llel
RAPSNX Sep 3, 2026
c032e90
Update mapping
RAPSNX Sep 3, 2026
a65a5ad
Update
RAPSNX Sep 3, 2026
f519529
remvoe
RAPSNX Sep 3, 2026
1d2fb53
address review feedback
RAPSNX Sep 3, 2026
964f0a9
Add keyboard layout
RAPSNX Sep 4, 2026
9932a44
Noctalia updates
RAPSNX Sep 7, 2026
5889400
Move to all hyprland
RAPSNX Sep 7, 2026
ef2b0eb
task start
RAPSNX Sep 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ It follows a structure to keep related configurations together, but not too much
```bash
# On fresh systems
nix develop

# Dedicated devshell targets
switch-zion
switch-firefly
```

<details>
Expand All @@ -49,9 +45,6 @@ nix build .#nixosConfigurations.vinox.config.system.build.isoImage
nh os boot --hostname kubex . -d always --target-host kubex
nh os boot --hostname nixberry . -d always --target-host <IP>

# nix remote switch
nixos-rebuild switch --flake .#kubex --target-host 192.168.55.10 --sudo

# enable experimental-features
export NIX_CONFIG="experimental-features = nix-command flakes"
# OR
Expand Down Expand Up @@ -80,6 +73,7 @@ sudo nixos-install --flake .#zion

- [Gaming and Battle.net](./docs/guides/gaming.md)
- [Hyprland - Keymap](./docs/reference/hyprland.md#keymap)
- [Noctalia shell](./docs/reference/noctalia.md)
- [NVIM - Keymap](https://github.com/RAPSNX/neonix/tree/main/docs/keymap.md)

## Licenses
Expand Down
75 changes: 50 additions & 25 deletions dev-shells.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,60 @@ let
deadnix.enable = true;
};
};

# Makefile like targets
switch-firefly = pkgs.writeShellScriptBin "switch-firefly" ''
NIX_CONFIG="experimental-features = nix-command flakes" \
nh home switch -c nix@firefly . --show-activation-logs
'';

switch-zion = pkgs.writeShellScriptBin "switch-zion" ''
nh os switch && nh home switch
'';
mkTargets = t: builtins.mapAttrs (name: script: pkgs.writeShellScriptBin name script) t;
in
{
default = pkgs.mkShell {
inherit (pre-commit-check) shellHook;

packages = builtins.attrValues {
inherit (pkgs)
nh
statix
deadnix
nixfmt
nix-inspect
nix-tree
;

inherit
switch-firefly
switch-zion
;
};
packages = builtins.attrValues (
{
inherit (pkgs)
nh
statix
deadnix
nixfmt
nix-inspect
nix-tree
;
}
// mkTargets {
check = "nix flake check";

sw-zion = ''
nh os switch && nh home switch
'';

swh-zion = ''
nh home switch
'';

swo-zion = ''
nh os switch
'';

sw-fly = ''
nh home switch -c nix@firefly . --show-activation-logs
'';
Comment thread
RAPSNX marked this conversation as resolved.

bld-fly = ''
nh home build -c nix@firefly . --show-activation-logs
'';

bld-iso = ''
nix build .#nixosConfigurations.vinox.config.system.build.isoImage
'';

swr-kubex = ''
nh os boot --hostname kubex . -d always --target-host kubex
'';

swr-berry = ''
nh os boot --hostname nixberry . -d always --target-host nixberry
'';
}
);

NIX_CONFIG = "experimental-features = nix-command flakes";
};
}
19 changes: 17 additions & 2 deletions docs/hosts/firefly.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --daemon

```bash
nix develop
switch-firefly
sw-fly
```

4. Create Hyprland desktop file.
Expand Down Expand Up @@ -68,7 +68,6 @@ Comma-separated list of URLs:
*://*.google.com/*, *://chat.ske.eu01.stackit.cloud/*
```


### GTK Theme

`nwg-look` is used to configure theme in multiple locations.
Expand Down Expand Up @@ -111,3 +110,19 @@ Expected results:
- Portal services come from the host packages, not Home Manager-generated user units.
- `NIX_XDG_DESKTOP_PORTAL_DIR` is absent from the user systemd environment.
- The `find` command does not show Home Manager-generated portal config under `~/.config/xdg-desktop-portal` or Nix profile portal definitions under `~/.nix-profile/share/xdg-desktop-portal`.

## Screen Locking

Firefly uses the Ubuntu-managed `/usr/bin/swaylock`, rather than a Nix-built
locker.
May swaylock needs to be build without PAM support and copied over.
Verify the native locker after switching:

```bash
readlink -f /usr/bin/swaylock
/usr/bin/swaylock --version
test -r /etc/pam.d/swaylock

# For testing, use a autounclock as fallback
sleep 15 && loginctl unlock-session self
```
26 changes: 21 additions & 5 deletions docs/reference/hyprland.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,12 @@ General docs for hyprland.
|---|---|
| `Super+Enter` | Terminal |
| `Super+E` | Launcher |
| `Super+P` | Wlogout |
| `Super+P` | Noctalia session panel |
| `Super+Q` | Kill active |
| `Super+N` | Notification Center |
| `Super+.` | Emoji picker |
| `Alt+Shift` | Switch keyboard layout |
| `Alt+Tab` | Window switcher |
| `Super+N` | Enter Noctalia mode |
| `Super+.` | Noctalia emoji search |

## Window

Expand Down Expand Up @@ -61,7 +63,21 @@ General docs for hyprland.
|---|---|
| `Super+Z` | Mumble mute |
| `Super+Shift+Z` | Mumble deaf |
| `Super+.` | Emoji picker |
| `Super+.` | Noctalia emoji search |

## Noctalia Mode

Enter: `Super+N`

| Key | Action |
|---|---|
| `N` | Notifications / Control Center |
| `M` | System monitor |
| `C` | Calendar |
| `S` | Screenshot region (Noctalia) |
| `Shift+S` | Screenshot fullscreen (Noctalia) |
| `A` | Annotated screenshot (Satty) |
| `Enter` / `Esc` | Exit |

## Resize Mode

Expand All @@ -75,7 +91,7 @@ Enter: `Super+R`

## Window Mode

Enter: `Super+W`
Enter: `Super+G`

| Key | Action |
|---|---|
Expand Down
38 changes: 38 additions & 0 deletions docs/reference/noctalia.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Noctalia
Comment thread
RAPSNX marked this conversation as resolved.

Noctalia is the desktop shell for Hyprland.
Hyprland remains the compositor and window-management layer, Noctalia provides the panel, application and emoji launcher, notifications, session actions, wallpapers, clipboard history, tray, OSD, and control centre.

## Login session

On NixOS, Greetd runs Noctalia Greeter. It discovers Wayland sessions and, after login, starts the selected session; choosing Hyprland runs its generated `start-hyprland` wrapper. The picker remembers the last selection unless a default is configured.

## Migrated components

| Previous component | Noctalia replacement |
|---|---|
| Waybar | Top bar: launcher, workspaces, submap indicator (plugin), clock, tray, system monitors and quick controls |
| Fuzzel and Rofi Emoji | Launcher with application, calculator, emoji, wallpaper and window providers |
| SwayNC | Notification daemon and notification history |
| Wlogout | Session panel with lock, logout, shutdown and reboot actions |
| Hyprpaper | Native wallpaper service |
| Hyprlock | Native Noctalia screen locking; Firefly delegates to its system `swaylock` |
| NetworkManager and Blueman tray applets | Noctalia control-centre widgets and tray |
| Pavucontrol | Noctalia audio controls |
| Grimblast package | Noctalia screenshot service |

Noctalia additionally enables clipboard history, screen time, per-output wallpaper selection, a system monitor, calendar, scheduled night light, brightness OSD, a Windows-reboot session action on Zion, and a dynamic `hypr-submap` bar plugin widget to visually display active Hyprland modes (`resize`, `windows`, `noctalia`).

## Wallpapers

Noctalia manages wallpapers directly. The declarative configuration supplies `minimal-space.jpg` as the global fallback; use Noctalia's wallpaper picker to assign images to individual outputs. Those per-output selections are stored in Noctalia's state directory and persist across rebuilds.

## Shell shortcuts

| Key | Action |
|---|---|
| `Super+E` | Toggle launcher |
| `Super+P` | Toggle session panel |
| `Super+N` | Enter Noctalia mode (`n` notifications, `m` monitor, `c` calendar, `s` region capture, `S` full capture, `a` annotate with satty) |
| `Super+.` | Open emoji search |
| `Alt+Tab` | Open window switcher |
Loading