{ config, lib, pkgs, ... }: let waybar_sway_config = pkgs.writeTextFile { name = "waybar.conf"; text = '' # # Status Bar: # # Read `man 5 sway-bar` for more information about this section. bar { position top font pango:Cascadia Mono, FontAwesome 10 swaybar_command waybar colors { statusline #ffffff background #323232 inactive_workspace #32323200 #32323200 #5c5c5c } } ''; }; waybar_available_memory = (pkgs.writeScriptBin "waybar_custom_available_memory" ( builtins.readFile ./files/waybar_scripts/waybar_available_memory_linux.bash )).overrideAttrs (old: { buildCommand = "${old.buildCommand}\n patchShebangs $out"; }); waybar_battery = (pkgs.writeScriptBin "waybar_custom_battery" ( builtins.readFile ./files/waybar_scripts/waybar_battery_linux.bash )).overrideAttrs (old: { buildCommand = "${old.buildCommand}\n patchShebangs $out"; }); waybar_clock = (pkgs.writeScriptBin "waybar_custom_clock" ( builtins.readFile ./files/waybar_scripts/waybar_custom_clock.py )).overrideAttrs (old: { buildCommand = "${old.buildCommand}\n patchShebangs $out"; }); waybar_night_mode = (pkgs.writeScriptBin "waybar_night_mode" ( builtins.readFile ./files/waybar_scripts/waybar_night_mode.bash )).overrideAttrs (old: { buildCommand = "${old.buildCommand}\n patchShebangs $out"; }); waybar_sound = (pkgs.writeScriptBin "waybar_custom_sound" ( builtins.readFile ./files/waybar_scripts/waybar_sound_linux.bash )).overrideAttrs (old: { buildCommand = "${old.buildCommand}\n patchShebangs $out"; }); waybar_temperature = (pkgs.writeScriptBin "waybar_custom_temperature" ( builtins.readFile ./files/waybar_scripts/waybar_temperature_linux.bash )).overrideAttrs (old: { buildCommand = "${old.buildCommand}\n patchShebangs $out"; }); in { imports = [ ]; options.me = { waybar.enable = lib.mkOption { type = lib.types.bool; default = false; example = true; description = "Whether we want to install waybar."; }; }; config = lib.mkIf config.me.waybar.enable ( lib.mkMerge [ (lib.mkIf config.me.graphical { environment.systemPackages = with pkgs; [ waybar waybar_available_memory waybar_battery waybar_clock waybar_night_mode waybar_sound waybar_temperature python3 # for clock TODO python should not be in the system packages, maybe switch to a venv? ref https://nixos.wiki/wiki/Python bc # for temperature and sound jq # for memory, battery, sound, night mode, and temperature upower # for battery wlsunset # for night mode ]; me.swayIncludes = [ waybar_sway_config ]; services.upower.enable = true; # for battery home-manager.users.talexander = { pkgs, ... }: { home.file = { ".config/waybar/config" = { source = ./files/waybar_config.json; }; ".config/waybar/style.css" = { source = ./files/style.css; }; }; }; }) ] ); }