Jump to content

Noctalia Shell: Difference between revisions

From Official NixOS Wiki
m Installation[2]: (the link to noctalia's docs for nixos fixed)
No edit summary
 
Line 57: Line 57:
   };
   };
}|name=noctalia.nix|lang=nix}}
}|name=noctalia.nix|lang=nix}}
== Configuration ==
Noctalia's settings can be declared through the Home Manager module's <code>programs.noctalia.settings</code> option, which writes <code>~/.config/noctalia/config.toml</code> from the Nix store. The file is generated only when <code>settings</code> is non-empty, so leaving it unset is one way to keep that file under your own control — for example by managing <code>~/.config/noctalia</code> as an out-of-store symlink.<ref>[https://wiki.infernalcode.com/desktop/noctalia/ Noctalia Architecture — Volatile NixOS Configuration]</ref> Note that <code>customPalettes</code> is written to <code>~/.config/noctalia/palettes/</code> independently of this option.
== See also ==
* [https://wiki.infernalcode.com/desktop/noctalia/ Noctalia Architecture — Volatile NixOS Configuration] — a worked v5 configuration: bar and plugin layout, and a generated Material 3 palette shared with the terminal and prompt.

Latest revision as of 22:31, 23 August 2026

Noctalia Shell is a sleek and minimal desktop shell thoughtfully crafted for Wayland.

Noctalia provides native support for Niri, Hyprland, Sway, Scroll, Labwc and MangoWC. Other Wayland compositors may work but could require additional configuration for compositor-specific features like workspaces and window management.[1]

Installation[2]

A Nix package for Noctalia is currently available on the unstable channel.

❄︎ /etc/nixos/configuration.nix
environment.systemPackages = with pkgs; [
  noctalia-shell
];

Noctalia Shell Flake

You can also get the latest Git version of Noctalia by using flakes.

❄︎ flake.nix
{
  description = "NixOS configuration with Noctalia";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";

    noctalia = {
      url = "github:noctalia-dev/noctalia";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = inputs@{ self, nixpkgs, ... }: {
    nixosConfigurations.awesomebox = nixpkgs.lib.nixosSystem {
      specialArgs = { inherit inputs; };
      modules = [
        # ... other modules
        ./noctalia.nix
      ];
    };
  };
}

If not using the NixOS or Home Manager module, we can install Noctalia using:

❄︎ noctalia.nix
{ pkgs, inputs, ... }:
{
  environment.systemPackages = with pkgs; [
    inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
  ];
}

Alternatively, we can just enable Noctalia using the NixOS or Home Manager module. For example, for Home Manager:

❄︎ noctalia.nix
{ pkgs, inputs, ... }:
{
  home-manager.users.foobar = {
    # import the home manager module
    imports = [
      inputs.noctalia.homeModules.default
    ];

    programs.noctalia = {
      enable = true;
      settings = {
        # configure options
      };
    };
  };
}

Configuration

Noctalia's settings can be declared through the Home Manager module's programs.noctalia.settings option, which writes ~/.config/noctalia/config.toml from the Nix store. The file is generated only when settings is non-empty, so leaving it unset is one way to keep that file under your own control — for example by managing ~/.config/noctalia as an out-of-store symlink.[3] Note that customPalettes is written to ~/.config/noctalia/palettes/ independently of this option.

See also