···11-{ ... }:
22-{
33- # Set your time zone.
44- time.timeZone = "America/Chicago";
55-66- # Select internationalisation properties.
77- i18n.defaultLocale = "en_US.UTF-8";
88- # console = {
99- # font = "Lat2-Terminus16";
1010- # keyMap = "us";
1111- # useXkbConfig = true; # use xkb.options in tty.
1212- # };
1313-1414- # Automatic doc cache generation
1515- documentation.man.generateCaches = true;
1616-1717- # Automatic system upgrades
1818- system.autoUpgrade = {
1919- enable = true;
2020- dates = "09:00";
2121- randomizedDelaySec = "45min";
2222- };
2323-2424- # Automatic Garbage Collection
2525- nix.gc.automatic = true;
2626- nix.gc.options = "--delete-older-than 8d";
2727- nix.settings.trusted-users = [ "@wheel" ];
2828-2929- # I don't care that much about free vs unfree
3030- nixpkgs.config.allowUnfree = true;
3131-}
+67
configuration.nix
···11+# Edit this configuration file to define what should be installed on
22+## your system. Help is available in the configuration.nix(5) man page, on
33+# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44+55+{ ... }:
66+77+{
88+ imports =
99+ [
1010+ # Include the results of the hardware scan.
1111+ ./hardware-configuration.nix
1212+ ./boot.nix
1313+ ./networking.nix
1414+ #./gui.nix
1515+ ./users.nix
1616+ ./packages.nix
1717+ ./services.nix
1818+ ];
1919+ # Set your time zone.
2020+ time.timeZone = "America/Chicago";
2121+2222+ # Select internationalisation properties.
2323+ i18n.defaultLocale = "en_US.UTF-8";
2424+ # console = {
2525+ # font = "Lat2-Terminus16";
2626+ # keyMap = "us";
2727+ # useXkbConfig = true; # use xkb.options in tty.
2828+ # };
2929+3030+ # Copy the NixOS configuration file and link it from the resulting system
3131+ # (/run/current-system/configuration.nix). This is useful in case you
3232+ # accidentally delete configuration.nix.
3333+ #system.copySystemConfiguration = true;
3434+3535+ # Automatic doc cache generation
3636+ documentation.man.generateCaches = true;
3737+3838+ # Automatic system upgrades
3939+ system.autoUpgrade = {
4040+ enable = true;
4141+ dates = "09:00";
4242+ randomizedDelaySec = "45min";
4343+ };
4444+4545+ # Automatic Garbage Collection
4646+ nix.gc.automatic = true;
4747+ nix.gc.options = "--delete-older-than 8d";
4848+4949+ # This option defines the first version of NixOS you have installed on this particular machine,
5050+ # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
5151+ #
5252+ # Most users should NEVER change this value after the initial install, for any reason,
5353+ # even if you've upgraded your system to a new NixOS release.
5454+ #
5555+ # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
5656+ # so changing it will NOT upgrade your system.
5757+ #
5858+ # This value being lower than the current NixOS release does NOT mean your system is
5959+ # out of date, out of support, or vulnerable.
6060+ #
6161+ # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
6262+ # and migrated your data accordingly.
6363+ #
6464+ # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
6565+ system.stateVersion = "23.11"; # Did you read the comment?
6666+6767+}
···11-# Edit this configuration file to define what should be installed on
22-# your system. Help is available in the configuration.nix(5) man page, on
33-# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44-55-{
66- config,
77- lib,
88- pkgs,
99- inputs,
1010- ...
1111-}:
1212-let
1313- system = pkgs.stdenv.targetPlatform.system;
1414- agave = (builtins.getFlake "/home/noah/repos/agave");
1515-in
1616-{
1717- imports = [
1818- # Include the results of the hardware scan.
1919- ./hardware-configuration.nix
2020- agave.nixosModules.default
2121- ];
2222-2323- nix.settings.experimental-features = [
2424- "nix-command"
2525- "flakes"
2626- ];
2727-2828- # Use the systemd-boot EFI boot loader.
2929- boot.loader.systemd-boot.enable = true;
3030- #boot.loader.grub.device = "nodev";
3131- #boot.loader.grub.efiSupport = true;
3232- #boot.loader.grub.useOSProber = true;
3333- boot.loader.efi.canTouchEfiVariables = true;
3434-3535- # Use latest kernel.
3636- boot.kernelPackages = pkgs.linuxPackages_latest;
3737-3838- networking.hostName = "edge"; # Define your hostname.
3939-4040- # Configure network connections interactively with nmcli or nmtui.
4141- networking.networkmanager.enable = true;
4242-4343- # Set your time zone.
4444- # time.timeZone = "Europe/Amsterdam";
4545-4646- # Configure network proxy if necessary
4747- # networking.proxy.default = "http://user:password@proxy:port/";
4848- # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
4949-5050- # Select internationalisation properties.
5151- i18n.defaultLocale = "en_US.UTF-8";
5252- console = {
5353- font = "Lat2-Terminus16";
5454- keyMap = "us";
5555- #useXkbConfig = true; # use xkb.options in tty.
5656- };
5757-5858- # Enable the X11 windowing system.
5959- # services.xserver.enable = true;
6060-6161- # Configure keymap in X11
6262- # services.xserver.xkb.layout = "us";
6363- # services.xserver.xkb.options = "eurosign:e,caps:escape";
6464-6565- # Enable CUPS to print documents.
6666- # services.printing.enable = true;
6767-6868- # Enable sound.
6969- # services.pulseaudio.enable = true;
7070- # OR
7171- # services.pipewire = {
7272- # enable = true;
7373- # pulse.enable = true;
7474- # };
7575-7676- # Enable touchpad support (enabled default in most desktopManager).
7777- # services.libinput.enable = true;
7878-7979- # Define a user account. Don't forget to set a password with ‘passwd’.
8080- # users.users.alice = {
8181- # isNormalUser = true;
8282- # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
8383- # packages = with pkgs; [
8484- # tree
8585- # ];
8686- # };
8787-8888- # programs.firefox.enable = true;
8989-9090- # List packages installed in system profile.
9191- # You can use https://search.nixos.org/ to find more packages (and options).
9292- environment.systemPackages = with pkgs; [
9393- neovim
9494- wget
9595- git
9696- htop
9797- inputs.agenix.packages."${system}".agenix
9898- agave.packages.${system}.solana
9999- agave.packages.${system}.solana-keygen
100100- ];
101101-102102- services.tailscale.useRoutingFeatures = "both";
103103-104104- # Some programs need SUID wrappers, can be configured further or are
105105- # started in user sessions.
106106- # programs.mtr.enable = true;
107107- # programs.gnupg.agent = {
108108- # enable = true;
109109- # enableSSHSupport = true;
110110- # };
111111-112112- # List services that you want to enable:
113113-114114- # Enable the OpenSSH daemon.
115115- services.openssh.enable = true;
116116- services.openssh.openFirewall = true;
117117-118118- # Open ports in the firewall.
119119- # networking.firewall.allowedTCPPorts = [ ... ];
120120- # networking.firewall.allowedUDPPorts = [ ... ];
121121- # Or disable the firewall altogether.
122122- networking.firewall.enable = true;
123123- networking.firewall = {
124124- allowPing = true;
125125- allowedUDPPorts = [ ];
126126- allowedUDPPortRanges = [
127127- # Agave
128128- {
129129- from = 8000;
130130- to = 8020;
131131- }
132132- ];
133133- allowedTCPPorts = [
134134- 2375
135135- 3000
136136- # Agave
137137- 8001
138138- 8899
139139- 8900
140140- 10000
141141- ];
142142- };
143143- security.pam.loginLimits = [
144144- {
145145- domain = "*";
146146- type = "soft";
147147- item = "nofile";
148148- value = "100000";
149149- }
150150- {
151151- domain = "*";
152152- type = "hard";
153153- item = "nofile";
154154- value = "1000000";
155155- }
156156- ];
157157-158158- age.secrets.validator-identity = {
159159- file = ../../secrets/validator-identity.age;
160160- owner = "sol";
161161- group = "sol";
162162- };
163163- services.ambient-validator = {
164164- enable = true;
165165- package = agave.packages.${system}.ambient-validator;
166166- # this needs to be a secret
167167- identityKeypair = config.age.secrets.validator-identity.path;
168168- rpcBindAddress = "0.0.0.0";
169169- geyserPluginConfig = {
170170- libpath = "${agave.packages.${system}.yellowstone-geyser}/lib/libyellowstone_grpc_geyser.so";
171171- log = {
172172- level = "info";
173173- };
174174- tokio = {
175175- worker_threads = 4;
176176- affinity = null;
177177- };
178178- grpc = {
179179- address = "0.0.0.0:10000";
180180- };
181181- };
182182- };
183183- # Copy the NixOS configuration file and link it from the resulting system
184184- # (/run/current-system/configuration.nix). This is useful in case you
185185- # accidentally delete configuration.nix.
186186- # system.copySystemConfiguration = true;
187187-188188- # This option defines the first version of NixOS you have installed on this particular machine,
189189- # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
190190- #
191191- # Most users should NEVER change this value after the initial install, for any reason,
192192- # even if you've upgraded your system to a new NixOS release.
193193- #
194194- # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
195195- # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
196196- # to actually do that.
197197- #
198198- # This value being lower than the current NixOS release does NOT mean your system is
199199- # out of date, out of support, or vulnerable.
200200- #
201201- # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
202202- # and migrated your data accordingly.
203203- #
204204- # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
205205- system.stateVersion = "25.11"; # Did you read the comment?
206206-207207-}
···11-# Edit this configuration file to define what should be installed on
22-## your system. Help is available in the configuration.nix(5) man page, on
33-# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44-55-{ ... }:
66-{
77- imports = [
88- # Include the results of the hardware scan.
99- ./hardware-configuration.nix
1010- ./boot.nix
1111- ./networking.nix
1212- #./gui.nix
1313- ./packages.nix
1414- ./services.nix
1515- ];
1616-1717- nixpkgs.config.allowUnfree = true;
1818-1919- # Set your time zone.
2020- time.timeZone = "America/Chicago";
2121-2222- # Select internationalisation properties.
2323- i18n.defaultLocale = "en_US.UTF-8";
2424- # console = {
2525- # font = "Lat2-Terminus16";
2626- # keyMap = "us";
2727- # useXkbConfig = true; # use xkb.options in tty.
2828- # };
2929-3030- # Automatic doc cache generation
3131- documentation.man.generateCaches = true;
3232-3333- # Automatic system upgrades
3434- system.autoUpgrade = {
3535- enable = true;
3636- dates = "09:00";
3737- randomizedDelaySec = "45min";
3838- };
3939-4040- # Automatic Garbage Collection
4141- nix.gc.automatic = true;
4242- nix.gc.options = "--delete-older-than 8d";
4343-4444- # This option defines the first version of NixOS you have installed on this particular machine,
4545- # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
4646- #
4747- # Most users should NEVER change this value after the initial install, for any reason,
4848- # even if you've upgraded your system to a new NixOS release.
4949- #
5050- # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
5151- # so changing it will NOT upgrade your system.
5252- #
5353- # This value being lower than the current NixOS release does NOT mean your system is
5454- # out of date, out of support, or vulnerable.
5555- #
5656- # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
5757- # and migrated your data accordingly.
5858- #
5959- # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
6060- system.stateVersion = "23.11"; # Did you read the comment?
6161-6262-}
···11-{ pkgs, lib, ... }:
22-let # bash script to let dbus know about important env variables and
33- # propagate them to relevent services run at the end of sway config
44- # see
55- # https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist
66- # note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts
77- # some user services to make sure they have the correct environment variables
88- dbus-sway-environment = pkgs.writeTextFile {
99- name = "dbus-sway-environment";
1010- destination = "/bin/dbus-sway-environment";
1111- executable = true;
1212-1313- text = ''
1414- dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
1515- systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
1616- systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
1717- '';
1818- };
1919-2020- # currently, there is some friction between sway and gtk:
2121- # https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
2222- # the suggested way to set gtk settings is with gsettings
2323- # for gsettings to work, we need to tell it where the schemas are
2424- # using the XDG_DATA_DIR environment variable
2525- # run at the end of sway config
2626- configure-gtk = pkgs.writeTextFile {
2727- name = "configure-gtk";
2828- destination = "/bin/configure-gtk";
2929- executable = true;
3030- text =
3131- let
3232- # TODO: figure out why these bindings exist or where they're used
3333- schema = pkgs.gsettings-desktop-schemas;
3434- datadir = "${schema}/share/gsettings-schemas/${schema.name}";
3535- in
3636- ''
3737- 6 gnome_schema=org.gnome.desktop.interface
3838- gsettings set $gnome_schema gtk-theme 'Dracula'
3939- '';
4040- };
4141-in
4242-{
4343-4444- # List packages installed in system profile. To search, run:
4545- # $ nix search wget
4646- environment.systemPackages = with pkgs; [
4747- mangohud
4848- neovim
4949- appimage-run
5050- tzdata
5151- wget
5252- kitty
5353- file
5454- w3m
5555- fishPlugins.fzf-fish
5656- fzf
5757- qemu
5858- qemu-user
5959- qemu-utils
6060- qemu_full
6161- OVMF
6262- #9p stuff
6363- diod
6464- plan9port
6565- vis
6666- rc
6767-6868- smartmontools
6969-7070- # Sway stuff
7171- wdisplays
7272- mako
7373- bemenu
7474- wl-clipboard
7575- slurp
7676- grim
7777- swayidle
7878- swaylock
7979- adwaita-icon-theme
8080- dracula-theme
8181- glib
8282- xdg-utils
8383- xdg-desktop-portal
8484- wayland
8585- configure-gtk
8686- lxqt.lxqt-menu-data # for lxqt
8787- dbus-sway-environment
8888- dbus
8989- pkg-config
9090- zlib
9191- # why wouldn't I want documentation on my system
9292- man-pages
9393- man-pages-posix
9494- linuxPackages_latest.perf
9595- ];
9696-9797- environment.loginShellInit = ''
9898- [[ "$(tty)" = "/dev/tty1" ]] && /home/noah/repos/nixos/gs.sh
9999- '';
100100-101101- documentation.dev.enable = true;
102102-103103- # Fix dynamically linked libraries for unpackaged binaries
104104- programs.nix-ld = {
105105- enable = true;
106106- libraries = with pkgs; [
107107- # Add missing dynamic libraries for unpackaged programs HERE
108108- # NOT in environment.systemPackages
109109- zlib
110110- openssl
111111- sqlite
112112- libunwind
113113- libglvnd
114114- libclang
115115- systemdLibs
116116- ];
117117- };
118118- programs.nix-index = {
119119- enable = true;
120120- enableFishIntegration = true;
121121- enableBashIntegration = false;
122122- enableZshIntegration = false;
123123- };
124124-125125- programs.steam = {
126126- enable = true;
127127- remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
128128- dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
129129- localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
130130- gamescopeSession.enable = true;
131131- };
132132- programs.gamescope = {
133133- enable = true;
134134- capSysNice = true;
135135- };
136136- # Boot to bigpicture
137137- services.getty.autologinUser = "noah";
138138-139139- programs.appimage = {
140140- enable = true;
141141- binfmt = true;
142142- };
143143-144144- # Run other bins in QEMU
145145- boot.binfmt.emulatedSystems = [
146146- "aarch64-linux"
147147- "riscv64-linux"
148148- ];
149149- # UEFI firmware support for QEMU
150150- systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ];
151151-152152- # Logseq uses an ancient version of Electron, so we enable that
153153- nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ];
154154-155155- # I don't care too much about unfree
156156- nixpkgs.config.allowUnfree = true;
157157- # Whitelist some unfree packages
158158- nixpkgs.config.allowUnfreePredicate =
159159- pkg:
160160- builtins.elem (lib.getName pkg) [
161161- "discord"
162162- "spotify"
163163- "obsidian"
164164- "unstable.obsidian"
165165- "tailscale"
166166- "google-chrome"
167167- "slack"
168168- "steam"
169169- "steam-original"
170170- "steam-unwrapped"
171171- "steam-run"
172172- ];
173173-}
-44
host-specific/shizuri/services.nix
···11-{ pkgs, ... }:
22-{
33- # Some programs need SUID wrappers, can be configured further or are
44- # started in user sessions.
55- # programs.mtr.enable = true;
66- programs.gnupg.agent = {
77- enable = true;
88- enableSSHSupport = false;
99- };
1010-1111- # Enable the OpenSSH daemon.
1212- services.openssh = {
1313- enable = true;
1414- settings.X11Forwarding = true;
1515- };
1616-1717- # Smart Card daemon
1818- services.pcscd.enable = true;
1919-2020- # This option is for enabling the bolt daemon for managing Thunderbolt/USB4 Devices.
2121- services.hardware.bolt.enable = true;
2222-2323- services.fwupd.enable = true;
2424-2525- services.xrdp = {
2626- enable = true;
2727- openFirewall = true;
2828- defaultWindowManager = "${pkgs.lxqt.lxqt-session}/bin/lxqt-session";
2929- };
3030-3131- # Containers and VMs
3232- virtualisation = {
3333- podman = {
3434- enable = false;
3535- dockerCompat = true;
3636- defaultNetwork.settings.dns_enabled = true;
3737- dockerSocket.enable = true;
3838- };
3939- docker = {
4040- enable = true;
4141- storageDriver = "overlay2";
4242- };
4343- };
4444-}
-55
host-specific/touma-wsl.nix
···11-# Edit this configuration file to define what should be installed on
22-# your system. Help is available in the configuration.nix(5) man page, on
33-# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44-55-# NixOS-WSL specific options are documented on the NixOS-WSL repository:
66-# https://github.com/nix-community/NixOS-WSL
77-88-{ pkgs, inputs, ... }:
99-{
1010- imports = [
1111- # WSL has no hardware configuration
1212- ../users.nix
1313- ../services.nix
1414- ];
1515- wsl = {
1616- enable = true;
1717- defaultUser = "noah";
1818- wslConf.network.hostname = "touma-wsl-nixos";
1919- };
2020- # List packages installed in system profile. To search, run:
2121- # $ nix search wget
2222- environment.systemPackages = with pkgs; [
2323- neovim
2424- appimage-run
2525- wget
2626- kitty
2727- w3m
2828- fishPlugins.fzf-fish
2929- fzf
3030- qemu
3131- OVMF
3232- gitFull
3333- # plan9
3434- diod
3535- plan9port
3636- vis
3737- rc
3838-3939- xdg-utils
4040- inputs.agenix.packages."${system}".agenix
4141- ];
4242- services.openssh.enable = true;
4343-4444- # Fix dynamically linked libraries for unpackaged binaries
4545- programs.nix-ld = {
4646- enable = true;
4747- libraries = with pkgs; [
4848- # Add missing dynamic libraries for unpackaged programs HERE
4949- # NOT in environment.systemPackages
5050- zlib
5151- fuse3
5252- ];
5353- };
5454- system.stateVersion = "24.11";
5555-}
-196
i3/config
···11-# This file has been auto-generated by i3-config-wizard(1).
22-# It will not be overwritten, so edit it as you like.
33-#
44-# Should you change your keyboard layout some time, delete
55-# this file and re-run i3-config-wizard(1).
66-#
77-88-# i3 config file (v4)
99-#
1010-# Please see https://i3wm.org/docs/userguide.html for a complete reference!
1111-1212-set $mod Mod4
1313-1414-# Font for window titles. Will also be used by the bar unless a different font
1515-# is used in the bar {} block below.
1616-font pango:monospace 8
1717-1818-# This font is widely installed, provides lots of unicode glyphs, right-to-left
1919-# text rendering and scalability on retina/hidpi displays (thanks to pango).
2020-#font pango:DejaVu Sans Mono 8
2121-2222-# Start XDG autostart .desktop files using dex. See also
2323-# https://wiki.archlinux.org/index.php/XDG_Autostart
2424-exec --no-startup-id dex --autostart --environment i3
2525-2626-# The combination of xss-lock, nm-applet and pactl is a popular choice, so
2727-# they are included here as an example. Modify as you see fit.
2828-2929-# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
3030-# screen before suspend. Use loginctl lock-session to lock your screen.
3131-exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
3232-3333-# NetworkManager is the most popular way to manage wireless networks on Linux,
3434-# and nm-applet is a desktop environment-independent system tray GUI for it.
3535-exec --no-startup-id nm-applet
3636-3737-# Use pactl to adjust volume in PulseAudio.
3838-set $refresh_i3status killall -SIGUSR1 i3status
3939-bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
4040-bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
4141-bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
4242-bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
4343-4444-# Use Mouse+$mod to drag floating windows to their wanted position
4545-floating_modifier $mod
4646-4747-# move tiling windows via drag & drop by left-clicking into the title bar,
4848-# or left-clicking anywhere into the window while holding the floating modifier.
4949-tiling_drag modifier titlebar
5050-5151-# start a terminal
5252-bindsym $mod+Return exec kitty
5353-5454-# kill focused window
5555-bindsym $mod+Shift+q kill
5656-5757-# start dmenu (a program launcher)
5858-bindsym $mod+d exec --no-startup-id dmenu_run
5959-# A more modern dmenu replacement is rofi:
6060-# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
6161-# There also is i3-dmenu-desktop which only displays applications shipping a
6262-# .desktop file. It is a wrapper around dmenu, so you need that installed.
6363-# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
6464-6565-# change focus
6666-bindsym $mod+h focus left
6767-bindsym $mod+j focus down
6868-bindsym $mod+k focus up
6969-bindsym $mod+l focus right
7070-7171-7272-# alternatively, you can use the cursor keys:
7373-bindsym $mod+Left focus left
7474-bindsym $mod+Down focus down
7575-bindsym $mod+Up focus up
7676-bindsym $mod+Right focus right
7777-7878-# move focused window
7979-bindsym $mod+Shift+h move left
8080-bindsym $mod+Shift+j move down
8181-bindsym $mod+Shift+k move up
8282-bindsym $mod+Shift+l move right
8383-8484-# alternatively, you can use the cursor keys:
8585-bindsym $mod+Shift+Left move left
8686-bindsym $mod+Shift+Down move down
8787-bindsym $mod+Shift+Up move up
8888-bindsym $mod+Shift+Right move right
8989-9090-# split in horizontal orientation
9191-bindsym $mod+g split h
9292-9393-# split in vertical orientation
9494-bindsym $mod+v split v
9595-9696-# enter fullscreen mode for the focused container
9797-bindsym $mod+f fullscreen toggle
9898-9999-# change container layout (stacked, tabbed, toggle split)
100100-bindsym $mod+s layout stacking
101101-bindsym $mod+w layout tabbed
102102-bindsym $mod+e layout toggle split
103103-104104-# toggle tiling / floating
105105-bindsym $mod+Shift+space floating toggle
106106-107107-# change focus between tiling / floating windows
108108-bindsym $mod+space focus mode_toggle
109109-110110-# focus the parent container
111111-bindsym $mod+a focus parent
112112-113113-# focus the child container
114114-#bindsym $mod+d focus child
115115-116116-# Define names for default workspaces for which we configure key bindings later on.
117117-# We use variables to avoid repeating the names in multiple places.
118118-set $ws1 "1"
119119-set $ws2 "2"
120120-set $ws3 "3"
121121-set $ws4 "4"
122122-set $ws5 "5"
123123-set $ws6 "6"
124124-set $ws7 "7"
125125-set $ws8 "8"
126126-set $ws9 "9"
127127-set $ws10 "10"
128128-129129-# switch to workspace
130130-bindsym $mod+1 workspace number $ws1
131131-bindsym $mod+2 workspace number $ws2
132132-bindsym $mod+3 workspace number $ws3
133133-bindsym $mod+4 workspace number $ws4
134134-bindsym $mod+5 workspace number $ws5
135135-bindsym $mod+6 workspace number $ws6
136136-bindsym $mod+7 workspace number $ws7
137137-bindsym $mod+8 workspace number $ws8
138138-bindsym $mod+9 workspace number $ws9
139139-bindsym $mod+0 workspace number $ws10
140140-# Tab navigation
141141-bindsym $mod+Tab workspace next
142142-bindsym $mod+Shift+Tab workspace prev
143143-144144-# move focused container to workspace
145145-bindsym $mod+Shift+1 move container to workspace number $ws1
146146-bindsym $mod+Shift+2 move container to workspace number $ws2
147147-bindsym $mod+Shift+3 move container to workspace number $ws3
148148-bindsym $mod+Shift+4 move container to workspace number $ws4
149149-bindsym $mod+Shift+5 move container to workspace number $ws5
150150-bindsym $mod+Shift+6 move container to workspace number $ws6
151151-bindsym $mod+Shift+7 move container to workspace number $ws7
152152-bindsym $mod+Shift+8 move container to workspace number $ws8
153153-bindsym $mod+Shift+9 move container to workspace number $ws9
154154-bindsym $mod+Shift+0 move container to workspace number $ws10
155155-156156-# reload the configuration file
157157-bindsym $mod+Shift+c reload
158158-# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
159159-bindsym $mod+Shift+r restart
160160-# exit i3 (logs you out of your X session)
161161-bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
162162-163163-# resize window (you can also use the mouse for that)
164164-mode "resize" {
165165- # These bindings trigger as soon as you enter the resize mode
166166-167167- # Pressing left will shrink the window’s width.
168168- # Pressing right will grow the window’s width.
169169- # Pressing up will shrink the window’s height.
170170- # Pressing down will grow the window’s height.
171171- bindsym h resize shrink width 10 px or 10 ppt
172172- bindsym j resize grow height 10 px or 10 ppt
173173- bindsym k resize shrink height 10 px or 10 ppt
174174- bindsym l resize grow width 10 px or 10 ppt
175175-176176- # same bindings, but for the arrow keys
177177- bindsym Left resize shrink width 10 px or 10 ppt
178178- bindsym Down resize grow height 10 px or 10 ppt
179179- bindsym Up resize shrink height 10 px or 10 ppt
180180- bindsym Right resize grow width 10 px or 10 ppt
181181-182182- # back to normal: Enter or Escape or $mod+r
183183- bindsym Return mode "default"
184184- bindsym Escape mode "default"
185185- bindsym $mod+r mode "default"
186186-}
187187-188188-bindsym $mod+r mode "resize"
189189-190190-# Start i3bar to display a workspace bar (plus the system information i3status
191191-# finds out, if available)
192192-bar {
193193- status_command i3status
194194-}
195195-196196-exec barrier