catppuccin/nix

The soothing pastel theme - now for Nix!

Built on top of NixOS and home-manager, catppuccin/nix allows you to easily use Catppuccin across all of your apps!

What you'll find here

You should first check out our Getting started guide. Once you're done, you can take a look at all of our available options.

Find a problem?

Feel free to open an issue!

Getting started

catppuccin/nix supports both stable Nix and Flakes! Select one of the options below based on what you want to use.

Stable Nix

When using stable Nix, we have a couple options for installing catppuccin/nix

With npins

npins provides a way to easily "pin" and update external dependencies for your configurations.

Assuming you have followed their getting started guide, you can run the following:

npins add --name catppuccin github catppuccin nix

And in your system configuration:

let
  sources = import ./npins;
in
{
  imports = [
    (sources.catppuccin + "/modules/nixos")
  ];

  # if you use home-manager
  home-manager.users.pepperjack = {
    imports = [
      (sources.catppuccin + "/modules/home-manager")
    ];
  };
}

or if you use a standalone installation of home-manager

let
  sources = import ./npins.nix;
in
{
  imports = [
    (sources.catppuccin + "/modules/home-manager")
  ];

  home.username = "pepperjack";
  programs.home-manager.enable = true;
}

With channels

Nix channels provide a way for you to easily download, update, and use our modules -- though at the cost of reproducibility across machines.

To add catppuccin/nix as a channel, you can run the following:

sudo nix-channel --add https://github.com/catppuccin/nix/archive/main.tar.gz catppuccin
sudo nix-channel --update

And in your system configuration:

{
  imports = [
    <catppuccin/modules/nixos>
  ];

  # if you use home-manager
  home-manager.users.pepperjack = {
    imports = [
      <catppuccin/modules/home-manager>
    ];
  };
}

or if you use a standalone installation of home-manager

{
  imports = [
    <catppuccin/modules/home-manager>
  ];

  home.username = "pepperjack";
  programs.home-manager.enable = true;
}

Flakes

Flakes are the preferred way to to use catppuccin/nix and will be the easiest method for those with them enabled

First, we need to add this project to our inputs so we can use it in our configurations:

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

After, we can use them in a NixOS configuration like so

{
  nixosConfigurations.pepperjacksComputer = {
    system = "x86_64-linux";

    modules = [
      catppuccin.nixosModules.catppuccin
      # if you use home-manager
      home-manager.nixosModules.home-manager

      {
        # if you use home-manager
        home-manager.users.pepperjack = {
          imports = [
            ./home.nix
            catppuccin.homeManagerModules.catppuccin
          ];
        };
      }
    ];
  };
}

or if you use a standalone installation of home-manager

{
  homeConfigurations.pepperjack = home-manager.lib.homeManagerConfiguration {
    pkgs = nixpkgs.legacyPackages.x86_64-linux;
    modules = [
      ./home.nix
      catppuccin.homeManagerModules.catppuccin
    ];
  };
}

By the end, you should have a flake.nix that looks something like this

{
  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
    catppuccin.url = "github:catppuccin/nix";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { nixpkgs, catppuccin, home-manager }: {
    # for nixos module home-manager installations
    nixosConfigurations.pepperjacksComputer = pkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        catppuccin.nixosModules.catppuccin
        # if you use home-manager
        home-manager.nixosModules.home-manager

        {
          # if you use home-manager
          home-manager.users.pepperjack = {
            imports = [
              ./home.nix
              catppuccin.homeManagerModules.catppuccin
            ];
          };
        }
      ];
    };

    # for standalone home-manager installations
    homeConfigurations.pepperjack = home-manager.lib.homeManagerConfiguration {
      pkgs = nixpkgs.legacyPackages.x86_64-linux;
      modules = [
        ./home.nix
        catppuccin.homeManagerModules.catppuccin
      ];
    };
  };
}

Module Options

We provide a search engine for the different supported versions of catppuccin/nix:

If you have any issues with this documentation, don't hesitate to open an issue.

