Skip to main content

Option 1: Use the workstation template

The fastest way to get started is with the built-in template:
nix flake init -t github:Jylhis/marchyo#workstation
This creates a complete configuration with desktop environment, development tools, and sensible defaults. See the Workstation Template guide for details.

Option 2: Add to an existing flake

Add Marchyo as your only input and build with marchyo.lib.mkNixosSystem. It selects the correct nixpkgs (unstable; stable nixos-26.05 for x86_64-darwin), home-manager, stylix, overlay and marchyo modules automatically — you supply only your own config modules.
{
  inputs.marchyo.url = "github:Jylhis/marchyo";

  outputs = { marchyo, ... }: {
    nixosConfigurations.myhost = marchyo.lib.mkNixosSystem {
      system = "x86_64-linux";
      modules = [
        ./hardware-configuration.nix
        {
          marchyo.desktop.enable = true;
          marchyo.development.enable = true;
          marchyo.users.myuser = {
            fullname = "Your Name";
            email = "your.email@example.com";
          };
        }
      ];
    };

    # macOS uses marchyo.lib.mkDarwinSystem the same way. On x86_64-darwin it
    # transparently pins the stable nixos-26.05 set (the last release supporting
    # Intel macOS); aarch64-darwin and Linux ride unstable.
  };
}
You can still import marchyo.nixosModules.default into your own nixpkgs.lib.nixosSystem call, but then you must pick the right nixpkgs per system yourself. The raw marchyo.inputs.nixpkgs passthrough is always unstable; for a system-correct, overlay-applied package set use marchyo.legacyPackages.<system>.

Option 3: Home Manager only

If you only want the Home Manager modules without the NixOS system modules:
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    marchyo.url = "github:Jylhis/marchyo";
    home-manager.url = "github:nix-community/home-manager";
  };

  outputs = { nixpkgs, marchyo, home-manager, ... }: {
    homeConfigurations.myuser = home-manager.lib.homeManagerConfiguration {
      pkgs = nixpkgs.legacyPackages.x86_64-linux;
      modules = [
        marchyo.homeModules.default
      ];
    };
  };
}

Minimal example

A minimal configuration that enables only the desktop environment:
{
  marchyo.desktop.enable = true;
  marchyo.users.myuser = {
    fullname = "Your Name";
    email = "you@example.com";
  };
}
Enabling marchyo.desktop.enable automatically enables media and office applications via cascading defaults. You can override any of these:
{
  marchyo.desktop.enable = true;
  marchyo.media.enable = false;   # Override: disable media apps
}

Next steps

Last modified on July 9, 2026