os/profiles/base-user/session-variables.nix
Benjamin Bädorf 6d1d683b23
Fix swayidle command, add hibernation on lid close, fix env
The swayidle command in the service was straight up broken, this commit
fixes that.

Environment Variables set in the `session-variables` file are now
correctly imported across the system. This fixes `EDITOR` defaulting to
`nano`.
2022-08-25 00:13:23 +02:00

99 lines
2.9 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";
};
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;
}