{ config, lib, machine, pkgs, ... }: let background-path = ".config/sway/background.png"; sway_config = builtins.toFile "sway_config" '' set $mod Mod4 set $left h set $down j set $up k set $right l set $term alacritty set $menu wmenu-run set $screenshot grim -g "$(slurp)" floating_modifier $mod normal workspace_layout stacking output * bg ${config.home.homeDirectory}/${background-path} fill # launch programs bindsym $mod+Shift+Return exec $term bindsym $mod+Shift+d exec $menu bindsym $mod+Shift+a exec anki bindsym $mod+Shift+q exec librewolf bindsym $mod+Shift+s exec $screenshot bindsym $mod+Shift+c kill bindsym $mod+Shift+r reload bindsym $mod+Shift+Alt+q exit bindsym $mod+$left focus left bindsym $mod+$down focus down bindsym $mod+$up focus up bindsym $mod+$right focus right bindsym $mod+Shift+$left move left bindsym $mod+Shift+$down move down bindsym $mod+Shift+$up move up bindsym $mod+Shift+$right move right bindsym $mod+1 workspace number 1 bindsym $mod+2 workspace number 2 bindsym $mod+3 workspace number 3 bindsym $mod+4 workspace number 4 bindsym $mod+5 workspace number 5 bindsym $mod+6 workspace number 6 bindsym $mod+7 workspace number 7 bindsym $mod+8 workspace number 8 bindsym $mod+9 workspace number 9 bindsym $mod+0 workspace number 0 bindsym $mod+Shift+1 move container to workspace number 1 bindsym $mod+Shift+2 move container to workspace number 2 bindsym $mod+Shift+3 move container to workspace number 3 bindsym $mod+Shift+4 move container to workspace number 4 bindsym $mod+Shift+5 move container to workspace number 5 bindsym $mod+Shift+6 move container to workspace number 6 bindsym $mod+Shift+7 move container to workspace number 7 bindsym $mod+Shift+8 move container to workspace number 8 bindsym $mod+Shift+9 move container to workspace number 9 bindsym $mod+Shift+0 move container to workspace number 0 bindsym $mod+f fullscreen bindsym $mod+Shift+space floating toggle bindsym $mod+Shift+minus move scratchpad bindsym $mod+minus scratchpad show bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5% bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5% bindsym --locked XF86AudioMicMute exec pact set-source-mute \@DEFAULT_SOURCE@ toggle bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- bindsym --locked XF86MonbrightnessUp exec brightnessctl set 5%+ default_border none font pango:monospace 0.001 titlebar_border_thickness 0 titlebar_padding 0 ''; in { imports = [./stylix.nix]; xdg.configFile."shell".source = lib.getExe pkgs.brush; xdg.configFile."sway/config".source = lib.mkForce sway_config; wayland.windowManager.sway.enable = true; home = { username = "andromeda"; homeDirectory = "/home/${config.home.username}"; stateVersion = "26.05"; packages = [ pkgs.acpi pkgs.alacritty pkgs.anki pkgs.brightnessctl pkgs.brush pkgs.dust pkgs.fluffychat pkgs.fzf pkgs.glow pkgs.grim pkgs.jmtpfs pkgs.nix-output-monitor pkgs.ranger pkgs.rip2 pkgs.ripgrep pkgs.slurp pkgs.tree pkgs.zoxide ]; file.${background-path}.source = pkgs.nixos-artwork.wallpapers.gear; }; programs = { alacritty.enable = true; bash = { enable = true; shellAliases = { neofetch = "fastfetch"; ls = lib.mkForce "lsd"; ll = lib.mkForce "lsd -l"; l = "lsd -la"; cd = "z"; gg = "git log --oneline --abbrev-commit --all --graph --decorate --color"; md = "glow"; }; bashrcExtra = '' PS1="\u@\h:\w$" eval "$(zoxide init bash)" ''; }; btop = { enable = true; settings = { theme_background = false; vim_keys = true; rounded_corners = false; graph_symbol = "braille"; update_ms = 150; proc_sorting = "cpu lazy"; proc_gradient = false; proc_left = true; cpu_single_graph = true; cpu_bottom = true; clock_format = "/user@/host:/uptime@%H:%M"; background_update = true; mem_graphs = false; mem_below_net = true; show_swap = false; only_physical = true; show_io_stat = true; io_mode = false; io_graph_combined = false; }; }; fastfetch.enable = true; git = { enable = true; settings = { user = { name = config.home.username; email = "${config.home.username}@${machine.hostname}"; }; init.defaultBranch = "master"; }; }; gh.enable = true; home-manager.enable = true; librewolf = { enable = true; package = pkgs.librewolf.override { cfg.enableTridactylNative = true; }; profiles.${config.home.username}.extensions.packages = [ pkgs.nur.repos.rycee.firefox-addons.tridactyl ]; }; lsd.enable = true; nvf = { enable = true; settings.vim = { autocomplete.nvim-cmp.enable = false; formatter.conform-nvim = { enable = true; setupOpts.format_on_save = { lsp_format = "fallback"; timeout_ms = 5000; }; }; lsp.otter-nvim.enable = true; git.enable = true; keymaps = [ { key = ""; mode = ["i" "n" "v" "c"]; action = ""; } { key = ""; mode = ["i" "n" "v" "c"]; action = ""; } { key = ""; mode = ["i" "n" "v" "c"]; action = ""; } { key = ""; mode = ["i" "n" "v" "c"]; action = ""; } { key = "jj"; mode = ["i"]; action = ""; } { key = "kk"; mode = ["i"]; action = ""; } { key = "jk"; mode = ["i"]; action = ""; } { key = "kj"; mode = ["i"]; action = ""; } { key = ""; mode = ["i"]; action = ""; } ]; languages = { nix = { enable = true; format.enable = true; lsp.enable = true; }; haskell = { enable = true; lsp.enable = true; }; }; lineNumberMode = "relative"; options = { tabstop = 2; shiftwidth = 2; expandtab = true; smarttab = true; foldmethod = "indent"; number = true; colorcolumn = "80"; }; statusline.lualine.enable = true; syntaxHighlighting = true; }; }; ssh.enable = true; }; }