aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Weigl-Bosker <stefan@s00.xyz>2025-02-22 19:11:05 -0500
committerStefan Weigl-Bosker <stefan@s00.xyz>2025-02-22 19:11:05 -0500
commit1049601e0b07627ef967d1092adc04022598648b (patch)
tree8ebb4f2ec21a3870df418b493fa417cf210e68da
parent980b1f75b6935694b5def72a3bcc119f78e878b0 (diff)
downloadhome-1049601e0b07627ef967d1092adc04022598648b.tar.gz
started flake config
-rw-r--r--flake.lock85
-rw-r--r--flake.nix47
-rw-r--r--home.nix385
-rw-r--r--modules/default.nix8
-rw-r--r--modules/foot.nix63
-rw-r--r--modules/global.nix51
-rw-r--r--modules/nvim/default.nix47
-rw-r--r--modules/nvim/keybinds.lua (renamed from nvim/keybinds.lua)0
-rw-r--r--modules/nvim/settings.lua (renamed from nvim/settings.lua)0
-rw-r--r--modules/sway/default.nix251
10 files changed, 558 insertions, 379 deletions
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..58fc7e8
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,85 @@
+{
+ "nodes": {
+ "flake-utils": {
+ "locked": {
+ "lastModified": 1659877975,
+ "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "home-manager": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1740254115,
+ "narHash": "sha256-MwxDtYB/MSGZlr/xS+ExGYH2QgHk73ShD40shxjad/Y=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "cb3f6e9b59d3a5e51ef9f7da2b8418d5c72aaef8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "type": "github"
+ }
+ },
+ "nixgl": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1713543440,
+ "narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
+ "owner": "nix-community",
+ "repo": "nixGL",
+ "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "nixGL",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1739866667,
+ "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "home-manager": "home-manager",
+ "nixgl": "nixgl",
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..f742c9f
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,47 @@
+{
+ description = "Home Manager configuration of stefan";
+
+ inputs = {
+ # Specify the source of Home Manager and Nixpkgs.
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ home-manager = {
+ url = "github:nix-community/home-manager";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ nixgl = {
+ url = "github:nix-community/nixGL";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ outputs =
+ inputs@{
+ nixpkgs,
+ home-manager,
+ nixgl,
+ ...
+ }:
+ let
+ system = "x86_64-linux";
+ overlays = [
+ inputs.nixgl.overlays.default
+ ];
+ pkgs = import nixpkgs {
+ config.allowUnfree = true;
+ inherit system overlays;
+ };
+ custom = import "custom.nix";
+ in {
+ packages.${system}.default = home-manager.defaultPackage.${system};
+ homeConfigurations = {
+ "stefan" = home-manager.lib.homeManagerConfiguration {
+ inherit pkgs;
+ extraSpecialArgs = {
+ inherit inputs;
+ };
+ modules = [ ./home.nix ];
+ };
+ };
+ };
+}
diff --git a/home.nix b/home.nix
index 613d18c..230502c 100644
--- a/home.nix
+++ b/home.nix
@@ -1,384 +1,11 @@
-{ config, libs, pkgs, ... }:
+{ inputs, config, lib, pkgs, ... }:
{
- targets.genericLinux.enable = true;
-
- home = {
- username = "stefan";
- homeDirectory = "/home/stefan";
- stateVersion = "24.11";
- };
-
- nixGL.packages = import <nixgl> { inherit pkgs; };
- nixGL.defaultWrapper = "mesa";
-
- fonts.fontconfig.enable = true;
-
- home.packages = with pkgs; [
- wl-clipboard
- mako
- wmenu
- i3status
- nerd-fonts.comic-shanns-mono
- (writeShellScriptBin "browser" ''
- swaymsg 'set $PROP newcont:tabbed ; exec qutebrowser --target window'
- '')
- (writeShellScriptBin "exit-sway" ''
- pkill pipewire
- swaymsg exit
- '')
+ imports = [
+ ./modules/global.nix
+ ./modules
];
- home.sessionVariables = {
- EDITOR = "nvim";
- XDG_CACHE_HOME="$(mktemp -d)";
- };
-
- # Let Home Manager install and manage itself.
- programs.home-manager.enable = true;
-
- programs.neovim =
- let
- lua = str: "lua << EOF\n${str}\nEOF\n";
- luaImport = file: "lua << EOF\n${builtins.readFile file}\nEOF\n";
- in
- {
- enable = true;
- defaultEditor = true;
- viAlias = true;
- vimAlias = true;
- vimdiffAlias = true;
-
- plugins = with pkgs.vimPlugins; [
- {
- plugin = nvim-lspconfig;
- config = let
- servers = [
- { name = "clangd"; }
- ];
- in lua (pkgs.lib.strings.concatStrings (pkgs.lib.lists.forEach servers (s: "require('lspconfig')['${s.name}'].setup(${s.config or "{}"})\n")));
- }
-
- (nvim-treesitter.withPlugins (p: with p; [
- tree-sitter-nix
- tree-sitter-c
- tree-sitter-lua
- tree-sitter-zig
- tree-sitter-markdown
- tree-sitter-markdown-inline
- ]))
-
- base16-nvim
- telescope-nvim
- telescope-fzf-native-nvim
- ];
-
- extraLuaConfig = ''
- ${builtins.readFile ./nvim/settings.lua}
- ${builtins.readFile ./nvim/keybinds.lua}
- '';
- };
-
- programs.qutebrowser = {
- enable = true;
- package = config.lib.nixGL.wrap pkgs.qutebrowser;
- loadAutoconfig = true;
- };
-
- programs.git = {
- enable = true;
- userName = "Stefan Weigl-Bosker";
- userEmail = "stefan@s00.xyz";
- };
-
- wayland.windowManager.sway = {
- enable = true;
- package = config.lib.nixGL.wrap pkgs.sway;
-
- config = rec {
- modifier = "Mod1";
-
- left = "m";
- down = "n";
- up = "e";
- right = "i";
-
- fonts = {
- names = [ "ComicShannsMono Nerd Font Mono" ]; # material
- size = 11.0;
- };
-
- terminal = "foot";
- menu = "wmenu-run -n 4c4c4c -N 0d0d0d -s 8aac8b -S 0d0d0d -l 10";
-
- defaultWorkspace = "workspace number 1";
-
- input = {
- "type:keyboard" = {
- xkb_layout = "us";
- xkb_variant = "colemak_dh";
- };
- "type:touchpad" = {
- dwt = "enabled"; # turn off if u are a gamer
- tap = "enabled";
- middle_emulation = "enabled";
- };
- };
-
- output = {
- "*" = {
- bg = "#0d0d0d solid_color";
- };
- "eDP-1" = {
- mode = "2880x1920@120.00Hz";
- scale = "2.0";
- };
- };
-
- colors = {
- background = "#0f0f0f";
- focused = {
- border = "#191919" ;
- background = "#191919";
- text = "#ac8aac";
- indicator = "#282a2e";
- childBorder = "#8aac8b";
- };
- focusedInactive = {
- border = "#191919";
- background = "#191919";
- text = "#ac8aac";
- indicator = "#282a2e";
- childBorder = "#191919";
- };
- unfocused = {
- border = "#191919";
- background = "#191919";
- text = "#4c4c4c";
- indicator = "#0f0f0f";
- childBorder = "#191919";
- };
- };
-
- bars = [{
- statusCommand = "i3status";
- mode = "hide";
- hiddenState = "hide";
- fonts = {
- names = [ "ComicShannsMono Nerd Font Mono" ];
- size = "10.0";
- };
- extraConfig = ''
- modifier ${modifier}
- '';
- colors = {
- background = "#0d0d0d";
- statusline = "#cacaca";
- focusedWorkspace = {
- border = "#0d0d0d";
- background = "#0d0d0d";
- text = "#ac8aac";
- };
- activeWorkspace = {
- border = "#0d0d0d";
- background = "#0d0d0d";
- text = "#4c4c4c";
- };
- inactiveWorkspace = {
- border = "#0d0d0d";
- background = "#0d0d0d";
- text = "#4c4c4c";
- };
- bindingMode = {
- border = "#0d0d0d";
- background = "#0d0d0d";
- text = "#ac8aac";
- };
- };
- }];
-
- focus = {
- followMouse = false;
- wrapping = "force";
- };
-
- window = {
- border = 1;
- hideEdgeBorders = "--i3 smart";
- commands = [
- {
- command = "mark --add \"prop:$$PROP:\"";
- criteria = {
- shell = ".";
- };
- }
- {
- command = "splith";
- criteria = {
- con_mark = "^prop.*:newcont:";
- };
- }
- {
- command = "layout tabbed";
- criteria = {
- con_mark = "^prop.*:tabbed:";
- };
- }
- {
- command = "mark --toggle \"prop:$$PROP:\" ; set $$PROP none";
- criteria = {
- con_mark = "^prop:";
- };
- }
- ];
- };
-
- keybindings = {
- "${modifier}+Return" = "exec ${terminal}";
- "${modifier}+Shift+w" = "exec browser";
- "${modifier}+d" = "exec ${menu}";
-
- "${modifier}+Shift+c" = "kill";
-
- "${modifier}+Shift+r" = "reload";
- "${modifier}+Shift+q" = "exec swaynag -t warning -m 'do you really want to exit?' -B 'yes, exit' 'exit-sway'";
-
- "${modifier}+${left}" = "focus left";
- "${modifier}+${down}" = "focus down";
- "${modifier}+${up}" = "focus up";
- "${modifier}+${right}" = "focus right";
-
- "${modifier}+a" = "focus parent";
- "${modifier}+s" = "focus child";
-
- "${modifier}+Shift+${left}" = "move left";
- "${modifier}+Shift+${down}" = "move down";
- "${modifier}+Shift+${up}" = "move up";
- "${modifier}+Shift+${right}" = "move right";
-
- "${modifier}+r" = "mode resize";
-
- "${modifier}+1" = "workspace number 1";
- "${modifier}+2" = "workspace number 2";
- "${modifier}+3" = "workspace number 3";
- "${modifier}+4" = "workspace number 4";
- "${modifier}+5" = "workspace number 5";
- "${modifier}+6" = "workspace number 6";
- "${modifier}+7" = "workspace number 7";
- "${modifier}+8" = "workspace number 8";
- "${modifier}+9" = "workspace number 9";
- "${modifier}+0" = "workspace number 0";
-
- "${modifier}+Shift+1" = "move container to workspace number 1";
- "${modifier}+Shift+2" = "move container to workspace number 2";
- "${modifier}+Shift+3" = "move container to workspace number 3";
- "${modifier}+Shift+4" = "move container to workspace number 4";
- "${modifier}+Shift+5" = "move container to workspace number 5";
- "${modifier}+Shift+6" = "move container to workspace number 6";
- "${modifier}+Shift+7" = "move container to workspace number 7";
- "${modifier}+Shift+8" = "move container to workspace number 8";
- "${modifier}+Shift+9" = "move container to workspace number 9";
- "${modifier}+Shift+0" = "move container to workspace number 0";
-
- "${modifier}+Shift+minus" = "move scratchpad";
- "${modifier}+minus" = "scratchpad show";
-
- "${modifier}+h" = "splith";
- "${modifier}+v" = "splitv";
-
- "${modifier}+Shift+s" = "layout stacking";
- "${modifier}+w" = "layout tabbed";
- "${modifier}+t" = "layout toggle split";
- "${modifier}+Shift+space" = "floating toggle";
- "${modifier}+space" = "focus mode_toggle";
-
- "${modifier}+Shift+f" = "fullscreen";
- "--locked XF86AudioRaiseVolume" = "exec volumectl -d -u up";
- "--locked XF86AudioLowerVolume" = "exec volumectl -d -u down";
- "--locked XF86AudioMute" = "exec volumectl -d toggle-mute";
- "--locked XF86AudioMicMute" = "exec volumectl -d -m toggle-mute";
- "--locked XF86MonBrightnessDown" = "exec lightctl -d down";
- "--locked XF86MonBrightnessUp" = "exec lightctl -d up";
- };
-
- startup = [
- { command = "foot -s"; }
- { command = "wayneko --layer bottom --follow-pointer true --background-colour 0xcacaca --outline-colour 0x0f0f0f"; }
- { command = "pipewire"; always = true; } # TODO need to fix this instead of running a new session every time
- { command = "mpd"; }
- { command = "mpdscribble"; }
- { command = "avizo-service"; } # disable if on nixos or systemd
- ];
-
- seat = {
- "*" = {
- hide_cursor = "1500";
- xcursor_theme = "Adwaita 18";
- };
- };
- };
-
- extraConfigEarly = ''
- set $PROP none
- '';
-
- extraConfig = ''
- title_align center
- default_border pixel 1
- '';
- };
-
- programs.foot = {
- enable = true;
- server = {
- enable = true;
- };
- settings = {
- main = {
- font="ComicShannsMono Nerd Font Mono:size=12";
- title="term";
- resize-by-cells="no";
- pad="0x0 center";
- };
-
- desktop-notifications.command = "notify-send -a \${app-id} -i \${app-id} \${title} \${body}";
- url.label-letters="arstneio";
-
- cursor = {
- style="block";
- blink="no";
- color="0f0f0f cacaca";
- };
-
- colors = {
- foreground="cacaca";
- background="0f0f0f";
- regular0="0f0f0f";
- regular1="ac8a8c";
- regular2="8aac8b";
- regular3="aca98a";
- regular4="8f8aac";
- regular5="ac8aac";
- regular6="8aabac";
- regular7="cacaca";
- bright0="262626 ";
- bright1="c49ea0 ";
- bright2="9ec49f ";
- bright3="c4c19e ";
- bright4="a39ec4 ";
- bright5="c49ec4 ";
- bright6="9ec3c4 ";
- bright7="f5f5f5 ";
- "16"="ceb188";
- "17"="ac8a8c";
- "18"="191919";
- "19"="262626";
- "20"="ac8a8c";
- "21"="e7e7e7";
- };
- };
- };
-
- services.avizo = {
- enable = true;
+ config.modules = {
+ foot.enable = true;
};
}
diff --git a/modules/default.nix b/modules/default.nix
new file mode 100644
index 0000000..65bf42a
--- /dev/null
+++ b/modules/default.nix
@@ -0,0 +1,8 @@
+{ ... }:
+{
+ imports = [
+ ./foot.nix
+ ./sway
+ ./nvim
+ ];
+}
diff --git a/modules/foot.nix b/modules/foot.nix
new file mode 100644
index 0000000..07ef2ce
--- /dev/null
+++ b/modules/foot.nix
@@ -0,0 +1,63 @@
+{ config, lib, pkgs, ... }:
+let
+ inherit lib config;
+ cfg = config.modules.foot;
+in
+{
+ options.modules.foot = {
+ enable = lib.mkEnableOption "foot";
+ };
+
+ config = {
+ programs.foot = {
+ enable = cfg.enable;
+ server = {
+ enable = true;
+ };
+ settings = {
+ main = {
+ font="ComicShannsMono Nerd Font Mono:size=12";
+ title="term";
+ resize-by-cells="no";
+ pad="0x0 center";
+ };
+
+ desktop-notifications.command = "notify-send -a \${app-id} -i \${app-id} \${title} \${body}";
+ url.label-letters="arstneio";
+
+ cursor = {
+ style="block";
+ blink="no";
+ color="0f0f0f cacaca";
+ };
+
+ colors = {
+ foreground="cacaca";
+ background="0f0f0f";
+ regular0="0f0f0f";
+ regular1="ac8a8c";
+ regular2="8aac8b";
+ regular3="aca98a";
+ regular4="8f8aac";
+ regular5="ac8aac";
+ regular6="8aabac";
+ regular7="cacaca";
+ bright0="262626 ";
+ bright1="c49ea0 ";
+ bright2="9ec49f ";
+ bright3="c4c19e ";
+ bright4="a39ec4 ";
+ bright5="c49ec4 ";
+ bright6="9ec3c4 ";
+ bright7="f5f5f5 ";
+ "16"="ceb188";
+ "17"="ac8a8c";
+ "18"="191919";
+ "19"="262626";
+ "20"="ac8a8c";
+ "21"="e7e7e7";
+ };
+ };
+ };
+ };
+}
diff --git a/modules/global.nix b/modules/global.nix
new file mode 100644
index 0000000..309159a
--- /dev/null
+++ b/modules/global.nix
@@ -0,0 +1,51 @@
+{ config, lib, pkgs, ...}:
+let
+ cfg = config.modules.global;
+in
+{
+ imports = [ ./default.nix ];
+
+ options.modules.global = with lib.options; {
+ notNixOS = mkOption {
+ type = lib.types.bool;
+ default = false;
+ description = "Whether nix is running outside of NixOS.";
+ };
+ wayland = mkEnableOption "Wayland";
+ };
+
+ config = {
+ modules = {
+ global.wayland = true;
+ foot.enable = true;
+ sway = {
+ enable = true;
+ package = if cfg.noNixOS then
+ config.lib.nixGL.wrap pkgs.sway else pkgs.sway;
+ };
+ };
+
+ programs = {
+ home-manager.enable = true;
+ };
+
+ targets.genericLinux.enable = cfg.notNixOS;
+
+ home = {
+ username = "stefan";
+ homeDirectory = "/home/stefan";
+ stateVersion = "24.11";
+
+ packages = with pkgs; [
+ nerd-fonts.comic-shanns-mono
+ ] ++ (lib.optional cfg.notNixOS nixgl.auto.nixGLDefault)
+ ++ (lib.optionals cfg.wayland
+ [
+ wl-clipboard
+ mako
+ wmenu
+ ]);
+ };
+
+ };
+}
diff --git a/modules/nvim/default.nix b/modules/nvim/default.nix
new file mode 100644
index 0000000..54f9d53
--- /dev/null
+++ b/modules/nvim/default.nix
@@ -0,0 +1,47 @@
+{ config, lib, pkgs, ...}:
+let
+ cfg = config.modules.nvim;
+ lua = str: "lua << EOF\n${str}\nEOF\n";
+ luaImport = file: "lua << EOF\n${builtins.readFile file}\nEOF\n";
+in
+{
+ options.modules.nvim = {
+ };
+
+ config = {
+ programs.neovim = {
+ enable = true;
+ defaultEditor = true;
+ viAlias = true;
+ vimAlias = true;
+ vimdiffAlias = true;
+ plugins = with pkgs.vimPlugins; [
+ {
+ plugin = nvim-lspconfig;
+ config = let
+ servers = [
+ { name = "clangd"; }
+ ];
+ in lua(pkgs.lib.strings.concatStrings (pkgs.lib.lists.forEach servers (s: "require('lspconfig')['${s.name}'].setup(${s.config or "{}"})\n")));
+ }
+
+ (nvim-treesitter.withPlugins (p: with p; [
+ tree-sitter-nix
+ tree-sitter-c
+ tree-sitter-lua
+ tree-sitter-zig
+ tree-sitter-markdown
+ tree-sitter-markdown-inline
+ ]))
+
+ base16-nvim
+ telescope-nvim
+ telescope-fzf-native-nvim
+ ];
+ extraLuaConfig = ''
+ ${builtins.readFile ./settings.lua}
+ ${builtins.readFile ./keybinds.lua}
+ '';
+ };
+ };
+}
diff --git a/nvim/keybinds.lua b/modules/nvim/keybinds.lua
index 1c1c512..1c1c512 100644
--- a/nvim/keybinds.lua
+++ b/modules/nvim/keybinds.lua
diff --git a/nvim/settings.lua b/modules/nvim/settings.lua
index 816757c..816757c 100644
--- a/nvim/settings.lua
+++ b/modules/nvim/settings.lua
diff --git a/modules/sway/default.nix b/modules/sway/default.nix
new file mode 100644
index 0000000..e6abd2c
--- /dev/null
+++ b/modules/sway/default.nix
@@ -0,0 +1,251 @@
+{ config, lib, pkgs, ... }:
+let
+ cfg = config.modules.sway;
+in
+{
+ options.modules.sway = {
+ enable = lib.mkEnableOption "sway";
+ package = lib.mkOption {
+ type = with lib.types; nullOr package;
+ default = pkgs.sway;
+ };
+ };
+ config = {
+ wayland.windowManager.sway = lib.mkIf cfg.enable {
+ enable = true;
+ package = config.lib.nixGL.wrap pkgs.sway;
+ config = rec {
+ modifier = "Mod1";
+
+ left = "m";
+ down = "n";
+ up = "e";
+ right = "i";
+
+ fonts = {
+ names = [ "ComicShannsMono Nerd Font Mono" ]; # material
+ size = 11.0;
+ };
+
+ terminal = "foot";
+ menu = "wmenu-run -n 4c4c4c -N 0d0d0d -s 8aac8b -S 0d0d0d -l 10";
+
+ defaultWorkspace = "workspace number 1";
+
+ input = {
+ "type:keyboard" = {
+ xkb_layout = "us";
+ xkb_variant = "colemak_dh";
+ };
+ "type:touchpad" = {
+ dwt = "enabled"; # turn off if u are a gamer
+ tap = "enabled";
+ middle_emulation = "enabled";
+ };
+ };
+
+ output = {
+ "*" = {
+ bg = "#0d0d0d solid_color";
+ };
+ "eDP-1" = {
+ mode = "2880x1920@120.00Hz";
+ scale = "2.0";
+ };
+ };
+
+ colors = {
+ background = "#0f0f0f";
+ focused = {
+ border = "#191919" ;
+ background = "#191919";
+ text = "#ac8aac";
+ indicator = "#282a2e";
+ childBorder = "#8aac8b";
+ };
+ focusedInactive = {
+ border = "#191919";
+ background = "#191919";
+ text = "#ac8aac";
+ indicator = "#282a2e";
+ childBorder = "#191919";
+ };
+ unfocused = {
+ border = "#191919";
+ background = "#191919";
+ text = "#4c4c4c";
+ indicator = "#0f0f0f";
+ childBorder = "#191919";
+ };
+ };
+
+ bars = [{
+ statusCommand = "i3status";
+ mode = "hide";
+ hiddenState = "hide";
+ fonts = {
+ names = [ "ComicShannsMono Nerd Font Mono" ];
+ size = "10.0";
+ };
+ extraConfig = ''
+ modifier ${modifier}
+ '';
+ colors = {
+ background = "#0d0d0d";
+ statusline = "#cacaca";
+ focusedWorkspace = {
+ border = "#0d0d0d";
+ background = "#0d0d0d";
+ text = "#ac8aac";
+ };
+ activeWorkspace = {
+ border = "#0d0d0d";
+ background = "#0d0d0d";
+ text = "#4c4c4c";
+ };
+ inactiveWorkspace = {
+ border = "#0d0d0d";
+ background = "#0d0d0d";
+ text = "#4c4c4c";
+ };
+ bindingMode = {
+ border = "#0d0d0d";
+ background = "#0d0d0d";
+ text = "#ac8aac";
+ };
+ };
+ }];
+
+ focus = {
+ followMouse = false;
+ wrapping = "force";
+ };
+
+ window = {
+ border = 1;
+ hideEdgeBorders = "--i3 smart";
+ commands = [
+ {
+ command = "mark --add \"prop:$$PROP:\"";
+ criteria = {
+ shell = ".";
+ };
+ }
+ {
+ command = "splith";
+ criteria = {
+ con_mark = "^prop.*:newcont:";
+ };
+ }
+ {
+ command = "layout tabbed";
+ criteria = {
+ con_mark = "^prop.*:tabbed:";
+ };
+ }
+ {
+ command = "mark --toggle \"prop:$$PROP:\" ; set $$PROP none";
+ criteria = {
+ con_mark = "^prop:";
+ };
+ }
+ ];
+ };
+
+ keybindings = {
+ "${modifier}+Return" = "exec ${terminal}";
+ "${modifier}+Shift+w" = "exec browser";
+ "${modifier}+d" = "exec ${menu}";
+
+ "${modifier}+Shift+c" = "kill";
+
+ "${modifier}+Shift+r" = "reload";
+ "${modifier}+Shift+q" = "exec swaynag -t warning -m 'do you really want to exit?' -B 'yes, exit' 'exit-sway'";
+
+ "${modifier}+${left}" = "focus left";
+ "${modifier}+${down}" = "focus down";
+ "${modifier}+${up}" = "focus up";
+ "${modifier}+${right}" = "focus right";
+
+ "${modifier}+a" = "focus parent";
+ "${modifier}+s" = "focus child";
+
+ "${modifier}+Shift+${left}" = "move left";
+ "${modifier}+Shift+${down}" = "move down";
+ "${modifier}+Shift+${up}" = "move up";
+ "${modifier}+Shift+${right}" = "move right";
+
+ "${modifier}+r" = "mode resize";
+
+ "${modifier}+1" = "workspace number 1";
+ "${modifier}+2" = "workspace number 2";
+ "${modifier}+3" = "workspace number 3";
+ "${modifier}+4" = "workspace number 4";
+ "${modifier}+5" = "workspace number 5";
+ "${modifier}+6" = "workspace number 6";
+ "${modifier}+7" = "workspace number 7";
+ "${modifier}+8" = "workspace number 8";
+ "${modifier}+9" = "workspace number 9";
+ "${modifier}+0" = "workspace number 0";
+
+ "${modifier}+Shift+1" = "move container to workspace number 1";
+ "${modifier}+Shift+2" = "move container to workspace number 2";
+ "${modifier}+Shift+3" = "move container to workspace number 3";
+ "${modifier}+Shift+4" = "move container to workspace number 4";
+ "${modifier}+Shift+5" = "move container to workspace number 5";
+ "${modifier}+Shift+6" = "move container to workspace number 6";
+ "${modifier}+Shift+7" = "move container to workspace number 7";
+ "${modifier}+Shift+8" = "move container to workspace number 8";
+ "${modifier}+Shift+9" = "move container to workspace number 9";
+ "${modifier}+Shift+0" = "move container to workspace number 0";
+
+ "${modifier}+Shift+minus" = "move scratchpad";
+ "${modifier}+minus" = "scratchpad show";
+
+ "${modifier}+h" = "splith";
+ "${modifier}+v" = "splitv";
+
+ "${modifier}+Shift+s" = "layout stacking";
+ "${modifier}+w" = "layout tabbed";
+ "${modifier}+t" = "layout toggle split";
+ "${modifier}+Shift+space" = "floating toggle";
+ "${modifier}+space" = "focus mode_toggle";
+
+ "${modifier}+Shift+f" = "fullscreen";
+ "--locked XF86AudioRaiseVolume" = "exec volumectl -d -u up";
+ "--locked XF86AudioLowerVolume" = "exec volumectl -d -u down";
+ "--locked XF86AudioMute" = "exec volumectl -d toggle-mute";
+ "--locked XF86AudioMicMute" = "exec volumectl -d -m toggle-mute";
+ "--locked XF86MonBrightnessDown" = "exec lightctl -d down";
+ "--locked XF86MonBrightnessUp" = "exec lightctl -d up";
+ };
+
+ startup = [
+ { command = "foot -s"; }
+ { command = "wayneko --layer bottom --follow-pointer true --background-colour 0xcacaca --outline-colour 0x0f0f0f"; }
+ { command = "pipewire"; always = true; } # TODO need to fix this instead of running a new session every time
+ { command = "mpd"; }
+ { command = "mpdscribble"; }
+ { command = "avizo-service"; } # disable if on nixos or systemd
+ ];
+
+ seat = {
+ "*" = {
+ hide_cursor = "1500";
+ xcursor_theme = "Adwaita 18";
+ };
+ };
+ };
+
+ extraConfigEarly = ''
+ set $PROP none
+ '';
+
+ extraConfig = ''
+ title_align center
+ default_border pixel 1
+ '';
+ };
+ };
+}
+