FAQ

  • Q: "How do I know what programs are supported?"
    A: You can find programs supported through home-manager here, and NixOS modules here

  • Q: "How do I set catppuccin.enable for everything I use?"
    A: You can set catppuccin.enable globally through home-manager here, and NixOS modules here

  • Q: "What versions of NixOS and home-manager are supported?"
    A: We primarily support the unstable branch, but try our best to support the current stable release. You can check if your stable release is currently supported at status.nixos.org

  • Q: "How do I fix the error: ... during evaluation because the option 'allow-import-from-derivation' is disabled"
    A: Some ports need to read and/or manipulate remote resources, resulting in Nix performing IFD.

    Disable modules that use IFD
    {
      catppuccin = {
        cava.enable = false;
        gh-dash.enable = false;
        imv.enable = false;
        swaylock.enable = false;
        mako.enable = false;
      };
    }
    

Changelog

1.2.1 - 2024-12-20

πŸ› Bug Fixes

1.2.0 - 2024-12-20

This will (hopefully) be the final release before 2.0.0. In preparation for the next major release, our modules have been moved to a standard catppuccin namespace (i.e., programs.bat.catppuccin.enable is now catppuccin.bat.enable), but aliases to the old options remain for backwards compatibility. These will be removed in 2.0.0

πŸš€ Features

  • home-manager: add transparent option for micro by @henrisota
  • home-manager: add support for zed-editor by @isabelroses
  • modules: move to catppuccin namespace by @isabelroses

πŸ“š Documentation

  • fully document nix library by @getchoo

1.1.1 - 2024-12-12

πŸ› Bug Fixes

πŸ“š Documentation

  • README: fix typo catppucin -> catppuccin by @42willow
  • use nuscht search for options by @getchoo
  • add nicer redirects by @getchoo
  • use git-cliff for release changelogs by @getchoo

1.1.0 - 2024-11-08

πŸš€ Features

πŸ› Bug Fixes

πŸ“š Documentation

New Contributors

1.0.2 - 2024-07-02

πŸ› Bug Fixes

  • home-manager/cursors: exclude from catppuccin.enable by @getchoo

βͺ Reverted

  • gtk: don't replace normal tweak with default by @isabelroses

1.0.1 - 2024-06-30

πŸ› Bug Fixes

  • home-manager/gtk: replace normal tweak with default by @isabelroses

πŸ“š Documentation

  • add v1.0.0 changelog to website by @getchoo
  • symlink site changelog by @getchoo

1.0.0 - 2024-06-29

🚨 Breaking Changes

  • home-manager: add support for global cursors by @Weathercold
  • modules: auto import modules & improve passing of arguments by @getchoo
  • modules: use flavor and accent defaults from org by @uncenter
  • modules: flavour -> flavor by @getchoo
  • modules: bump minimum supported release to 24.05 by @getchoo
  • switch to NixOS/HM modules by @Stonks3141
  • move docs to website by @getchoo

