No description
Find a file
Daniel Thwaites 718ccacff2
Merge pull request #4 from Lyndeno/alacritty
Alacritty Module
2022-07-20 18:01:05 +01:00
.github/workflows Add CI workflow 👷 2022-06-15 15:24:05 +01:00
modules Finish alacritty module 2022-07-20 07:59:30 -06:00
palette-generator Log fitness values 🔊 2022-07-16 00:30:00 +01:00
stylix Add polarity option 2022-06-30 18:17:44 +01:00
flake.lock Use an external library for base16 ♻️ 2022-04-23 10:36:20 +01:00
flake.nix Finish alacritty module 2022-07-20 07:59:30 -06:00
LICENSE Add MIT license 2020-12-21 13:58:20 +00:00
README.md Add polarity option 2022-06-30 18:17:44 +01:00

Stylix

Stylix is a NixOS module which applies a standard colourscheme and font to every supported application, including:

  • Everything which uses GTK: notably Firefox and the GNOME apps
  • Text editors: Vim, NeoVim and Helix
  • Terminals: Kitty and Foot
  • The Linux console
  • The Plymouth boot screen
  • The GRUB bootloader

It also exports functions and values which make it easy to use the theme elsewhere within your NixOS configuration.

The colours used are generated from a background image, using a homemade genetic algorithm.
Fonts are selected by the user via a NixOS option, choosing from any of the font packages available in Nixpkgs.

Stylix builds upon base16.nix to manage the installation of themes into the appropriate location, as required by the application which is being themed.
base16.nix uses templates from Base16.

Installation

Stylix can be installed using the experimental flakes feature:

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

  outputs = { self, nixpkgs, home-manager, stylix }: {
    nixosConfigurations."<hostname>" = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        home-manager.nixosModules.home-manager
        stylix.nixosModules.stylix
      ];
    };
  };
}

Stylix relies on Home Manager to install a lot of its theming. This requires Home Manager to be installed as a NixOS module; how to do this is shown in the example above.

Configuration

{ pkgs, ... }:

{
  # A colorscheme will be chosen automatically based on your wallpaper.
  stylix.image = ./wallpaper.png;

  # Use this option to force a light or dark theme.
  stylix.polarity = "light";

  # Select your preferred fonts, or use these defaults:
  stylix.fonts = {
    serif = {
      package = pkgs.dejavu_fonts;
      name = "DejaVu Serif";
    };
    sansSerif = {
      package = pkgs.dejavu_fonts;
      name = "DejaVu Sans";
    };
    monospace = {
      package = pkgs.dejavu_fonts;
      name = "DejaVu Sans Mono";
    };
    emoji = {
      package = pkgs.noto-fonts-emoji;
      name = "Noto Color Emoji";
    };
  };
}