{ config, }: rec { pkgs = (import ../pkgs.nix).stable {}; pkgs2305 = (import ../pkgs.nix).stable2305 {}; xorgInnerEnv = pkgs.buildEnv { name = "xorg-inner-env"; paths = [ pkgs.xorg.xorgserver pkgs.xorg.xinit pkgs.xorg.xauth pkgs.xorg.xset pkgs.xorg.xf86inputlibinput pkgs.xorg.xrandr pkgs.xsel (pkgs.runCommand "xorg-conf-inner" {} '' mkdir -p "$out"/share/X11/xorg.conf.d/ cp ${./xorg.conf} "$out"/share/X11/xorg.conf.d/99-loadout.conf '') ]; }; xorgConf = pkgs.runCommand "xorg-conf" {} '' cat >>"$out" <> "$out" done ''; startx = pkgs.writeShellScriptBin "startx-awesome" '' # TODO pass .xinitrc into here, somehow export XORGCONFIG=${xorgConf} exec startx ''; # nativeWrap is used for apps which are not installed via nix which don't play # nicely with it. nativeWrap = pkgs.writeScriptBin "native-wrap" '' #!${pkgs.bash}/bin/bash unset XDG_CONFIG_DIRS unset XDG_DATA_DIRS unset GDK_PIXBUF_MODULE_FILE exec "$@" ''; wp = ../wallpapers; dirsLua = pkgs.writeTextDir "dirs.lua" '' home_dir = os.getenv("HOME").."/" bin_dir = "${./bin}/" share_dir = "${./share}/" wp_dir = "${wp}/" ''; awesome = pkgs.writeScriptBin "awesome" '' #!${pkgs.bash}/bin/bash set -e -x # Turn off powersaving (fuck the environment) xset -dpms xset s off ${config.awesome.startupExtra} # HACK: This sleep is here because phwmon actually creates a separate tray # icon for each thing it monitors, and if the process runs at the same time # as another process which creates a tray icon they can get interleaved. (sleep 5 && phwmon.py) & ############################################################################ # Init awesome data_dir="$HOME/.local/share/awesome"; mkdir -p "$data_dir" log_dir="$data_dir"/logs mkdir -p $log_dir # only keep last N awesome.log files ls "$log_dir" | sort -n | head -n -5 | while read f; do rm "$log_dir"/"$f"; done ############################################################################ # Exec this_log=$log_dir/awesome.$(date '+%Y%m%d.%H%M%S').log echo "New awesome session starting" > $this_log exec ${pkgs.awesome}/bin/awesome \ -c ${./rc.lua} \ --search ${dirsLua} \ --search ${./share} \ --search ${pkgs.awesome}/share/awesome/themes \ 2>&1 2>>$this_log ''; env = pkgs.buildEnv { name = "awesome-env"; paths = [ pkgs.tela-icon-theme # We only include utilities in here which are directly used by awesome. # General purpose applications go in the root default.nix env. pkgs.pavucontrol pkgs.xdg-utils pkgs.arandr pkgs.scrot pkgs.feh pkgs.brightnessctl pkgs.cbatticon pkgs.phwmon xorgInnerEnv nativeWrap awesome startx ]; }; }