No description
Find a file
2026-01-31 14:47:03 -05:00
lib feat: Integrate much better DMS support into Niri and Hyprland configurations 2026-01-04 15:50:07 -05:00
modules feat: add scratch layer support for managing floating windows in Hyprland 2026-01-08 00:26:33 -05:00
parts fix: arroz import evaluation errors 2026-01-31 14:47:03 -05:00
CLAUDE.md docs: add CLAUDE.md 2026-01-01 20:30:27 -05:00
flake.lock feat: Integrate much better DMS support into Niri and Hyprland configurations 2026-01-04 15:50:07 -05:00
flake.nix fix: arroz import evaluation errors 2026-01-31 14:47:03 -05:00
README.md docs: add initial README 2026-01-01 20:22:44 -05:00

❄ arroz.nix (WIP)

Desktop environment extension for mix.nix


Overview

arroz.nix extends mix.nix's host spec with desktop and greeter options. Modules are conditionally loaded based on your host configuration; enable what you need.

Supported Desktops:

  • GNOME
  • Hyprland (w/ hyprscrolling, DankMaterialShell)
  • Niri (w/ DankMaterialShell)

Supported Greeters:

  • GDM
  • DMS (DankMaterialShell greeter)
  • tuigreet (TUI greeter via greetd)

Installation

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-parts.url = "github:hercules-ci/flake-parts";

    mix-nix.url = "github:tophc7/mix.nix";
    arroz-nix.url = "github:tophc7/arroz.nix";
  };

  outputs = inputs@{ flake-parts, mix-nix, arroz-nix, ... }:
    flake-parts.lib.mkFlake {
      inherit inputs;
      specialArgs = { lib = mix-nix.lib; };
    } {
      imports = [ arroz-nix.flakeModules.default ];

      systems = [ "x86_64-linux" "aarch64-linux" ];

      mix = {
        # ... your mix.nix config (users, hostsDir, etc.)

        hosts.desktop = {
          user = "myuser";
          desktop.niri.enable = true;
          greeter.type = "dms";
        };
      };
    };
}

Note: arroz-nix.flakeModules.default includes mix-nix.flakeModules.hosts, so you don't need to import both.


Host Options

Options added to mix.hosts.<name>:

mix.hosts.myhost = {
  # Desktop environments (can enable multiple, mark one as default)
  desktop.gnome.enable = true;
  desktop.gnome.default = true;    # Primary session

  desktop.hyprland.enable = true;
  desktop.hyprland.default = false;

  desktop.niri.enable = true;
  desktop.niri.default = false;

  # Greeter
  greeter.type = "dms";       # "gdm" | "dms" | "tuigreet" | null
  greeter.autoLogin = false;  # Auto-login for primary user
};

License

MIT