{ config, pkgs, lib, ... }: let inherit (pkgs.stdenv) isDarwin; # (hard constants) ppi = 72; dpi = 96; mustFloat = x: x * 1.0; px-pt = px: (mustFloat px) * ppi / dpi; emacs = { package = "base16-theme"; light-mode-theme = "base16-flexoki-light"; dark-mode-theme = "base16-decaf"; minimal-user-emacs-directory = "${config.xdg.configHome}/emacs"; config = '' (setq base16-distinct-fringe-background nil) ''; }; in { # hard to find the right documentation page # https://nix-community.github.io/stylix/options/platforms/home_manager.html stylix = { enable = true; # actually refers to tinted-themes (https://github.com/tinted-theming/schemes) # but only in the base16 variants (TODO update nixpkgs) base16Scheme = "${pkgs.base16-schemes}/share/themes/atelier-dune-light.yaml"; fonts = { sansSerif = lib.mkIf isDarwin { name = "SF Pro"; }; monospace = { name = "Berkeley Mono"; }; sizes = { applications = px-pt 15; # desktop # popups # terminal }; }; targets = { gtk.enable = !isDarwin; fish.enable = false; fzf.colors.enable = false; zed = { inputs.enable = false; fonts.override = { sansSerif.name = ".ZedSans"; }; }; nixvim.enable = false; emacs = { colors.enable = false; fonts.override.sizes.terminal = 15; }; }; }; programs.nixvim.extraConfigVim = '' set notermguicolors ''; programs.fzf = { defaultOptions = [ "--color=16" ]; colors = { fg = "-1"; "fg+" = "-1"; bg = "-1"; "bg+" = "-1"; gutter = "8"; pointer = "-1"; header = "1"; border = "6"; hl = "3"; "hl+" = "11"; info = "2"; prompt = "14"; marker = "21"; spinner = "21"; scrollbar = "dim"; }; }; home.sessionVariables = { CLICOLOR = "1"; LSCOLORS = "gxfxcxdxDxegedabagacad"; # for macOS's ls TERMINAL_THEME_DARK = "Flexoki Dark"; TERMINAL_THEME_LIGHT = "Flexoki Light"; }; programs.fish = { interactiveShellInit = '' bind ctrl-o "sf terminal toggle-light-dark" ''; }; programs.zed-editor = { extensions = [ "flexoki-themes" "melange" ]; userSettings.theme = { light = "Flexoki Light"; dark = "Melange Dark"; }; }; programs.emacs = { extraPackages = epkgs: [ epkgs.${emacs.package} ]; extraConfig = '' (load-file "${emacs.minimal-user-emacs-directory}/theme.el") ''; }; xdg.configFile."emacs/theme.el".source = pkgs.replaceVars ./emacs/theme.el { inherit (emacs) package config light-mode-theme dark-mode-theme ; }; }