Installation & Bootstrapping
Juna is designed to be integrated into a Nix Flake-based workflow. While it can be used with legacy Nixpath setups, we recommend using Flakes to ensure pinning and reproducible asset realization.
1. Update flake.nix
Add Juna to your inputs. To maintain a lean dependency tree and prevent nix-store bloat, ensure you follow your system's nixpkgs instance.
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
juna = {
url = "git+https://codeberg.org/Gurjaka/juna";
inputs.nixpkgs.follows = "nixpkgs"; # Critical for store hygiene
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, juna, home-manager, ... }: {
# Your configuration logic here
};
}
2. Inject the Module
Juna operates as a Home Manager module. You must import the default module into your home-manager configuration block to expose the juna.* options.
Standalone Home Manager
homeConfigurations.your-user = home-manager.lib.homeManagerConfiguration {
...
modules = [
juna.homeManagerModules.default
./home.nix
];
};
NixOS Module (via Home Manager)
home-manager.users.gurjaka = {
imports = [ juna.homeManagerModules.default ];
};
3. Initial Activation
Juna is inert by default. To bootstrap the engine, you must explicitly enable it and select a theme. Add this to your home.nix or equivalent module:
{
juna = {
enable = true;
theme = "nord"; # Ensure this theme exists in junaAllThemes
...
};
}
Check out usage guide for a deeper dive into options.
Verification
After running home-manager switch (or nixos-rebuild switch), Juna will begin realizing assets. You can verify the installation by checking the environment:
- Check Symlinks: Ensure
~/.cache/juna/is created (if IPC-capable modules are enabled). - Inspect Options: Visit Modules to see the generated documentation for all available domain modules.
Troubleshooting
- Missing Themes: If you get an "attribute missing" error, ensure the string passed to
juna.themematches a key injunaAllThemes(check themes gallery). - Collision Errors: Juna is a "Polite Guest." If you have existing manual configurations for an application (e.g.,
programs.foot.settings), Juna will attempt to merge pigments. If a conflict occurs, Juna's domain-specific options will usually requirelib.mkForceor a cleanup of your static config.