Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130{ pkgs, ... }:
let mkConfig = name: keys: '' import XMonad import XMonad.Operations (restart) import XMonad.Util.EZConfig import XMonad.Util.SessionStart import Control.Monad (when) import Text.Printf (printf) import System.Posix.Process (executeFile) import System.Info (arch,os) import System.Environment (getArgs) import System.FilePath ((</>))
main = do dirs <- getDirectories launch (def { startupHook = startup } `additionalKeysP` myKeys) dirs
startup = isSessionStart >>= \sessInit -> spawn "touch /tmp/${name}" >> if sessInit then setSessionStarted else spawn "xterm"
myKeys = [${builtins.concatStringsSep ", " keys}]
compiledConfig = printf "xmonad-%s-%s" arch os
compileRestart resume = do dirs <- asks directories
whenX (recompile dirs True) $ when resume writeStateToFile *> catchIO ( do args <- getArgs executeFile (cacheDir dirs </> compiledConfig) False args Nothing ) '';
oldKeys = [ ''("M-C-x", spawn "xterm")'' ''("M-q", restart "xmonad" True)'' ''("M-C-q", compileRestart True)'' ''("M-C-t", spawn "touch /tmp/somefile")'' # create somefile ];
newKeys = [ ''("M-C-x", spawn "xterm")'' ''("M-q", restart "xmonad" True)'' ''("M-C-q", compileRestart True)'' ''("M-C-r", spawn "rm /tmp/somefile")'' # delete somefile ];
newConfig = pkgs.writeText "xmonad.hs" (mkConfig "newXMonad" newKeys);in{ name = "xmonad"; meta = with pkgs.lib.maintainers; { maintainers = [ nequissimus ivanbrennan ]; };
nodes.machine = { pkgs, ... }: { imports = [ ./common/x11.nix ./common/user-account.nix ]; test-support.displayManager.auto.user = "alice"; services.displayManager.defaultSession = "none+xmonad"; services.xserver.windowManager.xmonad = { enable = true; enableConfiguredRecompile = true; enableContribAndExtras = true; extraPackages = with pkgs.haskellPackages; haskellPackages: [ xmobar ]; config = mkConfig "oldXMonad" oldKeys; }; };
testScript = { nodes, ... }: let user = nodes.machine.users.users.alice; in '' machine.wait_for_x() machine.wait_for_file("${user.home}/.Xauthority") machine.succeed("xauth merge ${user.home}/.Xauthority") machine.send_key("alt-ctrl-x") machine.wait_for_window("${user.name}.*machine") machine.sleep(1) machine.screenshot("terminal1") machine.succeed("rm /tmp/oldXMonad") machine.send_key("alt-q") machine.wait_for_file("/tmp/oldXMonad") machine.wait_for_window("${user.name}.*machine") machine.sleep(1) machine.screenshot("terminal2")
# /tmp/somefile should not exist yet machine.fail("stat /tmp/somefile")
# original config has a keybinding that creates somefile machine.send_key("alt-ctrl-t") machine.wait_for_file("/tmp/somefile")
# set up the new config machine.succeed("mkdir -p ${user.home}/.xmonad") machine.copy_from_host("${newConfig}", "${user.home}/.config/xmonad/xmonad.hs")
# recompile xmonad using the new config machine.send_key("alt-ctrl-q") machine.wait_for_file("/tmp/newXMonad")
# new config has a keybinding that deletes somefile machine.send_key("alt-ctrl-r") machine.wait_until_fails("stat /tmp/somefile", timeout=30)
# restart with the old config, and confirm the old keybinding is back machine.succeed("rm /tmp/oldXMonad") machine.send_key("alt-q") machine.wait_for_file("/tmp/oldXMonad") machine.send_key("alt-ctrl-t") machine.wait_for_file("/tmp/somefile") '';}