{ pkgs, lib, config, ... }: let nixCommands = { height, width }: pkgs.writeText "NixCommands.hs" /* haskell */ '' module NixCommands where nixStartIrc = "${pkgs.rxvt_unicode}/bin/urxvt -e irc" nixStartAudacious = "${pkgs.audacious}/bin/audacious" nixStartFlameshot = "${pkgs.flameshot}/bin/flameshot gui -p /share/" nixInvertColors = "${pkgs.xcalib}/bin/xcalib -invert -alter" nixStartRedshift = "${pkgs.redshift}/bin/redshift -O 6100 -g 0.9:0.9:0.9 -b 0.9" nixResetRedshift = "${pkgs.redshift}/bin/redshift -x" nixSetCursorImage = "${pkgs.xorg.xsetroot}/bin/xsetroot -cursor_name left_ptr" nixSetBackground = "${pkgs.haskellPackages.image-generator}/bin/image-generator --height ${toString height} --width ${toString width} --output /dev/shm/background.png && ${pkgs.feh}/bin/feh --bg-scale /dev/shm/background.png" nixStartAlbert = "${pkgs.albert}/bin/albert" nixStartCopyq = "${pkgs.copyq}/bin/copyq" nixStartTerminal = "${pkgs.rxvt_unicode_with-plugins}/bin/urxvtc" ''; in { home-manager.users.mainUser = { home.file.".xmonad/xmonad.hs".source = ./xmonad/Main.hs; home.file.".xmonad/lib/NixCommands.hs".source = nixCommands { height = config.configuration.desktop.height; width = config.configuration.desktop.width; }; home.file.".xmonad/lib/SolarizedLight.hs".source = ./xmonad/SolarizedLight.hs; home.file.".xmonad/lib/SolarizedDark.hs".source = ./xmonad/SolarizedDark.hs; home.file.".xmonad/lib/FloatKeys.hs".source = ./xmonad/FloatKeys.hs; home.file.".xmonad/lib/TabbedFix.hs".source = ./xmonad/TabbedFix.hs; }; }