forked from pub-solar/os
Benjamin Bädorf
41c2d668f7
vifm is removed in favour of nnn, with the keybindings in nvim being changed. TODO: improve the colorscheme of `nnn` to match `ls`. All nvim plugins that were responsible for language syntax highlighting are removed in favour of treesitter[1], a syntax highlighter that parses AST instead of being regex-based. This is still experimental, but my tests so far have not encountered any issues. 1) https://github.com/nvim-treesitter/nvim-treesitter
125 lines
3.6 KiB
Nix
125 lines
3.6 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
psCfg = config.pub-solar;
|
|
wlroots = psCfg.graphical.wayland;
|
|
xdg = config.home-manager.users."${psCfg.user.name}".xdg;
|
|
variables = {
|
|
XDG_CONFIG_HOME = xdg.configHome;
|
|
XDG_CACHE_HOME = xdg.cacheHome;
|
|
XDG_DATA_HOME = xdg.dataHome;
|
|
|
|
XDG_CURRENT_DESKTOP = "sway";
|
|
|
|
QT_QPA_PLATFORM = "wayland";
|
|
|
|
# Wayland fixes
|
|
ECORE_EVAS_ENGINE = "wayland_egl";
|
|
ELM_ENGINE = "wayland_egl";
|
|
SDL_VIDEODRIVER = "wayland";
|
|
WLR_RENDERER =
|
|
if wlroots.software-renderer.enable
|
|
then "pixman"
|
|
else "gles2";
|
|
|
|
EDITOR = "/etc/profiles/per-user/${psCfg.user.name}/bin/nvim";
|
|
VISUAL = "/etc/profiles/per-user/${psCfg.user.name}/bin/nvim";
|
|
|
|
# fix "xdg-open fork-bomb" your preferred browser from here
|
|
BROWSER = "${pkgs.firefox-wayland}/bin/firefox";
|
|
|
|
# node
|
|
NODE_REPL_HISTORY = "${xdg.dataHome}/node_repl_history";
|
|
NVM_DIR = "${xdg.dataHome}/nvm";
|
|
PKG_CACHE_PATH = "${xdg.cacheHome}/pkg-cache";
|
|
|
|
# npm
|
|
NPM_CONFIG_USERCONFIG = "${xdg.configHome}/npm/config";
|
|
NPM_CONFIG_CACHE = "${xdg.configHome}/npm";
|
|
# TODO: used to be XDG_RUNTIME_DIR NPM_CONFIG_TMP = "/tmp/npm";
|
|
|
|
# Make sure virsh runs without root
|
|
LIBVIRT_DEFAULT_URI = "qemu:///system";
|
|
|
|
# wine
|
|
WINEPREFIX = "${xdg.dataHome}/wineprefixes/default";
|
|
|
|
# z
|
|
_Z_DATA = "${xdg.dataHome}/z";
|
|
|
|
# wget
|
|
WGETRC = "${xdg.configHome}/wgetrc";
|
|
|
|
# rust
|
|
RUSTUP_HOME = "${xdg.dataHome}/rustup";
|
|
CARGO_HOME = "${xdg.dataHome}/cargo";
|
|
|
|
# Java
|
|
_JAVA_OPTIONS = "-Djava.util.prefs.userRoot='${xdg.configHome}/java'";
|
|
_JAVA_AWT_WM_NONREPARENTING = "1";
|
|
|
|
# docker
|
|
DOCKER_CONFIG = "${xdg.configHome}/docker";
|
|
|
|
# experimental wayland in firefox/thunderbird
|
|
MOZ_ENABLE_WAYLAND = "1";
|
|
|
|
# chromium / electron on wayland: enable ozone (native wayland mode)
|
|
NIXOS_OZONE_WL = "1";
|
|
|
|
# Vagrant
|
|
VAGRANT_HOME = "${xdg.dataHome}/vagrant";
|
|
VAGRANT_DEFAULT_PROVIDER = "libvirt";
|
|
|
|
# Android
|
|
ANDROID_SDK_ROOT = "${xdg.configHome}/android";
|
|
|
|
ANDROID_AVD_HOME = "${xdg.dataHome}/android";
|
|
ANDROID_EMULATOR_HOME = "${xdg.dataHome}/android";
|
|
ADB_VENDOR_KEY = "${xdg.configHome}/android";
|
|
|
|
# TELEMETRY BS
|
|
VUEDX_TELEMETRY = "off";
|
|
|
|
# FZF shell history widget default colors
|
|
FZF_DEFAULT_OPTS = lib.mkForce "--color=bg+:#2d2a2e,bg:#1a181a,spinner:#ef9062,hl:#7accd7 --color=fg:#d3d1d4,header:#7accd7,info:#e5c463,pointer:#ef9062 --color=marker:#ef9062,fg+:#d3d1d4,prompt:#e5c463,hl+:#7accd7";
|
|
|
|
# nnn theme colors
|
|
NNN_FCOLORS = let
|
|
BLK = "04";
|
|
CHR = "04";
|
|
DIR = "04";
|
|
EXE = "02";
|
|
REG = "00";
|
|
HARDLINK = "01";
|
|
SYMLINK = "01";
|
|
MISSING = "01";
|
|
ORPHAN = "07";
|
|
FIFO = "05";
|
|
SOCK = "05";
|
|
OTHER = "02";
|
|
in
|
|
BLK + CHR + DIR + EXE + REG + HARDLINK + SYMLINK + MISSING + ORPHAN + FIFO + SOCK + OTHER;
|
|
};
|
|
|
|
envListNames = lib.attrsets.mapAttrsToList (name: value: name) variables;
|
|
|
|
# Here we merge an extra variable into the attrset called FULL_ENV_LIST.
|
|
# It's a list of the variable names defined above.
|
|
# We can use this to tell `systemctl import-environment` to import the full list above.
|
|
variablesWithMeta = lib.attrsets.zipAttrsWith (name: values: builtins.head values) [
|
|
variables
|
|
{IMPORT_ENVIRONMENT_ENV_LIST = lib.lists.foldl (a: b: a + " " + b) "IMPORT_ENVIRONMENT_ENV_LIST" envListNames;}
|
|
];
|
|
in {
|
|
home-manager = pkgs.lib.setAttrByPath ["users" psCfg.user.name] {
|
|
home.sessionVariables = variablesWithMeta;
|
|
systemd.user.sessionVariables = variablesWithMeta;
|
|
};
|
|
|
|
environment.variables = variablesWithMeta;
|
|
}
|