πŸš€ Features

  • gtk: add cursor theming support by @pluiedev
  • hm: micro init by @isabelroses
  • home-manager: add starship theme by @Stonks3141
  • home-manager: add support for kitty by @getchoo
  • home-manager: add support for alacritty by @getchoo
  • home-manager: add support for btop by @getchoo
  • home-manager: add support for tmux by @getchoo
  • home-manager: add support for sway by @getchoo
  • home-manager: add support for neovim by @getchoo
  • home-manager: add support for fish by @Scrumplex
  • home-manager: init mako module by @Anomalocaridid
  • home-manager: init hyprland module by @Anomalocaridid
  • home-manager: init zathura module by @Anomalocaridid
  • home-manager: init delta module by @Anomalocaridid
  • home-manager: init swaylock module by @Anomalocaridid
  • home-manager: init imv module by @Anomalocaridid
  • home-manager: init gitui module
  • home-manager: init fzf module by @Anomalocaridid
  • home-manager: add support for rofi by @henrisota
  • home-manager: add support for dunst by @henrisota
  • home-manager: init yazi module
  • home-manager: init k9s module by @bjw-s
  • home-manager: init rio module by @michaelBelsanti
  • home-manager: add support for cava by @henrisota
  • home-manager: add support for foot by @Lichthagel
  • home-manager: init fcitx5 module by @pluiedev
  • home-manager: allow dark and light accents for gtk cursors by @PerchunPak
  • home-manager: init mpv module by @Anomalocaridid
  • home-manager: add support for skim by @Lichthagel
  • home-manager: add support for zellij by @eljamm
  • home-manager: add transparent option for k9s by @henrisota
  • home-manager: add support for tofi by @henrisota
  • home-manager: add support for gh-dash by @Lichthagel
  • home-manager: add support for waybar by @Lichthagel
  • home-manager: add support for zsh-syntax-highlighting by @XYenon
  • home-manager: source hyprland theme and add accent colors by @Liassica
  • home-manager: add extraConfig option for tmux by @vdbe
  • home-manager: add gnomeShellTheme option for gtk by @c-leri
  • home-manager: add apply option for fcitx5 by @Lichthagel
  • home-manager: add gtk icon theme by @Weathercold
  • home-manager: add support for kvantum by @Lichthagel
  • home-manager: add support for cava themes with transparent background by @AdrienCos
  • home-manager: add support for newsboat by @Xelden
  • home-manager: set hyprcursor by @isabelroses
  • modules: add support for helix by @getchoo
  • modules: add support for bottom by @getchoo
  • modules: add support for polybar by @getchoo
  • modules: add util library by @getchoo
  • modules: add support for lazygit by @isabelroses
  • modules: add global enable option by @drupol
  • modules: add catppuccin.sources option by @getchoo
  • modules: support nixos & home-manager's stable branches by @getchoo
  • modules: add declarations by @getchoo
  • modules/home-manager: add glamour by @ryanccn
  • nixos: add support for grub by @getchoo
  • nixos: init console module by @Anomalocaridid
  • nixos: add global accent option by @Weathercold
  • nixos: add support for sddm by @isabelroses
  • nixos: add support for plymouth by @Weathercold
  • add flavour option to nixos module by @Stonks3141
  • add flake-compat support by @getchoo
  • add autogenerated docs by @getchoo
  • limit use of IFD, add auto updates & vm testing by @getchoo
  • add subflake for development & testing by @getchoo

πŸ› Bug Fixes

  • home-manager: don't set home.activation.batCache by @getchoo
  • home-manager: adopt new naming scheme for gtk theme by @getchoo
  • home-manager: capitalize "Light" and "Dark" by @vgskye
  • home-manager: dont declare xdg.configFile when btop isn't enabled by @getchoo
  • home-manager: correctly set btop's theme by @Anomalocaridid
  • home-manager: apply lazygit theme by @zspher
  • home-manager: match refactors in bat source by @ryanccn
  • home-manager: use correct name for gtk cursor by @Hamish-McLean
  • home-manager: add file for yazi syntax highlighting by @michaelBelsanti
  • home-manager: link GTK 4.0 files by @EnzioKam
  • home-manager: allow overriding styles for the rofi theme by @aloop
  • home-manager: properly enable gtk in vm test by @getchoo
  • home-manager: use local flavour option for delta by @Lichthagel
  • home-manager: make dark/light lowercase for style names in gtk by @selfuryon
  • home-manager: capitalize gtkTheme by @c-leri
  • home-manager: remove xdg.enable assertions by @getchoo
  • home-manager: gtk cursors are now lowercase by @isabelroses
  • home-manager: use correct gtk theme name by @eljamm
  • home-manager: assert qt.style.name for kvantum theme by @getchoo
  • home-manager: don't let swaylock cause infinite recursion by @getchoo
  • home-manager: assert qt.platformTheme.name for kvantum by @olifloof
  • home-manager: only enable pointerCursor by default on linux by @XYenon
  • home-manager/bat: use attrset for theme specification by @ryanccn
  • home-manager/sway: avoid IFD by @Scrumplex
  • modules: vendor our own revision of nixpkgs by @getchoo
  • modules: pass version to mkOptionDoc correctly by @getchoo
  • modules: shorten defaultText for catppuccin.sources by @getchoo
  • nixos: sddm package not being installed by @Weathercold
  • nixos: use the qt 6 version of sddm by @isabelroses
  • import bat.nix by @Stonks3141
  • don’t enable bat by @Stonks3141
  • set correct path for modules by @getchoo

πŸ“š Documentation

New Contributors

Contributing

catppuccin/nix is an open source, MIT licensed project. Contributions - including bug reports, feature requests, and improvements - can be made on our GitHub repository.

If you are interested in hacking away at our modules, make sure to read our Contributing guidelines