6LLASGTJ4B7K56WVLPOANOC3BOXOZICFDM7XQYNBC233D4PLLNSAC RSJTCAOB6WUJLPHNTT2JJWRZ6YOL3X2ZIOWYGNBC7Z5VQG5DQ5OAC SDLAY4CEC2M5KRY2Z2QTQKVQJUSB77IOLXU6RD7QOMUK6GYZBZDQC 4JMWYDTIY2D2HOC4JTGXMGGAFB56LW2VMK4FT4V4XXNHQJWQT5MAC 4U4HTFCQ7XZCSUGDF4BG2SL22K5HAFRGP5DFV6IL3MK2MOW6ZESQC I4EGHW6GGBXNEW5CDRH7UB6QYUHHUXB6FJNPDQ3YBBUEI22SQNOAC ZRQ5HIXJLGSAI5M4KOC7I3QNEXGBPUQE7V4MSY7WLV3DBIGULERQC IPBSEPO6VM4TEPOL2MN47EINIPMHJB63XUBZRCXO5EN3STGBNNVAC 2DOHF7YTTNCYHVAW6TY6AQVQZ3TV3JK4SCF7LZQTLBILP3K5NIWAC EKNR3UNTAR2MCROCKAYF3UUJBG56ZV2AUJD4BMQYGQJ3KUZT4GKQC QF7VMCPGQIVJI2CPGJOEWS3ROVCB2CB7STNZ4N55UHMGWOZAHJIAC T47INCMZO5G24CHPJ3JACA3JJKADMPBZRAHAZPQRP4MOJFNXTWCQC JDPDRPPDSMGQSNUUIALW5ZJEUI4IUYOBBTIHQHURK36BVQFBF2WAC BX2EXA45RHKBK4ZFZYUMHYDYKRVIUQJZDW6O643XUHKI5LVNDSJAC BYCLZBRJTN2ZIINK42SBGJHKCPVXECL632SYTV6EEQROEUNZJFHAC A32NGEIBDOOKELILD6YPAGDCEDVVSYBSNJNS4RDXB7SHBQNIVNPQC 3OAFCHK7EIRUD3ZLAGZ3MAXVYOGFAJVDOF63ZIGNU7I3RWIPMAOQC N7DHDONTAB6UEU4PHQR7BNSUQFAA4JBIVSTKDQ7V7OF3CLOEWXOQC 6DZO6E3ALZ477IYSCGVKASDYM54CZEDON55NR2UTUGOCZR3BMTAAC T4B2IJ4JIWX4C4QJI2S5TQHBO4U4ZFCIWR2VNIH6MGAOPMIAVHAQC LW7EMVOBZAG5K4QXAKPM46IV2U2U7EWKFKY4S3AR2SJESHJ7YJ3AC SYTPYTMXWHIFHN3ENTDGOGSXWSXPKQUURXJTHSDUGOYA5QPGC45QC VBIKNV64COAFFZXT2MWPUFAZPSPFIIK2TOPGBXKIOU7XCVQ4LJ6AC WJXAODNJYL54BUFSRF3G2AEBWEI6Q4YH5DXYLK3UYC6JRJYGG7TQC WVAJNAJ4EVTTIREWQDTBMGASLMWJUVBHIM2MKKOFTFYVIIMR6CBAC 2DCSBI5WHA34B5NDE27MLEFQALF3O2MN4W75E5Y6EIVBY5C3JM6QC 4PEXC6EE4FNTPUYT64XDSOD6X5IVDY3Y2QDKYTSHEBOYS4JATQTQC CL7RP3ZICLJT7YUI3O54IB2GZY7QMKK7ZC6GZPDXFYQKOOM64CHQC UGB75SJDEEIESGIBHGNFNLBXDRVG5RTSQGXCPX6YALFUOGDKWZHQC GLQKXNKF6VOLND7MTAYARMRLMDGRZHPYLNMOIRWC7IYVZ3FD77EQC IWXQRSNIUR6NGULYQZ2AJA6T254TWEDOOQJGTLLVT6LAFOFWRTBAC INKINKWN6MRRH4CGUVTWI5TQ7VSCHA6ODXMLHVVFCHYPM27AYNNQC SNOBOIQJMXWVINDV7N23CPNGPGH2RCSY3FR4SES4I2KFIDIJ577AC 5TV7PKKVOU5ZI54V25KW4GSHHF4SJUDOV6TODQ7FKKSJZGXY2IQAC ROMB2RDGX2LJ4U2XAWJ5S7YANTEY7ICEHIV3FJCPXTTHM5DOYFHQC EAV6XCAV7SQXSOO3UX3UYKEPNCNQ26BCFJ64ALU646ZZELDJ2ALQC V5HNZGTFYNRMKUU2HXDGKAPVZ35JZAQZKXSGZ337HKTDYJLQ6D2QC UIUV6ER2W7XTLBOLPPZWVW4UOZ4KQWKFOYAEBUGSSCZ7BMSZRP3AC KUTBHT3LPAECGVN2NRJHGKBQP2WEPYO6BCG3RCH4YFHPL3MWVWXAC IKVV4XDUTXIEYX6G3GRZEVXK5IWGKZOMG76BO25GS6K3JOUTXK4AC 2AA2CTPIDRVJ4TRA5UK2IS4W6EKSIB3UBZWXPOVLX4FMJLSBOLPAC A5LLNGHQYNL2EOXRIAH4VR6AGBEYYKX4AMWYXS4T2SKS2EKZK3VAC NJ5ENURMCBSNFQPNXXNUBMUXVJEBIGNH2T7EWGB63F3FV723BUWAC TXU55BEHKBJLAFQATXNK36M3CM2KNH3YCQCVF54NK7O2CO4LHM4QC ZH5LGJE4YAOHG5UP6P4X3NPIUROJWHEXR3PX56PATR5KNIMQL35QC RXICO42ORY5LDWQRI7RQ6GVKB2W32BFCZ62J4KZFHBGPBKPP77AQC PKUQNGARQTNWOZNQYHXVQH2UEXORRVKZZUYGXPQB3AAS6QXAWXBQC PS2VFJMZVN77RHZFVUVD2DA3MZNMXYPHT6XRHW2EUTZRGLAXF4YQC WDE4LLYP24YKDAV6PW62DFNWV3WZWQUUPA7CZH6STDZFYU7ARERQC LMNZL55P3Z7IS2W7ZJTPGFEBSA5J2OHELRV7IWSCES5MNPSH6Q2QC IEQ3LC3LCWZGWJ6I2L2NHBIHMY5RQECYFSUOX4J3DJX2WUFOIVNQC TIAN54QWQA6YCIYL6C7YXXELA3SKBSMP2Y3ET2YLRWHHOPDE3Y3AC CUFEZOOL3ITGUC2NOLN3WFVWTETYM7L5QU3UNVXVOH6GQYI4R5FQC TEJLAHEG6JYVPWBHUHIO6NTSB7HO62RJ6G5J2B6UNPDVG7XK4XIAC M42H5HLDPW5VN6H7PAXZQ5QILN4ZOCVIKZVCWZ5T26VEW4UZRN7AC YCLCLKWHFN47MFXOEAUAMLI7STJ5O734C5ZHFA65NYR4QEDAAH6AC WHTEZBXRS7R3AM44LJZFR2YE6RP4IWE3AB5V3DYGO4YJU7PBTMQAC V35VSNOB6RFO6F3GDIVMZVNTUCZPYCNA4LGDBGW4HYGLFMIIOB4AC HH6WAMVTZDJY4VHUQOTEAWVFOXYRLFK6LZTAPY53UZYDSCOJFSFQC ZH6EAGFIDERASR6IRHMOHY3RFYDIXB6SXBQZHA36X6NOENM6W43QC COUSBBHL5XPZC5KWCYFFAE554D4VFFO55QOD726ODWIRZGWOUSUAC 5PKY2AL3ELY7NERTVH2K2SNF64ZINHWKSOJCUQTL25RJHUXSTLBQC HUGEVM5JE52YM6XEQFPLVVZ6XAGS6DUTE4WD4ECQO2XUAWFCRPFQC TG3BV5E5KFMDDZQUFFRUQPGWEJTQ2D3SMKDAQYDQIU3W4LHCGARAC QWCRX3X3GK54RQ6FWNNFBIRCSORLNRP25U6B622VFA3UXFJCOJQAC ISTJKNJXBXQUSRXCILUOFWNDHC4N7VM2BJ4IGFGYCBBFXGDEVSQQC MLRHVC6KVWGVDIQMAUMNAGWYBB6AQAJCEJY7MKDGN72JRC74VT6AC 7UWOMG432IHX7BGGN7PPQUGSSUP6CCQNBXOO7TKNMKMK2R2WFOGAC # we want the config of ff, but we don't install it from nix cause the nix package# does not support macos, we instead use nix-darwin's homebrew integration to install# firefox for usprograms.firefox.enable = false;programs.firefox.package = pkgs.hello; # hack cause we install ff w/ nix-darwin.homebrew
programs.firefox.package = pkgs.firefox-devedition-bin;programs.zoom.enable = false;programs.darktable.enable = false;programs.signal.enable = false;
launchd.user.agents.mbsync =if config.home-manager.users."${pii.userName}".accounts.email.accounts != {}then {command = "${pkgs.isync}/bin/mbsync -a && mu ${pkgs.mu}/bin/mu index";serviceConfig.StartInterval = 60 * 5;}else {};
modules = [hostPathhmModule{home-manager.extraSpecialArgs = specialArgs system;home-manager.useGlobalPkgs = true;home-manager.useUserPackages = true;home-manager.backupFileExtension = "hm.bak";}];
modules =[hostPathhmModule{home-manager.extraSpecialArgs = specialArgs system;home-manager.useGlobalPkgs = true;home-manager.useUserPackages = true;home-manager.backupFileExtension = "hm.bak";}]++ (if system == "aarch64-darwin"then [inputs.mac-app-util.darwinModules.default]else []);
{config,lib,pkgs,dotfiles_lib,...}: letcfg = config.dotfiles.shell.ranger;in {options.dotfiles.shell.ranger = with dotfiles_lib.options; {enable = mkDefaultEnabledOption "enables ranger, the tui file manager.";};config = lib.mkIf cfg.enable {home.packages = [pkgs.ranger];xdg.configFile = lib.mkIf cfg.enable {"ranger/rc.conf".text = ''map l display_filemap <A-n> scroll_preview 1map <A-e> scroll_preview -1copymap <UP> ecopymap <DOWN> ncopymap <LEFT> mcopymap <RIGHT> imap N move down=0.5 pages=Truemap E move up=0.5 pages=Truecopymap N <C-D>copymap E <C-U>map M history_go -1map I history_go 1map ] move_parent 1map L eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)map <C-n> search_nextmap <C-N> search_next forward=Falsetmap N eval -q fm.ui.taskview.task_move(-1)tmap E eval -q fm.ui.taskview.task_move(0)'';};};}
{pkgs, ...}: {programs.waybar = {systemd = {enable = false;target = "sway-session.target";};style = builtins.readFile ./waybar_style.css;settings = [{layer = "top";position = "top";height = 24;modules-left = ["clock" "custom/media"];modules-center = ["sway/mode" "sway/workspaces"];modules-right = ["idle_inhibitor" "pulseaudio" "network" "bluetooth" "battery" "tray"];"sway/workspaces" = {disable-scroll = true;all-outputs = false;format = "{icon}";format-icons = {urgent = "🔥";focused = "";default = "";};
{pkgs,lib,config,...}: {config = lib.mkIf config.dotfiles.gui.enable {programs.waybar = {systemd = {enable = false;target = "sway-session.target";};style = builtins.readFile ./waybar_style.css;settings = [{layer = "top";position = "top";height = 24;modules-left = ["clock" "custom/media"];modules-center = ["sway/mode" "sway/workspaces"];modules-right = ["idle_inhibitor" "pulseaudio" "network" "bluetooth" "battery" "tray"];"sway/workspaces" = {disable-scroll = true;all-outputs = false;format = "{icon}";format-icons = {urgent = "🔥";focused = "";default = "";};
clock = {format = "{:%I:%M %p}";format-alt = "{:%Y-%m-%d}";};battery = {bat = "BAT0";states = {good = 95;warning = 25;critical = 10;
clock = {format = "{:%I:%M %p}";format-alt = "{:%Y-%m-%d}";};battery = {bat = "BAT0";states = {good = 95;warning = 25;critical = 10;};format = "{icon}";format-icons = ["" "" "" "" ""];tooltip-format = ''{capacity}%{timeTo}'';};network = {# interface = "wlp2s0"; # (Optional) To force the use of this interfaceformat-wifi = "";format-ethernet = "";format-disconnected = "⚠";tooltip-format-wifi = "{essid} ({signalStrength}%) ";tooltip-format-ethernet = "ethernet: {ifname}: {ipaddr}/{cidr}";tooltip-format-disconnected = "Disconnected";
format = "{icon}";format-icons = ["" "" "" "" ""];tooltip-format = ''{capacity}%{timeTo}'';};network = {# interface = "wlp2s0"; # (Optional) To force the use of this interfaceformat-wifi = "";format-ethernet = "";format-disconnected = "⚠";tooltip-format-wifi = "{essid} ({signalStrength}%) ";tooltip-format-ethernet = "ethernet: {ifname}: {ipaddr}/{cidr}";tooltip-format-disconnected = "Disconnected";};pulseaudio = {format = "{volume}% {icon}";format-bluetooth = "{volume}% {icon}";format-muted = "";format-icons = {headphones = "";handsfree = "";headset = "";phone = "";portable = "";car = "";default = ["" ""];
pulseaudio = {format = "{volume}% {icon}";format-bluetooth = "{volume}% {icon}";format-muted = "";format-icons = {headphones = "";handsfree = "";headset = "";phone = "";portable = "";car = "";default = ["" ""];};on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";};idle_inhibitor = {format = "{icon}";format-icons = {activated = "";deactivated = "";
idle_inhibitor = {format = "{icon}";format-icons = {activated = "";deactivated = "";};
};"custom/media" = {on-click = "${pkgs.playerctl}/bin/playerctl play-pause";format = "🎵 {}";max-length = 40;interval = 30; # Remove this if your script is endless and write in loopexec = with pkgs; letname = "waybar_media_play_pause_toggler";in "${writeShellApplication {inherit name;runtimeInputs = [playerctl];text = ''player_status=$(playerctl status 2>/dev/null)
"custom/media" = {on-click = "${pkgs.playerctl}/bin/playerctl play-pause";format = "🎵 {}";max-length = 40;interval = 30; # Remove this if your script is endless and write in loopexec = with pkgs; letname = "waybar_media_play_pause_toggler";in "${writeShellApplication {inherit name;runtimeInputs = [playerctl];text = ''player_status=$(playerctl status 2>/dev/null)
wayland.windowManager.sway = {config.fonts.names = ["DejaVu Sans Mono" "FontAwesome5Free"]; # TODO don't hardcodeconfig.bars = [{command = "waybar";}];config.floating.criteria = [{app_id = "pavucontrol";}{app_id = "zenity";}{app_id = "org.keepassxc.KeePassXC";}{class = ".zoom";}];config.floating.titlebar = false;config.focus.mouseWarping = true;config.gaps.inner = 3;config.gaps.outer = 3;config.gaps.smartGaps = true;config.input."*".natural_scroll = "enabled";config.input."type:touchpad" = {tap = lib.mkDefault "enabled";tap_button_map = lib.mkDefault "lrm";accel_profile = lib.mkDefault "adaptive";
config = lib.mkIf config.dotfiles.gui.sway.enable {wayland.windowManager.sway = {config.fonts.names = ["DejaVu Sans Mono" "FontAwesome5Free"]; # TODO don't hardcodeconfig.bars = [{command = "waybar";}];config.floating.criteria = [{app_id = "pavucontrol";}{app_id = "zenity";}{app_id = "org.keepassxc.KeePassXC";}{class = ".zoom";}];config.floating.titlebar = false;config.focus.mouseWarping = true;config.gaps.inner = 3;config.gaps.outer = 3;config.gaps.smartGaps = true;config.input."*".natural_scroll = "enabled";config.input."type:touchpad" = {tap = lib.mkDefault "enabled";tap_button_map = lib.mkDefault "lrm";accel_profile = lib.mkDefault "adaptive";};config.output."*".bg = "${../wallpapers}/1.jpg fill";config.startup = [{command = "${pkgs.kanshi}/bin/kanshi";always = true;}];config.window.titlebar = false;config.workspaceAutoBackAndForth = true;wrapperFeatures.base = true;wrapperFeatures.gtk = true;extraConfig = ''seat seat0 xcursor_theme breeze 62for_window [app_id="scratch_terminal"] move scratchpad, resize set 800 610exec ${pkgs.alacritty}/bin/alacritty --title=scratch_terminal'';
config.output."*".bg = "${../wallpapers}/1.jpg fill";config.startup = [{command = "${pkgs.kanshi}/bin/kanshi";always = true;}];config.window.titlebar = false;config.workspaceAutoBackAndForth = true;wrapperFeatures.base = true;wrapperFeatures.gtk = true;extraConfig = ''seat seat0 xcursor_theme breeze 62for_window [app_id="scratch_terminal"] move scratchpad, resize set 800 610exec ${pkgs.alacritty}/bin/alacritty --title=scratch_terminal'';
config.wayland.windowManager.sway.config.modes = {disabled_mode = {# a mode for ignoring all keybindings until the compose mode keys are# repeated."Shift+space" = "mode default";
config = lib.mkIf config.dotfiles.gui.sway.enable {wayland.windowManager.sway.config.modes = {disabled_mode = {# a mode for ignoring all keybindings until the compose mode keys are# repeated."Shift+space" = "mode default";};compose_mode ={# a mode for entering other modes, or inserting commands based on# sequential key presses# e.g. Shift+space -> k -> s == bemenu_try_restart_systemd_user_servicesf = "fullscreen toggle; mode default;";k = "mode kill_mode";r = "mode resize_mode";t = ''exec swaymsg [app_id="scratch_terminal"] scratchpad show; mode default;'';w = "mode workspace_mode";v = "mode volume_mode";"Shift+space" = "mode disabled_mode";}// leaveModeKeys;kill_mode ={"Shift+q" = "exec logout";q = "${execNwgBar}";r = "exec systemctl reboot -i";s = "exec bemenu_try_restart_systemd_user_services; mode default;";}// leaveModeKeys;resize_mode ={"${cfg.up}" = "resize grow height 15 px";"${cfg.down}" = "resize shrink height 15 px";"${cfg.left}" = "resize shrink width 15 px";"${cfg.right}" = "resize grow width 15 px";"Shift+${cfg.up}" = "resize grow height 45 px";"Shift+${cfg.down}" = "resize shrink height 45 px";"Shift+${cfg.left}" = "resize shrink width 45 px";"Shift+${cfg.right}" = "resize grow width 45 px";}// leaveModeKeys;volume_mode ={"${cfg.up}" = "${setVolume} +1%";"Shift+${cfg.up}" = "${setVolume} +10%";"${cfg.down}" = "${setVolume} -1%";"Shift+${cfg.down}" = "${setVolume} -10%";}// leaveModeKeys;workspace_mode ={"0" = "workspace 0";"1" = "workspace 1";"2" = "workspace 2";"3" = "workspace 3";"4" = "workspace 4";"5" = "workspace 5";"6" = "workspace 6";"7" = "workspace 7";"8" = "workspace 8";"9" = "workspace 9";"${cfg.right}" = "workspace next";"${cfg.left}" = "workspace prev";}// leaveModeKeys;
compose_mode ={# a mode for entering other modes, or inserting commands based on# sequential key presses# e.g. Shift+space -> k -> s == bemenu_try_restart_systemd_user_servicesf = "fullscreen toggle; mode default;";k = "mode kill_mode";r = "mode resize_mode";t = ''exec swaymsg [app_id="scratch_terminal"] scratchpad show; mode default;'';w = "mode workspace_mode";v = "mode volume_mode";"Shift+space" = "mode disabled_mode";}// leaveModeKeys;kill_mode ={"Shift+q" = "exec logout";q = "${execNwgBar}";r = "exec systemctl reboot -i";s = "exec bemenu_try_restart_systemd_user_services; mode default;";}// leaveModeKeys;resize_mode ={"${cfg.up}" = "resize grow height 15 px";"${cfg.down}" = "resize shrink height 15 px";"${cfg.left}" = "resize shrink width 15 px";"${cfg.right}" = "resize grow width 15 px";"Shift+${cfg.up}" = "resize grow height 45 px";"Shift+${cfg.down}" = "resize shrink height 45 px";"Shift+${cfg.left}" = "resize shrink width 45 px";"Shift+${cfg.right}" = "resize grow width 45 px";}// leaveModeKeys;volume_mode ={"${cfg.up}" = "${setVolume} +1%";"Shift+${cfg.up}" = "${setVolume} +10%";"${cfg.down}" = "${setVolume} -1%";"Shift+${cfg.down}" = "${setVolume} -10%";}// leaveModeKeys;workspace_mode ={"0" = "workspace 0";"1" = "workspace 1";"2" = "workspace 2";"3" = "workspace 3";"4" = "workspace 4";"5" = "workspace 5";"6" = "workspace 6";"7" = "workspace 7";"8" = "workspace 8";"9" = "workspace 9";"${cfg.right}" = "workspace next";"${cfg.left}" = "workspace prev";}// leaveModeKeys;};
config.wayland.windowManager.sway.config.keybindings = {"${cfg.modifier}+t" = "exec ${cfg.terminal}";"${cfg.modifier}+q" = "kill";"${cfg.modifier}+space" = ''exec ${j4-dmenu-desktop}/bin/j4-dmenu-desktop'';"${cfg.modifier}+Shift+q" = "${execNwgBar}";
wayland.windowManager.sway.config.keybindings = {"${cfg.modifier}+t" = "exec ${cfg.terminal}";"${cfg.modifier}+q" = "kill";"${cfg.modifier}+space" = ''exec ${j4-dmenu-desktop}/bin/j4-dmenu-desktop'';"${cfg.modifier}+Shift+q" = "${execNwgBar}";
XF86LaunchB = "exec ${pkgs.nwg-drawer}/bin/nwg-drawer";XF86AudioPlay = "${execPlayerctl} play-pause";XF86AudioNext = "${execPlayerctl} next";XF86AudioPrev = "${execPlayerctl} previous";XF86AudioLowerVolume = "${setVolume} -5%";XF86AudioRaiseVolume = "${setVolume} +5%";XF86AudioMute = "${setVolume} 0%";XF86MonBrightnessDown = "exec ${brightnessctl} set 5%-";XF86MonBrightnessUp = "exec ${brightnessctl} set +5%";
XF86LaunchB = "exec ${pkgs.nwg-drawer}/bin/nwg-drawer";XF86AudioPlay = "${execPlayerctl} play-pause";XF86AudioNext = "${execPlayerctl} next";XF86AudioPrev = "${execPlayerctl} previous";XF86AudioLowerVolume = "${setVolume} -5%";XF86AudioRaiseVolume = "${setVolume} +5%";XF86AudioMute = "${setVolume} 0%";XF86MonBrightnessDown = "exec ${brightnessctl} set 5%-";XF86MonBrightnessUp = "exec ${brightnessctl} set +5%";
"${cfg.modifier}+${cfg.left}" = "focus left";"${cfg.modifier}+${cfg.down}" = "focus down";"${cfg.modifier}+${cfg.up}" = "focus up";"${cfg.modifier}+${cfg.right}" = "focus right";
"${cfg.modifier}+${cfg.left}" = "focus left";"${cfg.modifier}+${cfg.down}" = "focus down";"${cfg.modifier}+${cfg.up}" = "focus up";"${cfg.modifier}+${cfg.right}" = "focus right";
"${cfg.modifier}+Shift+${cfg.left}" = "move left";"${cfg.modifier}+Shift+${cfg.down}" = "move down";"${cfg.modifier}+Shift+${cfg.up}" = "move up";"${cfg.modifier}+Shift+${cfg.right}" = "move right";
"${cfg.modifier}+Shift+${cfg.left}" = "move left";"${cfg.modifier}+Shift+${cfg.down}" = "move down";"${cfg.modifier}+Shift+${cfg.up}" = "move up";"${cfg.modifier}+Shift+${cfg.right}" = "move right";
"${cfg.modifier}+ctrl+s" = "layout stacking";"${cfg.modifier}+ctrl+w" = "layout tabbed";"${cfg.modifier}+ctrl+e" = "layout toggle split";
"${cfg.modifier}+ctrl+s" = "layout stacking";"${cfg.modifier}+ctrl+w" = "layout tabbed";"${cfg.modifier}+ctrl+e" = "layout toggle split";
"${cfg.modifier}+1" = "workspace number 1";"${cfg.modifier}+2" = "workspace number 2";"${cfg.modifier}+3" = "workspace number 3";"${cfg.modifier}+4" = "workspace number 4";"${cfg.modifier}+5" = "workspace number 5";"${cfg.modifier}+6" = "workspace number 6";"${cfg.modifier}+7" = "workspace number 7";"${cfg.modifier}+8" = "workspace number 8";"${cfg.modifier}+9" = "workspace number 9";"${cfg.modifier}+ctrl+${cfg.right}" = "workspace next";"${cfg.modifier}+ctrl+${cfg.left}" = "workspace prev";"${cfg.modifier}+ctrl+${cfg.down}" = "workspace back_and_forth";"${cfg.modifier}+ctrl+${cfg.up}" = "workspace back_and_forth";
"${cfg.modifier}+1" = "workspace number 1";"${cfg.modifier}+2" = "workspace number 2";"${cfg.modifier}+3" = "workspace number 3";"${cfg.modifier}+4" = "workspace number 4";"${cfg.modifier}+5" = "workspace number 5";"${cfg.modifier}+6" = "workspace number 6";"${cfg.modifier}+7" = "workspace number 7";"${cfg.modifier}+8" = "workspace number 8";"${cfg.modifier}+9" = "workspace number 9";"${cfg.modifier}+ctrl+${cfg.right}" = "workspace next";"${cfg.modifier}+ctrl+${cfg.left}" = "workspace prev";"${cfg.modifier}+ctrl+${cfg.down}" = "workspace back_and_forth";"${cfg.modifier}+ctrl+${cfg.up}" = "workspace back_and_forth";
"${cfg.modifier}+Shift+1" = "move container to workspace number 1";"${cfg.modifier}+Shift+2" = "move container to workspace number 2";"${cfg.modifier}+Shift+3" = "move container to workspace number 3";"${cfg.modifier}+Shift+4" = "move container to workspace number 4";"${cfg.modifier}+Shift+5" = "move container to workspace number 5";"${cfg.modifier}+Shift+6" = "move container to workspace number 6";"${cfg.modifier}+Shift+7" = "move container to workspace number 7";"${cfg.modifier}+Shift+8" = "move container to workspace number 8";"${cfg.modifier}+Shift+9" = "move container to workspace number 9";
"${cfg.modifier}+Shift+1" = "move container to workspace number 1";"${cfg.modifier}+Shift+2" = "move container to workspace number 2";"${cfg.modifier}+Shift+3" = "move container to workspace number 3";"${cfg.modifier}+Shift+4" = "move container to workspace number 4";"${cfg.modifier}+Shift+5" = "move container to workspace number 5";"${cfg.modifier}+Shift+6" = "move container to workspace number 6";"${cfg.modifier}+Shift+7" = "move container to workspace number 7";"${cfg.modifier}+Shift+8" = "move container to workspace number 8";"${cfg.modifier}+Shift+9" = "move container to workspace number 9";
"${cfg.modifier}+Shift+minus" = "move scratchpad";"${cfg.modifier}+minus" = "scratchpad show";# NOTE: to remove a window from scratch pad toggle floating# https://i3wm.org/docs/userguide.html#_scratchpad
"${cfg.modifier}+Shift+minus" = "move scratchpad";"${cfg.modifier}+minus" = "scratchpad show";# NOTE: to remove a window from scratch pad toggle floating# https://i3wm.org/docs/userguide.html#_scratchpad
"${cfg.modifier}+Shift+space" = "mode compose_mode";
"${cfg.modifier}+Shift+space" = "mode compose_mode";};wayland.windowManager.sway.extraConfig = ''bindgesture swipe:3:right workspace prevbindgesture swipe:3:left workspace next'';home.packages =if config.wayland.windowManager.sway.enablethenwith pkgs; [nwg-drawernwg-bar]else [];
config.wayland.windowManager.sway.extraConfig = ''bindgesture swipe:3:right workspace prevbindgesture swipe:3:left workspace next'';config.home.packages =if config.wayland.windowManager.sway.enablethenwith pkgs; [nwg-drawernwg-bar]else [];
services.kanshi = {profiles = {laptop-unplugged = {outputs = [scrnXps13];};laptop-home-office = {exec = ["${pkgs.sway}/bin/swaymsg workspace 1, move workspace to ${scrnXps13.criteria}"];outputs = [(scrnXps13 // {status = "disable";})scrnDell43scrnDell27];};home-office = {outputs = [# TODO: is full res not supported via HDMI for some reason?# Dell27's max res available is only 1080 wide, so we have to adjust the position# of Dell43 to match(scrnDell43 // {position = "1080,0";})(scrnDell27 // {mode = "1920x1080@60.000Hz";})];
config = lib.mkIf cfg.enable {services.kanshi = {profiles = {laptop-unplugged = {outputs = [scrnXps13];};laptop-home-office = {exec = ["${pkgs.sway}/bin/swaymsg workspace 1, move workspace to ${scrnXps13.criteria}"];outputs = [(scrnXps13 // {status = "disable";})scrnDell43scrnDell27];};home-office = {outputs = [# TODO: is full res not supported via HDMI for some reason?# Dell27's max res available is only 1080 wide, so we have to adjust the position# of Dell43 to match(scrnDell43 // {position = "1080,0";})(scrnDell27 // {mode = "1920x1080@60.000Hz";})];};
"cl-nix-lite": {"locked": {"lastModified": 1698901928,"narHash": "sha256-gMHZybEVA3uMOBu1483gXfvUqpv4Qn7GJs3ZfCQYxpc=","owner": "hraban","repo": "cl-nix-lite","rev": "9ad861b45bda7f59eba5ad1b43565a03c7c58553","type": "github"},"original": {"owner": "hraban","repo": "cl-nix-lite","type": "github"}},
"flake": false,"locked": {"lastModified": 1697816753,"narHash": "sha256-40to80AEIyKCQI0xMKCeF5ePoIKTYgjVVCZeu4CnTxM=","owner": "hraban","repo": "flake-compat","rev": "6025bade1336a36014639bc3f67eacc853dab78f","type": "github"},"original": {"owner": "hraban","ref": "fixed-output","repo": "flake-compat","type": "github"}},"flake-compat_4": {
"mac-app-util": {"inputs": {"cl-nix-lite": "cl-nix-lite","flake-compat": "flake-compat_3","flake-utils": "flake-utils_4","nixpkgs": "nixpkgs"},"locked": {"lastModified": 1700594708,"narHash": "sha256-STgLw72YbdZTUQDp/ZPJLUmrbvUzBQeMgLsUKQoI1lw=","owner": "hraban","repo": "mac-app-util","rev": "f48ce3fe87dbbca4d95edb7d93e676a4abdd0a46","type": "github"},"original": {"owner": "hraban","repo": "mac-app-util","type": "github"}},
"rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb",
"rev": "90e85bc7c1a6fc0760a94ace129d3a1c61c3d035","type": "github"},"original": {"id": "nixpkgs","type": "indirect"}},"nixpkgs-firefox-darwin": {"inputs": {"nixpkgs": ["nixpkgs"]},"locked": {"lastModified": 1701132216,"narHash": "sha256-wN/c7788jyCmDAFA+hDekRyaDqpzfSm1FWIC2CTBtJ4=","owner": "bandithedoge","repo": "nixpkgs-firefox-darwin","rev": "492fbfdb15b22b9f5ff65b04dc18c5aa6b5beed6",
"owner": "NixOS","ref": "nixos-unstable","repo": "nixpkgs",
"owner": "bandithedoge","repo": "nixpkgs-firefox-darwin",
"locked": {"lastModified": 1700390070,"narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=","owner": "NixOS","repo": "nixpkgs","rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb","type": "github"},"original": {"owner": "NixOS","ref": "nixos-unstable","repo": "nixpkgs","type": "github"}},"nixpkgs_3": {
"locked": {"lastModified": 1681028828,"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=","owner": "nix-systems","repo": "default","rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e","type": "github"},"original": {"owner": "nix-systems","repo": "default","type": "github"}},"systems_5": {