myConfig

Date: Nov 8, 2026

  • etc/
    • nixos/
      • flake.lock
        {
          "nodes": {
            "flake-compat": {
              "flake": false,
              "locked": {
                "lastModified": 1777699697,
                "narHash": "sha256-Eg9b/rq/ECYwNwEXs5i9wHyhxNI0JrYx2srdI2uZMaQ=",
                "ref": "refs/heads/main",
                "rev": "382052b74656a369c5408822af3f2501e9b1af81",
                "revCount": 94,
                "type": "git",
                "url": "https://git.lix.systems/lix-project/flake-compat.git"
              },
              "original": {
                "type": "git",
                "url": "https://git.lix.systems/lix-project/flake-compat.git"
              }
            },
            "mnw": {
              "locked": {
                "lastModified": 1780772958,
                "narHash": "sha256-VKKe8r4pwCGWZ3Yr9CPN129R4S3CKLSrlYqdYz3vKpM=",
                "owner": "Gerg-L",
                "repo": "mnw",
                "rev": "0871dbf63a53610c95db04439ed8ea4d6ec9c160",
                "type": "github"
              },
              "original": {
                "owner": "Gerg-L",
                "repo": "mnw",
                "type": "github"
              }
            },
            "nixpkgs": {
              "locked": {
                "lastModified": 1788584326,
                "narHash": "sha256-Fd3OB8J9JhgliQwOKcqx4M672CInxi1I5VnwsaXeSQo=",
                "owner": "nixos",
                "repo": "nixpkgs",
                "rev": "6713828a351efa628b025a1adf7f43cbf8597513",
                "type": "github"
              },
              "original": {
                "owner": "nixos",
                "ref": "nixos-26.05",
                "repo": "nixpkgs",
                "type": "github"
              }
            },
            "nixpkgs_2": {
              "locked": {
                "lastModified": 1787498568,
                "narHash": "sha256-FoOSoBG7tEvOlGRTpWnVdY506Ner4y7r7UYO3OGgmE8=",
                "rev": "56c02bc00adcf003215cc4bd996d6efaf4cff188",
                "type": "tarball",
                "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1060451.56c02bc00adc/nixexprs.tar.xz"
              },
              "original": {
                "type": "tarball",
                "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
              }
            },
            "nvf": {
              "inputs": {
                "flake-compat": "flake-compat",
                "mnw": "mnw",
                "nixpkgs": "nixpkgs_2"
              },
              "locked": {
                "lastModified": 1788494938,
                "narHash": "sha256-ozY1uUiOLXt3KLpUQwu8Y1DG+lKa53Gke7NW9gvUu3I=",
                "owner": "notashelf",
                "repo": "nvf",
                "rev": "5e4f212f8720c17fdd06f5c57591f251aff67453",
                "type": "github"
              },
              "original": {
                "owner": "notashelf",
                "repo": "nvf",
                "type": "github"
              }
            },
            "root": {
              "inputs": {
                "nixpkgs": "nixpkgs",
                "nvf": "nvf"
              }
            }
          },
          "root": "root",
          "version": 7
        }
        
      • flake.nix
        {
          description = "Multi-host NixOS Configuration";
        
          inputs = {
            nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
            nvf.url = "github:notashelf/nvf";
          };
        
          outputs = { self, nixpkgs, nvf, ... }@inputs: {
            nixosConfigurations = {
              
              # Configuration for Host A (Arugala)
              Arugala = nixpkgs.lib.nixosSystem {
                system = "x86_64-linux";
                specialArgs = { inherit inputs; };
                modules = [
                  ./hosts/arugala/configuration.nix
                  ./hosts/arugala/modules
                  nvf.nixosModules.default
                ];
              };
        
              # Configuration for Host B (Limburger)
              Limburger = nixpkgs.lib.nixosSystem {
                system = "x86_64-linux"; 
                specialArgs = { inherit inputs; };
                modules = [
                  ./hosts/limburger/configuration.nix
                  ./hosts/limburger/modules
                  nvf.nixosModules.default
                ];
              };
        
            };
          };
        }
        
        
        
      • hosts/
        • arugala/
          • configuration.nix
            
            { lib, config, pkgs, ... }: {
            
              imports =
                [ 
                ./hardware-configuration.nix
                ./modules/default.nix
                ../../shared-modules/default.nix
                ];
            
              boot.loader.systemd-boot.enable = true;
              boot.loader.efi.canTouchEfiVariables = true;
              boot.kernelPackages = pkgs.linuxPackages_latest;
            
              networking.hostName = "Arugala";
            
              swapDevices = lib.mkForce [ ];
            
              nix.settings.experimental-features = [ "nix-command" "flakes" ];
            
              system.stateVersion = "21.05"; # Don't Change
            
            }
            
          • hardware-configuration.nix
            # Do not modify this file!  It was generated by ‘nixos-generate-config’
            # and may be overwritten by future invocations.  Please make changes
            # to /etc/nixos/configuration.nix instead.
            { config, lib, pkgs, modulesPath, ... }:
            
            {
              imports =
                [ (modulesPath + "/installer/scan/not-detected.nix")
                ];
            
              boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "uas" "sd_mod" ];
              boot.initrd.kernelModules = [ ];
              boot.kernelModules = [ "kvm-intel" ];
              boot.extraModulePackages = [ ];
            
              fileSystems."/" =
                { device = "/dev/disk/by-uuid/bb449348-6adc-40f4-9671-99aabc5bfb81";
                  fsType = "ext4";
                };
            
              fileSystems."/boot" =
                { device = "/dev/disk/by-uuid/DDD9-41EE";
                  fsType = "vfat";
                };
            
              swapDevices =
                [ { device = "/dev/disk/by-uuid/24e89e47-fb9b-4b6a-97c8-ef612c88f856"; }
                ];
            
              # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
              # (the default) this is the recommended approach. When using systemd-networkd it's
              # still possible to use this option, but it's recommended to use it in conjunction
              # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
              networking.useDHCP = lib.mkDefault true;
              # networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
              # networking.interfaces.virbr0.useDHCP = lib.mkDefault true;
              # networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true;
            
              nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
              powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
              hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
            }
            
          • modules/
            • default.nix
              
              { lib, ... }: {
                imports =
                  [ 
                    ./packages.nix
                    ./firewall.nix
                    ./libinput.nix
                  ];
              }
              
            • firewall.nix
              { pkgs, lib, ... }: {
              
              # Open ports in the firewall.
                networking.firewall = {
                  allowedTCPPorts = [ ] ;
                  allowedUDPPorts = [ ];
              #enable = false;
                };
              
                #services.opensnitch = {
                #  enable = true;
                #  rules = {
                #    systemd-timesyncd = {
                #      name = "systemd-timesyncd";
                #      enabled = true;
                #      action = "allow";
                #      duration = "always";
                #      operator = {
                #        type ="simple";
                #        sensitive = false;
                #        operand = "process.path";
                #        data = "${lib.getBin pkgs.systemd}/lib/systemd/systemd-timesyncd";
                #      };
                #    };
                #    systemd-resolved = {
                #      name = "systemd-resolved";
                #      enabled = true;
                #      action = "allow";
                #      duration = "always";
                #      operator = {
                #        type ="simple";
                #        sensitive = false;
                #        operand = "process.path";
                #        data = "${lib.getBin pkgs.systemd}/lib/systemd/systemd-resolved";
                #      };
                #    };
                #  };
                #};
              
              }
              
            • libinput.nix
              { ... }: {
              
                services.libinput.enable = true;
                services.xserver.config = ''
                  Section "InputClass"
                    Identifier "mouse accel"
                    Driver "libinput"
                    MatchIsPointer "on"
                    Option "AccelProfile" "flat"
                    Option "AccelSpeed" "0"
                  EndSection
                ''; 
                services.libinput.mouse.middleEmulation = false;
              
              }
              
            • packages.nix
              { pkgs, ... }: {
              
                nixpkgs.config = {
                  allowUnfree = true;
                };
              
                # List packages installed in system profile. To search, run:
                # $ nix search wget
                environment.systemPackages = with pkgs; [
              
                  # Ethtool chatgpt shit
                  ethtool
              
                  #ESSENTIAL PACKAGES
                  wget git curl python3 flatpak neovim unzip zip tmux lm_sensors pfetch baobab gnome-disk-utility xclip picom openvpn gcc i3 dmenu alacritty nitrogen waytrogen swaybg rofi redshift seahorse
              
                  #NON ESSENTIAL PACKAGES
                  gucharmap
                  otpclient gimp krita shotwell flameshot gnome-calculator gnome-system-monitor fastfetch usbutils
              
                  # Normal apps
                  wireshark dig yt-dlp virt-manager spice-gtk libreoffice lxappearance libratbag piper mumble
              
                  #Financial
                  monero-gui electrum
              
                  #Containerization
                  docker-compose
              
                  #Networking
                  pkgs.networkmanager-openvpn tcpdump nmap syncthing traceroute openvpn opensnitch-ui
              
                  #File Stuff
                  tldr ngrep font-awesome docker-compose distrobox file-roller nemo 
              
                  #i3 Stuff
                  i3blocks
              
                  #Fonts
                  caladea carlito
              
                  #Web Dev
                  hugo
              
                  # Themes
                  nwg-look
                  gruvbox-material-gtk-theme numix-solarized-gtk-theme everforest-gtk-theme everforest-cursors
                  vimix-icon-theme
              
                  # Sway
                  grim slurp wl-clipboard mako waybar
              
                  # Network Tunneling
                  wireguard-tools proton-vpn
              
                  # Pci shit
                  pciutils
              
                ];
              
                fonts.packages = with pkgs; [
                  nerd-fonts.hack
                    font-awesome
                    powerline-fonts
                ];
              
              
                programs.wireshark.enable = true;
              
                programs.obs-studio = {
                  enable = true;
                  plugins = with pkgs.obs-studio-plugins; [
                    wlrobs
                      obs-backgroundremoval
                      obs-pipewire-audio-capture
                  ];
                };
              
                programs.steam = {
                  enable = true;
                  remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
                    dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
                    localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
                };
              
                environment.shellAliases = {
                  rebuild-arugala = "doas nixos-rebuild switch --flake /etc/nixos#Arugala";
                };
              
                             }
              
            • waydroid.nix
              { config, pkgs, ... }: 
              
              {
                virtualisation.waydroid.enable = true;
              }
              
        • limburger/
          • configuration.nix
            
            # your system.  Help is available in the configuration.nix(5) man page
            # and in the NixOS manual (accessible by running ‘nixos-help’).
            
            { config, pkgs, ... }:
            
            {
              imports =
                [ # Include the results of the hardware scan.
                  ./hardware-configuration.nix
                  ./modules/default.nix
                  ../../shared-modules/default.nix
                ];
            
              # Bootloader.
              boot.loader.systemd-boot.enable = true;
              boot.loader.efi.canTouchEfiVariables = true;
              boot.kernelPackages = pkgs.linuxPackages_latest;
            
              # Setup keyfile
              boot.initrd.secrets = {
                "/crypto_keyfile.bin" = null;
              };
            
              # Enable Flakes
              nix.settings.experimental-features = [ "nix-command" "flakes" ];
            
              networking.hostName = "Limburger"; # Define your hostname.
            
              system.stateVersion = "23.05"; # Did you read the comment?
            
            }
            
          • hardware-configuration.nix
            # Do not modify this file!  It was generated by ‘nixos-generate-config’
            # and may be overwritten by future invocations.  Please make changes
            # to /etc/nixos/configuration.nix instead.
            { config, lib, pkgs, modulesPath, ... }:
            
            {
              imports =
                [ (modulesPath + "/installer/scan/not-detected.nix")
                ];
            
              boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" ];
              boot.initrd.kernelModules = [ ];
              boot.kernelModules = [ "kvm-intel" ];
              boot.extraModulePackages = [ ];
            
              fileSystems."/" =
                { device = "/dev/disk/by-uuid/30113a68-2b13-44b8-bccb-196d67dad8f1";
                  fsType = "ext4";
                };
            
              boot.initrd.luks.devices."luks-15679ece-3c06-445b-930a-ad90cef86323".device = "/dev/disk/by-uuid/15679ece-3c06-445b-930a-ad90cef86323";
            
              fileSystems."/boot" =
                { device = "/dev/disk/by-uuid/F8B3-A9D9";
                  fsType = "vfat";
                };
            
              swapDevices = [ ];
            
              # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
              # (the default) this is the recommended approach. When using systemd-networkd it's
              # still possible to use this option, but it's recommended to use it in conjunction
              # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
              networking.useDHCP = lib.mkDefault true;
              # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
              # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
            
              nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
              powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
              hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
            }
            
          • modules/
            • default.nix
              { config, pkgs, ... }:
              
              {
                imports = [
                ./packages.nix
                ./firewall.nix
                ./printers.nix
                ./power.nix
                ];
              }
              
            • firewall.nix
              { config, ... }: #config added for nat
              {
               # Open ports in the firewall.
                networking.firewall = {
                        #allowedUDPPorts = [ ];
                        allowedTCPPorts = [ 9999 ];
                    };
                # Or disable the firewall altogether.
                # networking.firewall.enable = false;
              }
              
            • packages.nix
              { pkgs, config, ... }:
              {
              
                hardware.bluetooth = {
                  enable = true;
                  powerOnBoot = false;
                };
                services.blueman.enable = true;
              
                environment.systemPackages = with pkgs; [
                  wget neovim alacritty git curl tmux unzip zip 
              
              ## Networking
                    networkmanager-openvpn
                    mtr
                    blueman
              
              ## Window Manager & Desktop
                    i3
                    xfce.xfce4-whiskermenu-plugin
                    libreoffice gimp
                    xfce.thunar
                    arc-theme plata-theme vimix-icon-theme
              
              ## Misc
                    alsa-utils
                    pamixer
                    tldr
                    xkill
                    iperf
                    fastfetch
                    numix-cursor-theme
                    file-roller
                    gnome-system-monitor
                    gnome-disk-utility
                    btop
                    nitrogen
                    mpd ncmpcpp
                    veracrypt
                    obs-studio
                    wireshark nmap dig
                    dezoomify-rs
                    lm_sensors
                    flameshot
                    lxappearance
                    rofi
                    git
                    lua
                    i3blocks
                    picom
                    yt-dlp
                    xclip
                    whois
                    traceroute mtr
              #shellcheck
                    redshift
              #ntfs3g
                    gucharmap
                    hugo
              #qtox
              
              ## Virtualisation & Containerisation
                    docker-compose
                    podman-compose
                    distrobox
                    virt-manager
              
              ## Services
                    cloudflared
                    brightnessctl
                    acpi
              
              # Network Tunnels
                    wireguard-tools
                    ];
              
                fonts.packages = with pkgs; [
                  nerd-fonts.hack
                    font-awesome
                    powerline-fonts
                ];
              
                programs.obs-studio = {
                  enable = true;
                  plugins = with pkgs.obs-studio-plugins; [
                    wlrobs
                      obs-backgroundremoval
                      obs-pipewire-audio-capture
                  ];
                };
              
                services.fwupd.enable = true;
                environment.shellAliases = {
                  rebuild-limburger = "doas nixos-rebuild switch --flake /etc/nixos#Limburger";
                };
              }
              
              
            • power.nix
              { config, ... }:
              {
                # power settings
                services.hardware.bolt.enable = true;
              
                services.auto-cpufreq.enable = true;
                services.auto-cpufreq.settings = {
                    battery = {
                        governor = "balance";
                        turbo = "never";
                    };
                    charger = {
                        governor = "balance";
                        turbo = "never";
                    };
                };
                services.thermald.enable = true;
              }
              
            • printers.nix
              {...}:
              {
                services = {
                  avahi = {
                    enable = true;
                    nssmdns4 = true;
                    openFirewall = true;
                  };
                  printing.enable = true;
                };
              }
              
      • shared-modules/
        • .zshrc
          # Prompt
          PS1=" %F{white}%F{blue}%B%n%F{yellow}@%F{grey}%m%F{#828482} %~  "$'\n   %F{white1}↪ '"%F{reset}"
          
          PATH=$PATH:$HOME/Documents/projects/shellScripts/
          
          NVIMPATH=$(whereis nvim | cut -d " " -f2)
          export EDITOR=$NVIMPATH
          
          # History in cache directory:
          HISTSIZE=100
          SAVEHIST=100
          HISTFILE=~/.cache/zsh/history
          
          # Basic auto/tab complete:
          autoload -U compinit
          zstyle ':completion:*' menu select
          zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
          zmodload zsh/complist
          compinit
          _comp_options+=(globdots)		# Include hidden files.
          
          # vi mode
          bindkey -v
          export KEYTIMEOUT=1
          
          # Edit line in vim with ctrl-e:
          autoload edit-command-line; zle -N edit-command-line
          bindkey '^e' edit-command-line
          
          # Aliases
          source $HOME/.sh_aliases
          
        • default.nix
          { lib, ... }:
          {
            imports = 
              [
              ./locale.nix
              ./users.nix
              ./virtualisation.nix
              ./networking.nix
              ./xfcei3.nix
              ./hardware.nix
              ./services.nix
              ./nvf.nix
              ];
          }
          
        • familyshare.nix
          { pkgs, config, ... }:
          {
          environment.systemPackages = [ pkgs.rclone ];
          environment.etc."rclone-mnt.conf".text = ''
            [poodle]
            type = sftp
            user = poodle
            host = 192.168.1.8
            port = 42069
            key_file = /home/sarcasticdream/.ssh/id_rsa
            shell_type = unix
            md5sum_command = md5sum
            sha1sum_command = sha1sum
          '';
          
          fileSystems."/home/sarcasticdream/kunze_share" = {
            device = "poodle:/mnt/hdd01/kunze_share";
            fsType = "rclone";
            options = [
              "nodev"
              "nofail"
              "allow_other"
              "args2env"
              "config=/etc/rclone-mnt.conf"
              "x-systemd.automount"
              "x-systemd.idle-timeout=600"
              "_netdev"
            ];
          };
          }
          
        • hardware.nix
          { pkgs, config, ... }:
          {
          
            #hardware = {
              #pulseaudio.enable = true;
              #graphics = {
              #  #driSupport32Bit = true;
              #  extraPackages32 = with pkgs.pkgsi686Linux; [ libva ];
              #  extraPackages = with pkgs; [
              #    rocmPackages.clr.icd
              #  ];
              #};
            #};
          
            #sound.enable = true;
            #services.pipewire.enable = true;
          
            powerManagement = {
              enable = true;
              cpuFreqGovernor = "powersave";
            };
          
            # rtkit is optional but recommended
            security.rtkit.enable = true;
            services.pipewire = {
              enable = true; # if not already enabled
              alsa.enable = true;
              alsa.support32Bit = true;
              pulse.enable = true;
              # If you want to use JACK applications, uncomment this
              #jack.enable = true;
            };
          
          }
          
        • locale.nix
          { config, ... }:
          {
          # Set your time zone.
            time.timeZone = "America/Chicago";
          
          # Select internationalisation properties.
            i18n.defaultLocale = "en_US.UTF-8";
          
            i18n.extraLocaleSettings = {
              LC_ADDRESS = "en_US.UTF-8";
              LC_IDENTIFICATION = "en_US.UTF-8";
              LC_MEASUREMENT = "en_US.UTF-8";
              LC_MONETARY = "en_US.UTF-8";
              LC_NAME = "en_US.UTF-8";
              LC_NUMERIC = "en_US.UTF-8";
              LC_PAPER = "en_US.UTF-8";
              LC_TELEPHONE = "en_US.UTF-8";
              LC_TIME = "en_US.UTF-8";
            };
          
          }
          
        • lua/
          • remap.lua
            vim.g.mapleader = " "
            vim.keymap.set("n", "<leader>zx", vim.cmd.Ex)
            vim.keymap.set("n", "<leader>xz", vim.cmd.Rex)
            
            -- Mega based netrw file manager
            vim.keymap.set("n", "<leader>zx", vim.cmd.Ex)
            
            -- Remap ,cc to comment the current line in normal mode
            vim.keymap.set('n', ',cc', 'gcc', { remap = true, desc = 'Toggle comment line' })
            
            -- Optional: If you also want to comment visual selections using ,cc
            vim.keymap.set('v', ',cc', 'gc', { remap = true, desc = 'Toggle comment selection' })
            
            -- Replace all shiz
            vim.api.nvim_set_keymap('n', 'S', ':%s//g<Left><Left>', { noremap = true })
            
            -- splitting
            vim.api.nvim_set_keymap('n', '<C-o>', '<C-w>s', { noremap = true })
            vim.api.nvim_set_keymap('n', '<C-p>', '<C-w>v', { noremap = true })
            
            -- Closing windows
            vim.api.nvim_set_keymap('n', '<C-q>', '<C-w>c', { noremap = true })
            
            -- Move to the next/previous tab with Alt-1/Alt-2
            vim.api.nvim_set_keymap('n', '<A-1>', ':tabmove +<CR>', { noremap = true, silent = true })
            vim.api.nvim_set_keymap('n', '<A-2>', ':tabmove -<CR>', { noremap = true, silent = true })
            
            -- Map Tab to gt and Shift-Tab to gT
            vim.api.nvim_set_keymap('n', '<Tab>', 'gt', { noremap = true })
            vim.api.nvim_set_keymap('n', '<S-Tab>', 'gT', { noremap = true })
            
            -- Create a new tab with Alt-t
            vim.api.nvim_set_keymap('n', '<A-t>', ':tabnew<CR>', { noremap = true, silent = true })
            
            -- Map Esc to Ctrl-\
            vim.api.nvim_set_keymap('t', '<Esc>', '<C-\\><C-n>', { noremap = true })
            
        • networking.nix
          { pkgs, ... }:
          {
            systemd.services.NetworkManager-wait-online.enable = false;
            networking = {
              #hostName = "Arugala";  Defined in configuration.nix due to flakes
              networkmanager = {
                enable = true;
                plugins = with pkgs; [
                  networkmanager-openvpn
                ];
                };
              #useDHCP = false;
              #defaultGateway = "192.168.1.1";
              #nameservers = [ "192.168.1.1" ];
              #bridges = {
              #  "br0" = {
              #    interfaces = [ "enp8s0" ];
              #  };
              #};
              #interfaces.br0.ipv4 = {
              #  addresses = [ {
              #    address = "192.168.1.88";
              #    prefixLength = 24;
              #  } ];
              #};
           };
          }
          
        • nvf.nix
          { pkgs, nvf, lib, ... }:
          {
            programs.nvf = {
              enable = true;
              settings.vim = {
          
                luaConfigRC.remap = builtins.readFile ./lua/remap.lua;
                viAlias = true;
                vimAlias = true;
          
                options = {
                  shiftwidth = 2;
                  tabstop = 2;
                  softtabstop = 2;
                  expandtab = true;
                  autoindent = true;
                  smartindent = true;
                  swapfile = false;
                  backup = false;
                  undofile = true;
                  incsearch = true;
                  hlsearch = false;
                  cursorline = true;
                  mouse = "a";
                  termguicolors = true;
                  clipboard = "unnamedplus";
                  showmode = false;
                  laststatus = 3;
                };
          
                theme = {
                  enable = true;
                  name = "solarized"; 
                  style = "dark";
                  transparent = true; 
                };
          
                keymaps = [
                {
                  key = "<leader>e";
                  mode = "n";
                  action = "<cmd>lua vim.diagnostic.open_float()<CR>";
                  silent = true;
                }
                ];
          
                autocomplete = {
                  nvim-cmp = {
                    enable = true;
                    sourcePlugins = [
                      pkgs.vimPlugins.cmp-path
                    ];
                    sources = {
                      path = "[Path]";
                      buffer = "[Buffer]";
                      nvim_lsp = "[LSP]";
                    };
                  };
                };
          
                lsp = {
                  enable = true;
                  servers = {
                    nil_ls.enable = true;
                  };
                };
          
                languages = {
                  nix.enable = true;
                  python.enable = true;
                  html.enable = true;
                  css.enable = true;
                  markdown.enable = true;
                  bash.enable = true;
                };
          
                luaConfigPre = ''
                  vim.opt.listchars = { tab = '>-', trail = '-', extends = '>', precedes = '<' }
                vim.opt.undodir = os.getenv("HOME") .. "/.config/nvim/undodir"
                  '';
          
                statusline.lualine = {
                  enable = true;
                  setupOpts = {
                    options = {
                      globalstatus = true;
                    };
                  };
                };
                luaConfigPost = ''
                  require('lualine').setup({
                    options = {
                        theme = 'auto',
                        section_separators = { left = '', right = '' },
                      },
                    sections = {
                      lualine_b = {
                        {
                          'filename',
                          path = 3,
                          file_status = true,
                          shorting_target = 40,
                          symbols = {
                          modified = ' ',
                          readonly = ' ',
                          unnamed = ' [No Name]',
                          newfile = ' [New]',
                          },
                        },
                      },
                    },
                  })
              '';
                telescope.enable = true;
              };
            };
          }
          
        • services.nix
          
          { pkgs, ... }: {
          
            # Configure keymap in X11
            services.xserver.xkb.layout = "us";
           # services.xserver.xkbOptions = "eurosign:e";
          
            # services.monero.enable = true;
          
            # Allow unfree packages
            nixpkgs.config.allowUnfree = true;
            services.libinput.enable = true;
            programs.dconf.enable = true;
            services.flatpak.enable = true;
            programs.wireshark.enable = true;
            services.gnome.gnome-keyring.enable = true;
          
            services.ratbagd.enable = true;
            services.gvfs.enable = true;
          
            xdg.portal = {
              enable = true;
              wlr.enable = true;
              extraPortals = with pkgs; [
                xdg-desktop-portal-gtk
             ];
            };
          
          
            nix.gc = {
              automatic = true;
              dates = "weekly";
              options = "--delete-older-than 7d";
            };
          
          }
          
        • sway/
          • bindings/
            • bindconf
              
              # start a terminal
              bindsym Mod1+Return exec xfce4-terminal
              bindsym XF86AudioRaiseVolume exec wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ ; exec pkill -SIGRTMIN+10 i3blocks
              bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- ; exec pkill -SIGRTMIN+10 i3blocks
              #include ~/.config/sway/bindings/bindconf
              bindsym $mod+Return exec alacritty -e tmux new-session -A -s main
              bindsym $mod+Shift+e exec ~/.config/sway/powermenu
              #bindsym $mod+Shift+e exec sway exit
              
              # kill focused window
              bindsym $mod+Shift+q kill
                                          #APPLICATION LAUNCHER#
              # start dmenu (a program launcher)
              # bindsym $mod+d exec dmenu_run
              bindsym Mod1+d exec rofi -show drun -wayland-layer overlay
              #bindsym Mod1+Shift+l exec xflock4
              #bindsym Mod1+Tab exec rofi -show window
              #bindsym Mod1+p exec xfce4-popup-whiskermenu
              #bindsym Mod1+s exec xfce4-appfinder 
              #for_window [class="Xfce4-appfinder" instance="xfce4-appfinder"] floating enable
                                          #APPLICATION LAUNCHER#
              # change focus
              bindsym $mod+j focus left
              bindsym $mod+k focus down
              bindsym $mod+l focus up
              bindsym $mod+semicolon focus right
              
              # alternatively, you can use the cursor keys:
              bindsym $mod+Left focus left
              bindsym $mod+Down focus down
              bindsym $mod+Up focus up
              bindsym $mod+Right focus right
              
              # move focused window
              bindsym $mod+Shift+j move left
              bindsym $mod+Shift+k move down
              bindsym $mod+Shift+l move up
              bindsym $mod+Shift+semicolon move right
              
              # alternatively, you can use the cursor keys:
              bindsym $mod+Shift+Left move left
              bindsym $mod+Shift+Down move down
              bindsym $mod+Shift+Up move up
              bindsym $mod+Shift+Right move right
              
              # split in horizontal orientation
              bindsym $mod+h split h
              
              # split in vertical orientation
              bindsym $mod+v split v
              
              # enter fullscreen mode for the focused container
              bindsym $mod+f fullscreen toggle
              
              # change container layout (stacked, tabbed, toggle split)
              bindsym $mod+s layout stacking
              bindsym $mod+w layout tabbed
              bindsym $mod+e layout toggle split
              
              # toggle tiling / floating
              bindsym $mod+Shift+space floating toggle
              
              # change focus between tiling / floating windows
              bindsym $mod+space focus mode_toggle
              
              # focus the parent container
              bindsym $mod+a focus parent
              
              # switch to workspace
              bindsym $mod+1 workspace $ws1
              bindsym $mod+2 workspace $ws2
              bindsym $mod+3 workspace $ws3
              bindsym $mod+4 workspace $ws4
              bindsym $mod+5 workspace $ws5
              bindsym $mod+6 workspace $ws6
              bindsym $mod+7 workspace $ws7
              bindsym $mod+8 workspace $ws8
              bindsym $mod+9 workspace $ws9
              bindsym $mod+0 workspace $ws10
              
              # move focused container to workspace
              bindsym $mod+Shift+1 move container to workspace $ws1
              bindsym $mod+Shift+2 move container to workspace $ws2
              bindsym $mod+Shift+3 move container to workspace $ws3
              bindsym $mod+Shift+4 move container to workspace $ws4
              bindsym $mod+Shift+5 move container to workspace $ws5
              bindsym $mod+Shift+6 move container to workspace $ws6
              bindsym $mod+Shift+7 move container to workspace $ws7
              bindsym $mod+Shift+8 move container to workspace $ws8
              bindsym $mod+Shift+9 move container to workspace $ws9
              bindsym $mod+Shift+0 move container to workspace $ws10
              
              # Move roskpaces between monitors
              # Move workspaces betweeen monitors
              bindsym $mod+Control+p move workspace to output DP-2
              bindsym $mod+Control+n move workspace to output HDMI-1
              bindsym $mod+Control+l move workspace to output right
              bindsym $mod+Control+k move workspace to output left
              #bindsym $mod+Control+j move workspace to output down
              #bindsym $mod+Control+k move workspace to output up
              bindsym $mod+Tab workspace back_and_forth
              
              # reload the configuration file
              bindsym $mod+Shift+r reload
              
              bindsym $mod+r mode "resize"
              
              bindsym Mod1+a exec flameshot gui
              bindsym Print exec flameshot gui
              
              # change gaps size
              bindsym $mod+Shift+t gaps inner current set 4; gaps outer current set 0
              bindsym $mod+Shift+s gaps inner current plus 4
              bindsym $mod+Shift+f gaps inner current minus 4
              bindsym $mod+Shift+d gaps inner current set 0; gaps outer current set 0
              
              # Program Launches
              bindsym Mod1+Shift+d exec --no-startup-id nemo 
              bindsym Mod1+Shift+m exec --no-startup-id alacritty -e ncmpcpp
              bindsym Mod1+Shift+k exec pkill mpd
              #bindsym Mod1+l exec pkill xfce4-panel
              
              
              # Swaylock
              bindsym Mod1+Shift+l exec swaylock \
                --color 002b36 \
                --font "JetBrainsMono Nerd Font" \
                --font-size 32 \
                --indicator-radius 100 \
                --indicator-thickness 5 \
                --inside-color 002b36 \
                --ring-color 586e75 \
                --line-color 002b36 \
                --inside-clear-color 002b36 \
                --ring-clear-color 93a1a1 \
                --inside-ver-color 002b36 \
                --ring-ver-color 268bd2 \
                --inside-wrong-color 002b36 \
                --ring-wrong-color dc322f \
                --key-hl-color b58900 \
                --bs-hl-color dc322f \
                --text-color fdf6e3 \
                --text-clear-color fdf6e3 \
                --text-ver-color fdf6e3 \
                --text-wrong-color fdf6e3
              
          • config
            # dependencies xfce4-panel and xfce4-appfinder
            set $mod Mod4
            font pango:monospace 6
            titlebar_padding 1 1
            #OG Value 8
            
            # Use Mouse+$mod to drag floating windows to their wanted position
            floating_modifier $mod
            
            # focus the child container
            #bindsym $mod+d focus child
            
            include ~/.config/sway/bindings/bindconf
            # Define names for default workspaces for which we configure key bindings later on.
            # We use variables to avoid repeating the names in multiple places.
            set $ws1 1
            set $ws2 2
            set $ws3 3
            set $ws4 4
            set $ws5 5
            set $ws6 6
            set $ws7 7
            set $ws8 8
            set $ws9 9
            set $ws10 10
            
            # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
            #bindsym $mod+Shift+r restart
            # exit i3 (logs you out of your X session)
            
            # resize window (you can also use the mouse for that)
            mode "resize" {
                    # These bindings trigger as soon as you enter the resize mode
            
                    # Pressing left will shrink the window’s width.
                    # Pressing right will grow the window’s width.
                    # Pressing up will shrink the window’s height.
                    # Pressing down will grow the window’s height.
                    bindsym j resize shrink width 10 px or 10 ppt
                    bindsym k resize grow height 10 px or 10 ppt
                    bindsym l resize shrink height 10 px or 10 ppt
                    bindsym semicolon resize grow width 10 px or 10 ppt
            
                    # same bindings, but for the arrow keys
                    bindsym Left resize shrink width 10 px or 10 ppt
                    bindsym Down resize grow height 10 px or 10 ppt
                    bindsym Up resize shrink height 10 px or 10 ppt
                    bindsym Right resize grow width 10 px or 10 ppt
            
                    # back to normal: Enter or Escape or $mod+r
                    bindsym Return mode "default"
                    bindsym Escape mode "default"
                    bindsym $mod+r mode "default"
            }
            
            
            exec xrandr -s 2560x1440 --rate 165.00
            
            exec --no-startup-id tmux -e bash
            exec nm-applet --indicator
            bindsym Mod1+c exec pkill picom
            bindsym Mod1+v exec picom
            #exec_always bash ~/.config/sway/startups/bg.sh &
            exec_always waytrogen --restore &
            exec_always dbus-update-activation-environment DISPLAY
            exec_always --no-startup-id picom &
            exec systemctl --user import-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP SWAYSOCK I3SOCK XCURSOR_SIZE XCURSOR_THEME &
            exec_always sh -c 'pkill -9 waybar; sleep 0.5; waybar'
            
            
            
            
            # gapsconfig
            for_window [class="^.*"] border pixel 2
            gaps inner 2
            gaps outer 2
            # gapsconfig
            
            
            
            # set primary gruvbox colorscheme colors
            set $bg #282828
            set $red #cc241d
            set $green #98971a
            set $yellow #d79921
            set $blue #458588
            set $purple #b16286
            set $aqua #689d68
            set $gray #a89984
            set $darkgray #1d2021
            
            
            # Swaybar
            #bar {
            #
            #   colors {
            #            separator  #1f222d
            #            background #1f222d
            #            statusline #81a1c1
            #
            #            #                   border  background text
            #            focused_workspace  #1f222d #1f222d    #81a1c1
            #            active_workspace   #1f222d #252936    #5e81ac
            #            inactive_workspace #1f222d #1f222d    #4c566a
            #            urgent_workspace   #1f222d #1f222d    #ee829f
            #            binding_mode       #1f222d #81a1c1    #2e3440
            #    }
            #
            #    font pango:Hack 10.5
            #    position top
            #    status_command i3blocks
            #    tray_output *
            #}
            
            # class                 border  backgr. text    indicator child_border
            client.focused          #2c363d #3c464d #ffffff #7e7e7e   #a7a7a7
            client.focused_inactive #333333 #5f676a #ffffff #484e50   #5f676a
            client.unfocused        #333333 #222222 #888888 #292d2e   #7d7d7d
            client.urgent           #2f343a #900000 #ffffff #900000   #900000
            client.placeholder      #000000 #0c0c0c #ffffff #000000   #0c0c0c
            client.background       #282a2e
            
          • powermenu
            #!/usr/bin/env bash
            
            options="  Lock\n  Suspend\n  Restart\n  Power Off\n  Log Out"
            
            chosen=$(printf "$options" | rofi -dmenu -i -p "Power")
            
            case "$chosen" in
                "  Lock")
                    swaylock
                    ;;
                "  Suspend")
                    systemctl suspend
                    ;;
                "  Restart")
                    systemctl reboot
                    ;;
                "  Power Off")
                    systemctl poweroff
                    ;;
                "  Log Out")
                    swaymsg exit
                    ;;
            esac
            
          • startups/
            • bg.sh
              #!/usr/bin/env bash
              sleep 1 && swaybg -i ~/Pictures/wallpaper/other/apocolyptic/paw.jpg
              
          • wifiapplet.sh
            #!/bin/bash
            
            # Rofi NetworkManager Wi-Fi menu
            
            ROFI="rofi -dmenu -i -p 'Wi-Fi'"
            NMCLI="nmcli"
            
            # Make sure NetworkManager is available
            if ! command -v nmcli >/dev/null 2>&1; then
                notify-send "Network Menu" "nmcli is not installed."
                exit 1
            fi
            
            # Rescan Wi-Fi networks
            $NMCLI device wifi rescan >/dev/null 2>&1
            
            # Get currently connected SSID
            CURRENT=$($NMCLI -t -f ACTIVE,SSID device wifi | awk -F: '$1=="yes" {print $2; exit}')
            
            # Build network list
            NETWORKS=$(
                $NMCLI -t -f SSID,SIGNAL,SECURITY device wifi list |
                awk -F: '
                BEGIN { OFS="|" }
                $1 != "" {
                    ssid=$1
                    signal=$2
                    security=$3
            
                    # Avoid duplicate SSIDs
                    if (!seen[ssid]++) {
                        print ssid, signal, security
                    }
                }'
            )
            
            # Add special options
            MENU=""
            
            while IFS='|' read -r SSID SIGNAL SECURITY; do
                [ -z "$SSID" ] && continue
            
                if [ "$SSID" = "$CURRENT" ]; then
                    MENU+="✓ $SSID  [$SIGNAL%]  $SECURITY"$'\n'
                else
                    MENU+="  $SSID  [$SIGNAL%]  $SECURITY"$'\n'
                fi
            done <<< "$NETWORKS"
            
            MENU+="  Disconnect"
            MENU+="  Rescan"
            
            # Show Rofi menu
            CHOICE=$(printf "%s\n" "$MENU" | $ROFI)
            
            [ -z "$CHOICE" ] && exit 0
            
            # Handle special options
            if [[ "$CHOICE" == *"Disconnect"* ]]; then
                $NMCLI device disconnect "$(nmcli -t -f DEVICE,TYPE device | awk -F: '$2=="wifi" {print $1; exit}')"
                notify-send "Wi-Fi" "Disconnected"
                exit 0
            fi
            
            if [[ "$CHOICE" == *"Rescan"* ]]; then
                exec "$0"
            fi
            
            # Remove display formatting
            SELECTED=$(echo "$CHOICE" | sed -E 's/^[✓ ]+//; s/  \[[0-9]+%\]  .*//')
            
            # Check whether NetworkManager already knows the connection
            if $NMCLI connection show "$SELECTED" >/dev/null 2>&1; then
                $NMCLI connection up "$SELECTED"
            
                if [ $? -eq 0 ]; then
                    notify-send "Wi-Fi" "Connected to $SELECTED"
                else
                    notify-send "Wi-Fi" "Failed to connect to $SELECTED"
                fi
            
                exit 0
            fi
            
            # Determine security type
            SECURITY=$(echo "$NETWORKS" | awk -F'|' -v ssid="$SELECTED" '$1==ssid {print $3; exit}')
            
            if [ "$SECURITY" = "--" ] || [ -z "$SECURITY" ]; then
                # Open network
                $NMCLI device wifi connect "$SELECTED"
            
                if [ $? -eq 0 ]; then
                    notify-send "Wi-Fi" "Connected to $SELECTED"
                else
                    notify-send "Wi-Fi" "Failed to connect to $SELECTED"
                fi
            else
                # Password-protected network
                PASSWORD=$(rofi -dmenu -password -p "Password")
            
                [ -z "$PASSWORD" ] && exit 0
            
                $NMCLI device wifi connect "$SELECTED" password "$PASSWORD"
            
                if [ $? -eq 0 ]; then
                    notify-send "Wi-Fi" "Connected to $SELECTED"
                else
                    notify-send "Wi-Fi" "Failed to connect to $SELECTED"
                fi
            fi
            
        • users.nix
          { pkgs, config, ...  }:
          {
          
          # Define a user account. Don't forget to set a password with ‘passwd’.
            users.users = {
              alex = {
                isNormalUser = true;
                description = "alex";
                extraGroups = [ "networkmanager" "wheel" "audio" "disk" "networkmanager" "wireshark" "libvirtd" "docker" "video" ];
                packages = with pkgs; [
          #  thunderbird
                ];
                shell = pkgs.zsh;
              };
          
            };
          
          
            programs.zsh = {
              enable = true;
              syntaxHighlighting.enable = true;
              enableBashCompletion = true;
            };
          
            environment.etc."zshrc".text = 
              builtins.readFile ./.zshrc;
          
            security = {
              sudo.enable = false;
              doas = {
                enable = true;
                extraRules = [{
                  users = ["alex"];
                  keepEnv = true; 
                  setEnv = [ "DISPLAY" "XAUTHORITY" ];
                  persist = true;
                }];
              };
            };
          
          }
          
        • virtualisation.nix
          { pkgs, config, ... }:
          {
            virtualisation = {
              libvirtd = {
                enable = true;
                qemu = {
                  package = pkgs.qemu_kvm;
                  runAsRoot = true;
                  swtpm.enable = true;
                };
          
              };
              docker.enable = true;
              podman = {
                enable = true;
                defaultNetwork.settings.dns_enabled = true;
              };
            };
          }
          
        • wallpaper/
          • storm.jpg
            storm.jpg
        • waybar/
          • config.jsonc
            // -*- mode: jsonc -*-
            {
                // "layer": "top", // Waybar at top layer
                // "position": "bottom", // Waybar position (top|bottom|left|right)
                "height": 18, // Waybar height (to be removed for auto height)
                // "width": 1280, // Waybar width
                "spacing": 2, // Gaps between modules (4px)
                // Choose the order of the modules
                // gaps
                // "margin-top": 4,
                // "margin-bottom": 4,
                // "margin-left": 4,
                // "margin-right": 4,
                "modules-left": [
                    "sway/workspaces",
                    "sway/mode",
                    "sway/scratchpad",
                    "custom/media"
                ],
                "modules-center": [
                    "clock"
                ],
                "modules-right": [
                    "mpd",
                    "idle_inhibitor",
                    "pulseaudio",
                    "network",
                    "power-profiles-daemon",
                    "cpu",
                    "memory",
                    "temperature",
                    "backlight",
                    // "keyboard-state",
                    // "sway/language",
                    "battery",
                    "battery#bat2",
                    // "sway/window",
                    "tray",
                    "custom/power"
                ],
                // Modules configuration
                // "sway/workspaces": {
                //     "disable-scroll": true,
                //     "all-outputs": true,
                //     "warp-on-scroll": false,
                //     "format": "{name}: {icon}",
                //     "format-icons": {
                //         "1": "",
                //         "2": "",
                //         "3": "",
                //         "4": "",
                //         "5": "",
                //         "urgent": "",
                //         "focused": "",
                //         "default": ""
                //     }
                // },
                // "keyboard-state": {
                //     "numlock": true,
                //     "capslock": true,
                //     "format": "{name} {icon}",
                //     "format-icons": {
                //         "locked": "",
                //         "unlocked": ""
                //     }
                // },
                // "sway/mode": {
                //     "format": "<span style=\"italic\">{}</span>"
                // },
                // "sway/scratchpad": {
                //     "format": "{icon} {count}",
                //     "show-empty": false,
                //     "format-icons": ["", ""],
                //     "tooltip": true,
                //     "tooltip-format": "{app}: {title}"
                // },
                // "mpd": {
                //     "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
                //     "format-disconnected": "Disconnected ",
                //     "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
                //     "unknown-tag": "N/A",
                //     "interval": 5,
                //     "consume-icons": {
                //         "on": " "
                //     },
                //     "random-icons": {
                //         "off": "<span color=\"#f53c3c\"></span> ",
                //         "on": " "
                //     },
                //     "repeat-icons": {
                //         "on": " "
                //     },
                //     "single-icons": {
                //         "on": "1 "
                //     },
                //     "state-icons": {
                //         "paused": "",
                //         "playing": ""
                //     },
                //     "tooltip-format": "MPD (connected)",
                //     "tooltip-format-disconnected": "MPD (disconnected)"
                // },
                "idle_inhibitor": {
                    "format": "{icon}",
                    "format-icons": {
                        "activated": "",
                        "deactivated": ""
                    }
                },
                "tray": {
                    // "icon-size": 21,
                    "spacing": 10,
                    // "icons": {
                    //   "blueman": "bluetooth",
                    //   "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
                    // }
                },
                "clock": {
                    // "timezone": "America/New_York",
                    // "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
                    // "format-alt": "{:%Y-%m-%d}"
                    "format": "{:%A, %B %d, %Y  %H:%M}",
                    "interval": 5
                },
                "cpu": {
                    "format": "{usage}% ",
                    "tooltip": false
                },
                "memory": {
                    "format": "{}% "
                },
                "temperature": {
                    // "thermal-zone": 2,
                    "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
                    "critical-threshold": 80,
                    // "format-critical": "{temperatureC}°C {icon}",
                    "format": "{temperatureC}°C {icon}",
                    "format-icons": ["", "", ""]
                },
                // "backlight": {
                //     // "device": "acpi_video1",
                //     "format": "{percent}% {icon}",
                //     "format-icons": ["", "", "", "", "", "", "", "", ""]
                // },
                // "battery": {
                //     "states": {
                //         // "good": 95,
                //         "warning": 30,
                //         "critical": 15
                //     },
                //     "format": "{capacity}% {icon}",
                //     "format-full": "{capacity}% {icon}",
                //     "format-charging": "{capacity}% ",
                //     "format-plugged": "{capacity}% ",
                //     "format-alt": "{time} {icon}",
                //     // "format-good": "", // An empty format will hide the module
                //     // "format-full": "",
                //     "format-icons": ["", "", "", "", ""]
                // },
                // "battery#bat2": {
                //     "bat": "BAT2"
                // },
                // "power-profiles-daemon": {
                //   "format": "{icon}",
                //   "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
                //   "tooltip": true,
                //   "format-icons": {
                //     "default": "",
                //     "performance": "",
                //     "balanced": "",
                //     "power-saver": ""
                //   }
                // },
                "network": {
                    // "interface": "wlp2*", // (Optional) To force the use of this interface
                    "format-wifi": "{essid} ({signalStrength}%) ",
                    "format-ethernet": "{ipaddr}/{cidr} 󰈀",
                    "tooltip-format": "{ifname} via {gwaddr} ",
                    "format-linked": "{ifname} (No IP) ",
                    "format-disconnected": "Disconnected ⚠",
                    "format-alt": "{ifname}: {ipaddr}/{cidr}"
                },
                "pulseaudio": {
                    // "scroll-step": 1, // %, can be a float
                    "format": "{volume}% {icon} {format_source}",
                    "format-bluetooth": "{volume}% {icon} {format_source}",
                    "format-bluetooth-muted": " {icon} {format_source}",
                    "format-muted": " {format_source}",
                    "format-source": "{volume}% ",
                    "format-source-muted": "",
                    "format-icons": {
                        "headphone": " ",
                        "hands-free": " ",
                        "headset": " ",
                        "phone": " ",
                        "portable": " ",
                        "car": " ",
                        "default": [" ", " ", " "]
                    },
                    "on-click": "pavucontrol"
                },
            		//   "custom/media": {
            		//       "format": "{icon} {text}",
            		//       "return-type": "json",
            		//       "max-length": 40,
            		//       "format-icons": {
            		//           "spotify": "",
            		//           "default": "🎜"
            		//       },
            		//       "escape": true,
            		//       "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
            		//       // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
            		//   },
            		//   "custom/power": {
            		//       "format" : "⏻ ",
            		// "tooltip": false,
            		// "menu": "on-click",
            		// "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
            		// "menu-actions": {
            		// 	"shutdown": "shutdown",
            		// 	"reboot": "reboot",
            		// 	"suspend": "systemctl suspend",
            		// 	"hibernate": "systemctl hibernate"
            		// }
            		//   }
            }
            
          • style.css
            * {
              min-height: 0;
              font-size: 12px;
              font-weight: bold;
              background-color: #191c25;
            }
            
            window#waybar {
              background: #191c25;
              color: #eee8d5;
              border: none;
              box-shadow: none;
              animation: none;
            }
            
            window#waybar.hidden {
              opacity: 0.2;
            }
            
            /* Window states */
            window#waybar.termite,
            window#waybar.chromium {
              background-color: #191c25;
              border: none;
            }
            
            /* Buttons */
            button {
              box-shadow: none;
              border: none;
              border-radius: 0;
            }
            
            button:hover {
              background: inherit;
              box-shadow: none;
            }
            
            
            /* =========================
               Workspaces
               ========================= */
            
            #workspaces {
              margin: 0;
              padding: 0;
            }
            
            #workspaces button {
              min-width: 20px;
              min-height: 20px;
              padding: 0;
              margin: 0;
              border: none;
              border-bottom: 2px solid transparent;
              border-radius: 0;
              box-shadow: none;
              background-color: #191c25;
              color: #eee8d5;
            }
            
            #workspaces button:hover {
              background-color: #073642;
              box-shadow: none;
            }
            
            #workspaces button.focused {
              color: #eee8d5;
              font-weight: bold;
              border-bottom-color: #2aa198;
            }
            
            #workspaces button.urgent {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            
            /* =========================
               General module spacing
               ========================= */
            
            #clock,
            #battery,
            #cpu,
            #memory,
            #disk,
            #temperature,
            #backlight,
            #network,
            #pulseaudio,
            #wireplumber,
            #custom-media,
            #tray,
            #mode,
            #idle_inhibitor,
            #scratchpad,
            #power-profiles-daemon,
            #mpd,
            #language,
            #keyboard-state,
            #privacy {
              margin: 0;
              padding: 0 6px;
              background-color: #191c25;
              color: #eee8d5;
            }
            
            
            /* =========================
               Window
               ========================= */
            
            #window {
              margin: 0;
            }
            
            
            /* =========================
               Mode
               ========================= */
            
            #mode {
              box-shadow: none;
            }
            
            
            /* =========================
               Clock
               ========================= */
            
            #clock {
              color: #eee8d5;
            }
            
            
            /* =========================
               Battery
               ========================= */
            
            #battery {
              color: #eee8d5;
            }
            
            #battery.charging,
            #battery.plugged {
              color: #859900;
            }
            
            @keyframes blink {
              to {
                background-color: #dc322f;
                color: #eee8d5;
              }
            }
            
            #battery.critical:not(.charging) {
              background-color: #dc322f;
              color: #eee8d5;
              animation-name: blink;
              animation-duration: 0.5s;
              animation-timing-function: steps(12);
              animation-iteration-count: infinite;
              animation-direction: alternate;
            }
            
            
            /* =========================
               Power profiles
               ========================= */
            
            #power-profiles-daemon.performance {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            #power-profiles-daemon.balanced {
              background-color: #191c25;
              color: #eee8d5;
            }
            
            #power-profiles-daemon.power-saver {
              background-color: #191c25;
              color: #859900;
            }
            
            
            /* =========================
               CPU
               ========================= */
            
            #cpu {
                color: #eee8d5;
            }
            
            
            /* =========================
               Memory
               ========================= */
            
            #memory {
              color: #eee8d5;
            }
            
            
            /* =========================
               Disk
               ========================= */
            
            #disk {
              color: #eee8d5;
            }
            
            
            /* =========================
               Backlight
               ========================= */
            
            #backlight {
              color: #eee8d5;
            }
            
            
            /* =========================
               Network
               ========================= */
            
            #network {
              color: #eee8d5;
            }
            
            #network.disconnected {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            
            /* =========================
               Pulseaudio
               ========================= */
            
            #pulseaudio {
              color: #eee8d5;
            }
            
            #pulseaudio.muted {
              color: #cb4b16;
            }
            
            
            /* =========================
               Wireplumber
               ========================= */
            
            #wireplumber {
              color: #eee8d5;
            }
            
            #wireplumber.muted {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            
            /* =========================
               Custom media
               ========================= */
            
            #custom-media {
              color: #eee8d5;
              min-width: 100px;
            }
            
            #custom-media.custom-spotify,
            #custom-media.custom-vlc {
              background-color: #191c25;
            }
            
            
            /* =========================
               Temperature
               ========================= */
            
            #temperature {
              color: #eee8d5;
            }
            
            #temperature.critical {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            
            /* =========================
               Tray
               ========================= */
            
            #tray {
              color: #eee8d5;
            }
            
            #tray > .passive {
              -gtk-icon-effect: dim;
            }
            
            #tray > .needs-attention {
              -gtk-icon-effect: highlight;
              background-color: #dc322f;
            }
            
            
            /* =========================
               Idle inhibitor
               ========================= */
            
            #idle_inhibitor {
              color: #eee8d5;
            }
            
            #idle_inhibitor.activated {
              background-color: #073642;
              color: #2aa198;
            }
            
            
            /* =========================
               MPD
               ========================= */
            
            #mpd {
              color: #eee8d5;
            }
            
            #mpd.disconnected {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            #mpd.stopped {
              color: #eee8d5;
            }
            
            #mpd.paused {
              color: #b58900;
            }
            
            
            /* =========================
               Language
               ========================= */
            
            #language {
              background: #191c25;
              color: #eee8d5;
              padding: 0 6px;
              margin: 0;
              min-width: 16px;
            }
            
            
            /* =========================
               Keyboard state
               ========================= */
            
            #keyboard-state {
              background: #191c25;
              color: #eee8d5;
              padding: 0;
              margin: 0;
              min-width: 16px;
            }
            
            #keyboard-state > label {
              padding: 0 5px;
            }
            
            #keyboard-state > label.locked {
              background: rgba(0, 0, 0, 0.2);
            }
            
            
            /* =========================
               Scratchpad
               ========================= */
            
            #scratchpad {
              background: #191c25;
            }
            
            #scratchpad.empty {
              background: #191c25;
            }
            
            
            /* =========================
               Privacy
               ========================= */
            
            #privacy {
              padding: 0;
              background: #191c25;
            }
            
            #privacy-item {
              padding: 0 5px;
              color: #eee8d5;
              background: #191c25;
            }
            
            #privacy-item.screenshare {
              color: #eee8d5;
              background-color: #cb4b16;
            }
            
            #privacy-item.audio-in {
              color: #191c25;
              background-color: #859900;
            }
            
            #privacy-item.audio-out {
              background-color: #268bd2;
              color: #eee8d5;
            }
            
        • xfcei3.nix
          { pkgs, ... }: {
          
          # Enable the XFCE Desktop Environment.
            services.xserver.displayManager.lightdm = {
              enable = true;
              greeters.gtk.theme.name = "Everforest-Dark-B";
              greeters.gtk.iconTheme.name = "Vimix Ruby Dark";
              background = ./wallpaper/storm.jpg;
            };
            services.xserver.desktopManager.xfce.enable = true;
          
          # Configure keymap in X11
            services.xserver = {
              enable = true;
              xkb.layout = "us";
              xkb.variant = "";
            };
          
          # Enable Sway.
            programs.sway = {
              enable = true;
              wrapperFeatures.gtk = true;
            };
                         }
          
  • home/
    • alex/
      • .config/
        • sway/
          • bindings/
            • bindconf
              
              # start a terminal
              bindsym Mod1+Return exec xfce4-terminal
              bindsym XF86AudioRaiseVolume exec wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ ; exec pkill -SIGRTMIN+10 i3blocks
              bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- ; exec pkill -SIGRTMIN+10 i3blocks
              #include ~/.config/sway/bindings/bindconf
              bindsym $mod+Return exec alacritty -e tmux new-session -A -s main
              bindsym $mod+Shift+e exec ~/.config/sway/powermenu
              #bindsym $mod+Shift+e exec sway exit
              
              # kill focused window
              bindsym $mod+Shift+q kill
                                          #APPLICATION LAUNCHER#
              # start dmenu (a program launcher)
              # bindsym $mod+d exec dmenu_run
              bindsym Mod1+d exec rofi -show drun
              #bindsym Mod1+Shift+l exec xflock4
              #bindsym Mod1+Tab exec rofi -show window
              #bindsym Mod1+p exec xfce4-popup-whiskermenu
              #bindsym Mod1+s exec xfce4-appfinder 
              #for_window [class="Xfce4-appfinder" instance="xfce4-appfinder"] floating enable
                                          #APPLICATION LAUNCHER#
              # change focus
              bindsym $mod+j focus left
              bindsym $mod+k focus down
              bindsym $mod+l focus up
              bindsym $mod+semicolon focus right
              
              # alternatively, you can use the cursor keys:
              bindsym $mod+Left focus left
              bindsym $mod+Down focus down
              bindsym $mod+Up focus up
              bindsym $mod+Right focus right
              
              # move focused window
              bindsym $mod+Shift+j move left
              bindsym $mod+Shift+k move down
              bindsym $mod+Shift+l move up
              bindsym $mod+Shift+semicolon move right
              
              # alternatively, you can use the cursor keys:
              bindsym $mod+Shift+Left move left
              bindsym $mod+Shift+Down move down
              bindsym $mod+Shift+Up move up
              bindsym $mod+Shift+Right move right
              
              # split in horizontal orientation
              bindsym $mod+h split h
              
              # split in vertical orientation
              bindsym $mod+v split v
              
              # enter fullscreen mode for the focused container
              bindsym $mod+f fullscreen toggle
              
              # change container layout (stacked, tabbed, toggle split)
              bindsym $mod+s layout stacking
              bindsym $mod+w layout tabbed
              bindsym $mod+e layout toggle split
              
              # toggle tiling / floating
              bindsym $mod+Shift+space floating toggle
              
              # change focus between tiling / floating windows
              bindsym $mod+space focus mode_toggle
              
              # focus the parent container
              bindsym $mod+a focus parent
              
              # switch to workspace
              bindsym $mod+1 workspace $ws1
              bindsym $mod+2 workspace $ws2
              bindsym $mod+3 workspace $ws3
              bindsym $mod+4 workspace $ws4
              bindsym $mod+5 workspace $ws5
              bindsym $mod+6 workspace $ws6
              bindsym $mod+7 workspace $ws7
              bindsym $mod+8 workspace $ws8
              bindsym $mod+9 workspace $ws9
              bindsym $mod+0 workspace $ws10
              
              # move focused container to workspace
              bindsym $mod+Shift+1 move container to workspace $ws1
              bindsym $mod+Shift+2 move container to workspace $ws2
              bindsym $mod+Shift+3 move container to workspace $ws3
              bindsym $mod+Shift+4 move container to workspace $ws4
              bindsym $mod+Shift+5 move container to workspace $ws5
              bindsym $mod+Shift+6 move container to workspace $ws6
              bindsym $mod+Shift+7 move container to workspace $ws7
              bindsym $mod+Shift+8 move container to workspace $ws8
              bindsym $mod+Shift+9 move container to workspace $ws9
              bindsym $mod+Shift+0 move container to workspace $ws10
              
              # Move roskpaces between monitors
              # Move workspaces betweeen monitors
              bindsym $mod+Control+p move workspace to output DP-2
              bindsym $mod+Control+n move workspace to output HDMI-1
              bindsym $mod+Control+l move workspace to output right
              bindsym $mod+Control+k move workspace to output left
              #bindsym $mod+Control+j move workspace to output down
              #bindsym $mod+Control+k move workspace to output up
              bindsym $mod+Tab workspace back_and_forth
              
              # reload the configuration file
              bindsym $mod+Shift+r reload
              
              bindsym $mod+r mode "resize"
              
              bindsym Mod1+a exec flameshot gui
              bindsym Print exec flameshot gui
              
              # change gaps size
              bindsym $mod+Shift+t gaps inner current set 4; gaps outer current set 0
              bindsym $mod+Shift+s gaps inner current plus 4
              bindsym $mod+Shift+f gaps inner current minus 4
              bindsym $mod+Shift+d gaps inner current set 0; gaps outer current set 0
              
              # Program Launches
              bindsym Mod1+Shift+d exec --no-startup-id thunar
              bindsym Mod1+Shift+m exec --no-startup-id alacritty -e ncmpcpp
              bindsym Mod1+Shift+k exec pkill mpd
              #bindsym Mod1+l exec pkill xfce4-panel
              
              
              # Swaylock
              bindsym Mod1+Shift+l exec swaylock \
                --color 002b36 \
                --font "JetBrainsMono Nerd Font" \
                --font-size 32 \
                --indicator-radius 100 \
                --indicator-thickness 5 \
                --inside-color 002b36 \
                --ring-color 586e75 \
                --line-color 002b36 \
                --inside-clear-color 002b36 \
                --ring-clear-color 93a1a1 \
                --inside-ver-color 002b36 \
                --ring-ver-color 268bd2 \
                --inside-wrong-color 002b36 \
                --ring-wrong-color dc322f \
                --key-hl-color b58900 \
                --bs-hl-color dc322f \
                --text-color fdf6e3 \
                --text-clear-color fdf6e3 \
                --text-ver-color fdf6e3 \
                --text-wrong-color fdf6e3
              
          • config
            # dependencies xfce4-panel and xfce4-appfinder
            set $mod Mod4
            font pango:monospace 6
            titlebar_padding 1 1
            seat seat0 xcursor_theme everforest-cursors
            #OG Value 8
            
            # Use Mouse+$mod to drag floating windows to their wanted position
            floating_modifier $mod
            
            # focus the child container
            #bindsym $mod+d focus child
            
            include ~/.config/sway/bindings/bindconf
            # Define names for default workspaces for which we configure key bindings later on.
            # We use variables to avoid repeating the names in multiple places.
            set $ws1 1
            set $ws2 2
            set $ws3 3
            set $ws4 4
            set $ws5 5
            set $ws6 6
            set $ws7 7
            set $ws8 8
            set $ws9 9
            set $ws10 10
            
            # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
            #bindsym $mod+Shift+r restart
            # exit i3 (logs you out of your X session)
            
            # resize window (you can also use the mouse for that)
            mode "resize" {
                    # These bindings trigger as soon as you enter the resize mode
            
                    # Pressing left will shrink the window’s width.
                    # Pressing right will grow the window’s width.
                    # Pressing up will shrink the window’s height.
                    # Pressing down will grow the window’s height.
                    bindsym j resize shrink width 10 px or 10 ppt
                    bindsym k resize grow height 10 px or 10 ppt
                    bindsym l resize shrink height 10 px or 10 ppt
                    bindsym semicolon resize grow width 10 px or 10 ppt
            
                    # same bindings, but for the arrow keys
                    bindsym Left resize shrink width 10 px or 10 ppt
                    bindsym Down resize grow height 10 px or 10 ppt
                    bindsym Up resize shrink height 10 px or 10 ppt
                    bindsym Right resize grow width 10 px or 10 ppt
            
                    # back to normal: Enter or Escape or $mod+r
                    bindsym Return mode "default"
                    bindsym Escape mode "default"
                    bindsym $mod+r mode "default"
            }
            
            
            exec xrandr -s 2560x1440 --rate 165.00
            
            exec --no-startup-id tmux -e bash
            exec nm-applet --indicator
            bindsym Mod1+c exec pkill picom
            bindsym Mod1+v exec picom
            #exec_always bash ~/.config/sway/startups/bg.sh &
            exec_always waytrogen --restore &
            exec_always dbus-update-activation-environment DISPLAY
            exec_always --no-startup-id picom &
            exec systemctl --user import-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP SWAYSOCK I3SOCK XCURSOR_SIZE XCURSOR_THEME &
            exec_always sh -c 'pkill -9 waybar; sleep 0.5; waybar'
            
            
            
            
            # gapsconfig
            for_window [class="^.*"] border pixel 2
            gaps inner 2
            gaps outer 2
            # gapsconfig
            
            
            
            # set primary gruvbox colorscheme colors
            set $bg #282828
            set $red #cc241d
            set $green #98971a
            set $yellow #d79921
            set $blue #458588
            set $purple #b16286
            set $aqua #689d68
            set $gray #a89984
            set $darkgray #1d2021
            
            
            # Swaybar
            #bar {
            #
            #   colors {
            #            separator  #1f222d
            #            background #1f222d
            #            statusline #81a1c1
            #
            #            #                   border  background text
            #            focused_workspace  #1f222d #1f222d    #81a1c1
            #            active_workspace   #1f222d #252936    #5e81ac
            #            inactive_workspace #1f222d #1f222d    #4c566a
            #            urgent_workspace   #1f222d #1f222d    #ee829f
            #            binding_mode       #1f222d #81a1c1    #2e3440
            #    }
            #
            #    font pango:Hack 10.5
            #    position top
            #    status_command i3blocks
            #    tray_output *
            #}
            
            # class                 border  backgr. text    indicator child_border
            client.focused          #2c363d #3c464d #ffffff #7e7e7e   #a7a7a7
            client.focused_inactive #333333 #5f676a #ffffff #484e50   #5f676a
            client.unfocused        #333333 #222222 #888888 #292d2e   #7d7d7d
            client.urgent           #2f343a #900000 #ffffff #900000   #900000
            client.placeholder      #000000 #0c0c0c #ffffff #000000   #0c0c0c
            client.background       #282a2e
            
          • config.lol
            # dependencies xfce4-panel and xfce4-appfinder
            set $mod Mod4
            font pango:monospace 6
            titlebar_padding 1 1
            #OG Value 8
            
            # Use Mouse+$mod to drag floating windows to their wanted position
            floating_modifier $mod
            
            # focus the child container
            #bindsym $mod+d focus child
            
            include ~/.config/sway/bindings/bindconf
            # Define names for default workspaces for which we configure key bindings later on.
            # We use variables to avoid repeating the names in multiple places.
            set $ws1 1
            set $ws2 2
            set $ws3 3
            set $ws4 4
            set $ws5 5
            set $ws6 6
            set $ws7 7
            set $ws8 8
            set $ws9 9
            set $ws10 10
            
            # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
            #bindsym $mod+Shift+r restart
            # exit i3 (logs you out of your X session)
            
            # resize window (you can also use the mouse for that)
            mode "resize" {
                    # These bindings trigger as soon as you enter the resize mode
            
                    # Pressing left will shrink the window’s width.
                    # Pressing right will grow the window’s width.
                    # Pressing up will shrink the window’s height.
                    # Pressing down will grow the window’s height.
                    bindsym j resize shrink width 10 px or 10 ppt
                    bindsym k resize grow height 10 px or 10 ppt
                    bindsym l resize shrink height 10 px or 10 ppt
                    bindsym semicolon resize grow width 10 px or 10 ppt
            
                    # same bindings, but for the arrow keys
                    bindsym Left resize shrink width 10 px or 10 ppt
                    bindsym Down resize grow height 10 px or 10 ppt
                    bindsym Up resize shrink height 10 px or 10 ppt
                    bindsym Right resize grow width 10 px or 10 ppt
            
                    # back to normal: Enter or Escape or $mod+r
                    bindsym Return mode "default"
                    bindsym Escape mode "default"
                    bindsym $mod+r mode "default"
            }
            
            
            exec xrandr -s 2560x1440 --rate 165.00
            
            exec --no-startup-id tmux -e bash
            exec nm-applet --indicator
            bindsym Mod1+c exec pkill picom
            bindsym Mod1+v exec picom
            #exec_always bash ~/.config/sway/startups/bg.sh &
            exec_always waytrogen --restore &
            exec_always dbus-update-activation-environment DISPLAY
            exec_always --no-startup-id picom &
            exec systemctl --user import-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP SWAYSOCK I3SOCK XCURSOR_SIZE XCURSOR_THEME &
            exec_always sh -c 'pkill -9 waybar; sleep 0.5; waybar'
            
            
            
            
            # gapsconfig
            for_window [class="^.*"] border pixel 2
            gaps inner 2
            gaps outer 2
            # gapsconfig
            
            
            
            # set primary gruvbox colorscheme colors
            set $bg #282828
            set $red #cc241d
            set $green #98971a
            set $yellow #d79921
            set $blue #458588
            set $purple #b16286
            set $aqua #689d68
            set $gray #a89984
            set $darkgray #1d2021
            
            
            # Swaybar
            #bar {
            #
            #   colors {
            #            separator  #1f222d
            #            background #1f222d
            #            statusline #81a1c1
            #
            #            #                   border  background text
            #            focused_workspace  #1f222d #1f222d    #81a1c1
            #            active_workspace   #1f222d #252936    #5e81ac
            #            inactive_workspace #1f222d #1f222d    #4c566a
            #            urgent_workspace   #1f222d #1f222d    #ee829f
            #            binding_mode       #1f222d #81a1c1    #2e3440
            #    }
            #
            #    font pango:Hack 10.5
            #    position top
            #    status_command i3blocks
            #    tray_output *
            #}
            
            # class                 border  backgr. text    indicator child_border
            client.focused          #2c363d #3c464d #ffffff #7e7e7e   #a7a7a7
            client.focused_inactive #333333 #5f676a #ffffff #484e50   #5f676a
            client.unfocused        #333333 #222222 #888888 #292d2e   #7d7d7d
            client.urgent           #2f343a #900000 #ffffff #900000   #900000
            client.placeholder      #000000 #0c0c0c #ffffff #000000   #0c0c0c
            client.background       #282a2e
            
          • powermenu
            #!/usr/bin/env bash
            
            options="  Lock\n  Suspend\n  Restart\n  Power Off\n  Log Out"
            
            chosen=$(printf "$options" | rofi -dmenu -i -p "Power")
            
            case "$chosen" in
                "  Lock")
                    swaylock
                    ;;
                "  Suspend")
                    systemctl suspend
                    ;;
                "  Restart")
                    systemctl reboot
                    ;;
                "  Power Off")
                    systemctl poweroff
                    ;;
                "  Log Out")
                    swaymsg exit
                    ;;
            esac
            
          • startups/
            • bg.sh
              #!/usr/bin/env bash
              sleep 1 && swaybg -i ~/Pictures/wallpaper/other/apocolyptic/paw.jpg
              
          • wifiapplet.sh
            #!/bin/bash
            
            # Rofi NetworkManager Wi-Fi menu
            
            ROFI="rofi -dmenu -i -p 'Wi-Fi'"
            NMCLI="nmcli"
            
            # Make sure NetworkManager is available
            if ! command -v nmcli >/dev/null 2>&1; then
                notify-send "Network Menu" "nmcli is not installed."
                exit 1
            fi
            
            # Rescan Wi-Fi networks
            $NMCLI device wifi rescan >/dev/null 2>&1
            
            # Get currently connected SSID
            CURRENT=$($NMCLI -t -f ACTIVE,SSID device wifi | awk -F: '$1=="yes" {print $2; exit}')
            
            # Build network list
            NETWORKS=$(
                $NMCLI -t -f SSID,SIGNAL,SECURITY device wifi list |
                awk -F: '
                BEGIN { OFS="|" }
                $1 != "" {
                    ssid=$1
                    signal=$2
                    security=$3
            
                    # Avoid duplicate SSIDs
                    if (!seen[ssid]++) {
                        print ssid, signal, security
                    }
                }'
            )
            
            # Add special options
            MENU=""
            
            while IFS='|' read -r SSID SIGNAL SECURITY; do
                [ -z "$SSID" ] && continue
            
                if [ "$SSID" = "$CURRENT" ]; then
                    MENU+="✓ $SSID  [$SIGNAL%]  $SECURITY"$'\n'
                else
                    MENU+="  $SSID  [$SIGNAL%]  $SECURITY"$'\n'
                fi
            done <<< "$NETWORKS"
            
            MENU+="  Disconnect"
            MENU+="  Rescan"
            
            # Show Rofi menu
            CHOICE=$(printf "%s\n" "$MENU" | $ROFI)
            
            [ -z "$CHOICE" ] && exit 0
            
            # Handle special options
            if [[ "$CHOICE" == *"Disconnect"* ]]; then
                $NMCLI device disconnect "$(nmcli -t -f DEVICE,TYPE device | awk -F: '$2=="wifi" {print $1; exit}')"
                notify-send "Wi-Fi" "Disconnected"
                exit 0
            fi
            
            if [[ "$CHOICE" == *"Rescan"* ]]; then
                exec "$0"
            fi
            
            # Remove display formatting
            SELECTED=$(echo "$CHOICE" | sed -E 's/^[✓ ]+//; s/  \[[0-9]+%\]  .*//')
            
            # Check whether NetworkManager already knows the connection
            if $NMCLI connection show "$SELECTED" >/dev/null 2>&1; then
                $NMCLI connection up "$SELECTED"
            
                if [ $? -eq 0 ]; then
                    notify-send "Wi-Fi" "Connected to $SELECTED"
                else
                    notify-send "Wi-Fi" "Failed to connect to $SELECTED"
                fi
            
                exit 0
            fi
            
            # Determine security type
            SECURITY=$(echo "$NETWORKS" | awk -F'|' -v ssid="$SELECTED" '$1==ssid {print $3; exit}')
            
            if [ "$SECURITY" = "--" ] || [ -z "$SECURITY" ]; then
                # Open network
                $NMCLI device wifi connect "$SELECTED"
            
                if [ $? -eq 0 ]; then
                    notify-send "Wi-Fi" "Connected to $SELECTED"
                else
                    notify-send "Wi-Fi" "Failed to connect to $SELECTED"
                fi
            else
                # Password-protected network
                PASSWORD=$(rofi -dmenu -password -p "Password")
            
                [ -z "$PASSWORD" ] && exit 0
            
                $NMCLI device wifi connect "$SELECTED" password "$PASSWORD"
            
                if [ $? -eq 0 ]; then
                    notify-send "Wi-Fi" "Connected to $SELECTED"
                else
                    notify-send "Wi-Fi" "Failed to connect to $SELECTED"
                fi
            fi
            
        • waybar/
          • config.jsonc
            // -*- mode: jsonc -*-
            {
                // "layer": "top", // Waybar at top layer
                // "position": "bottom", // Waybar position (top|bottom|left|right)
                "height": 18, // Waybar height (to be removed for auto height)
                // "width": 1280, // Waybar width
                "spacing": 2, // Gaps between modules (4px)
                // Choose the order of the modules
                // gaps
                // "margin-top": 4,
                // "margin-bottom": 4,
                // "margin-left": 4,
                // "margin-right": 4,
                "modules-left": [
                  "sway/workspaces",
                  "sway/mode",
                  "sway/scratchpad",
                  "custom/media"
                ],
                "modules-center": [
                  "clock"
                ],
                "modules-right": [
                  "mpd",
                  "idle_inhibitor",
                  "pulseaudio",
                    "network",
                    "power-profiles-daemon",
                    "cpu",
                    "memory",
                    "temperature",
                    // "backlight",
                    // "keyboard-state",
                    // "sway/language",
                    "battery",
                    "battery#bat2",
                    // "sway/window",
                    "tray"
                    // "custom/power"
                ],
                // Modules configuration
                "sway/workspaces": {
                  "disable-scroll": false,
                  "all-outputs": false,
                  "warp-on-scroll": false,
                  // "format": "{name}: {icon}",
                  // "format-icons": {
                  //   "1": "",
                  //   "2": "",
                  //   "3": "",
                  //   "4": "",
                  //   "5": "",
                  //   "urgent": "",
                  //   "focused": "",
                  //   "default": ""
                  // }
                },
                "keyboard-state": {
                  "numlock": true,
                  "capslock": true,
                  "format": "{name} {icon}",
                  "format-icons": {
                    "locked": "",
                    "unlocked": ""
                  }
                },
                "sway/mode": {
                  "format": "<span style=\"italic\">{}</span>"
                },
                "sway/scratchpad": {
                  "format": "{icon} {count}",
                  "show-empty": false,
                  "format-icons": ["", ""],
                  "tooltip": true,
                  "tooltip-format": "{app}: {title}"
                },
                "mpd": {
                  "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
                  "format-disconnected": "Disconnected ",
                  "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
                  "unknown-tag": "N/A",
                  "interval": 5,
                  "consume-icons": {
                    "on": " "
                  },
                  "random-icons": {
                    "off": "<span color=\"#f53c3c\"></span> ",
                    "on": " "
                  },
                  "repeat-icons": {
                    "on": " "
                  },
                  "single-icons": {
                    "on": "1 "
                  },
                  "state-icons": {
                    "paused": "",
                    "playing": ""
                  },
                  "tooltip-format": "MPD (connected)",
                  "tooltip-format-disconnected": "MPD (disconnected)"
                },
                "idle_inhibitor": {
                  "format": "{icon}",
                  "format-icons": {
                    "activated": "",
                    "deactivated": ""
                  }
                },
                "tray": {
                    // "icon-size": 21,
                    "spacing": 10,
                    // "icons": {
                    //   "blueman": "bluetooth",
                    //   "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
                    // }
                },
                "clock": {
                    // "timezone": "America/New_York",
                    // "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
                    // "format-alt": "{:%Y-%m-%d}"
                    "format": "{:%A, %B %d, %Y  %H:%M}",
                    "interval": 5
                },
                "cpu": {
                  "format": "{usage}% ",
                  "tooltip": false
                },
                "memory": {
                  "format": "{}% "
                },
                "temperature": {
                    // "thermal-zone": 2,
                    "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
                    "critical-threshold": 80,
                    // "format-critical": "{temperatureC}°C {icon}",
                    "format": "{temperatureC}°C {icon}",
                    "format-icons": ["", "", ""]
                },
                // "backlight": {
                //     // "device": "acpi_video1",
                //     "format": "{percent}% {icon}",
                //     "format-icons": ["", "", "", "", "", "", "", "", ""]
                // },
                // "battery": {
                //     "states": {
                //         // "good": 95,
                //         "warning": 30,
                //         "critical": 15
                //     },
                //     "format": "{capacity}% {icon}",
                //     "format-full": "{capacity}% {icon}",
                //     "format-charging": "{capacity}% ",
                //     "format-plugged": "{capacity}% ",
                //     "format-alt": "{time} {icon}",
                //     // "format-good": "", // An empty format will hide the module
                //     // "format-full": "",
                //     "format-icons": ["", "", "", "", ""]
                // },
                // "battery#bat2": {
                //     "bat": "BAT2"
                // },
                // "power-profiles-daemon": {
                //   "format": "{icon}",
                //   "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
                //   "tooltip": true,
                //   "format-icons": {
                //     "default": "",
                //     "performance": "",
                //     "balanced": "",
                //     "power-saver": ""
                //   }
                // },
                "network": {
                    // "interface": "wlp2*", // (Optional) To force the use of this interface
                    "format-wifi": "{essid} ({signalStrength}%) ",
                    "format-ethernet": "{ipaddr}/{cidr} 󰈀",
                    "tooltip-format": "{ifname} via {gwaddr} ",
                    "format-linked": "{ifname} (No IP) ",
                    "format-disconnected": "Disconnected ⚠",
                    "format-alt": "{ifname}: {ipaddr}/{cidr}"
                },
                "pulseaudio": {
                    // "scroll-step": 1, // %, can be a float
                    "format": "{volume}% {icon} {format_source}",
                    "format-bluetooth": "{volume}% {icon} {format_source}",
                    "format-bluetooth-muted": " {icon} {format_source}",
                    "format-muted": " {format_source}",
                    "format-source": "{volume}% ",
                    "format-source-muted": "",
                    "format-icons": {
                      "headphone": " ",
                      "hands-free": " ",
                      "headset": " ",
                      "phone": " ",
                      "portable": " ",
                      "car": " ",
                      "default": [" ", " ", " "]
                    },
                    "on-click": "pavucontrol"
                },
                "custom/media": {
                  "format": "{icon} {text}",
                  "return-type": "json",
                  "max-length": 40,
                  "format-icons": {
                    "spotify": "",
                    "default": "🎜"
                  },
                  "escape": true,
                  "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
                       // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
                },
                "custom/power": {
                  "format" : "⏻ ",
                  "tooltip": false,
                  "menu": "on-click",
                  "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
                  "menu-actions": {
                    "shutdown": "shutdown",
                    "reboot": "reboot",
                    "suspend": "systemctl suspend",
                    "hibernate": "systemctl hibernate"
                  }
                }
            }
            
          • style.css
            * {
              min-height: 0;
              font-size: 12px;
              font-weight: bold;
            }
            
            window#waybar {
              background: rgba(25, 28, 37, 0.94);
              color: #eee8d5;
              border: none;
              box-shadow: none;
              animation: none;
            }
            
            window#waybar.hidden {
              opacity: 0.2;
            }
            
            /* Window states */
            window#waybar.termite,
            window#waybar.chromium {
              background-color: transparent;
              border: none;
            }
            
            /* Buttons */
            button {
              box-shadow: none;
              border: none;
              border-radius: 0;
            }
            
            button:hover {
              background: inherit;
              box-shadow: none;
            }
            
            
            /* =========================
               Workspaces
               ========================= */
            
            #workspaces {
              margin: 0;
              padding: 0;
            }
            
            #workspaces button {
              min-width: 20px;
              min-height: 20px;
              padding: 0;
              margin: 0;
              border: none;
              border-bottom: 2px solid transparent;
              border-radius: 0;
              box-shadow: none;
              background-color: transparent;
              color: #eee8d5;
            }
            
            #workspaces button:hover {
              background-color: #073642;
              box-shadow: none;
            }
            
            #workspaces button.focused {
              color: #eee8d5;
              font-weight: bold;
              border-bottom-color: #2aa198;
            }
            
            #workspaces button.urgent {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            
            /* =========================
               General module spacing
               ========================= */
            
            #clock,
            #battery,
            #cpu,
            #memory,
            #disk,
            #temperature,
            #backlight,
            #network,
            #pulseaudio,
            #wireplumber,
            #custom-media,
            #tray,
            #mode,
            #idle_inhibitor,
            #scratchpad,
            #power-profiles-daemon,
            #mpd,
            #language,
            #keyboard-state,
            #privacy {
              margin: 0;
              padding: 0 6px;
              background-color: transparent;
              color: #eee8d5;
            }
            
            
            /* =========================
               Window
               ========================= */
            
            #window {
              margin: 0;
            }
            
            
            /* =========================
               Mode
               ========================= */
            
            #mode {
              box-shadow: none;
            }
            
            
            /* =========================
               Clock
               ========================= */
            
            #clock {
              color: #eee8d5;
            }
            
            
            /* =========================
               Battery
               ========================= */
            
            #battery {
              color: #eee8d5;
            }
            
            #battery.charging,
            #battery.plugged {
              color: #859900;
            }
            
            @keyframes blink {
              to {
                background-color: #dc322f;
                color: #eee8d5;
              }
            }
            
            #battery.critical:not(.charging) {
              background-color: #dc322f;
              color: #eee8d5;
              animation-name: blink;
              animation-duration: 0.5s;
              animation-timing-function: steps(12);
              animation-iteration-count: infinite;
              animation-direction: alternate;
            }
            
            
            /* =========================
               Power profiles
               ========================= */
            
            #power-profiles-daemon.performance {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            #power-profiles-daemon.balanced {
              background-color: transparent;
              color: #eee8d5;
            }
            
            #power-profiles-daemon.power-saver {
              background-color: transparent;
              color: #859900;
            }
            
            
            /* =========================
               CPU
               ========================= */
            
            #cpu {
              color: #eee8d5;
            }
            
            
            /* =========================
               Memory
               ========================= */
            
            #memory {
              color: #eee8d5;
            }
            
            
            /* =========================
               Disk
               ========================= */
            
            #disk {
              color: #eee8d5;
            }
            
            
            /* =========================
               Backlight
               ========================= */
            
            #backlight {
              color: #eee8d5;
            }
            
            
            /* =========================
               Network
               ========================= */
            
            #network {
              color: #eee8d5;
            }
            
            #network.disconnected {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            
            /* =========================
               Pulseaudio
               ========================= */
            
            #pulseaudio {
              color: #eee8d5;
            }
            
            #pulseaudio.muted {
              color: #cb4b16;
            }
            
            
            /* =========================
               Wireplumber
               ========================= */
            
            #wireplumber {
              color: #eee8d5;
            }
            
            #wireplumber.muted {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            
            /* =========================
               Custom media
               ========================= */
            
            #custom-media {
              color: #eee8d5;
              min-width: 100px;
            }
            
            #custom-media.custom-spotify,
            #custom-media.custom-vlc {
              background-color: transparent;
            }
            
            
            /* =========================
               Temperature
               ========================= */
            
            #temperature {
              color: #eee8d5;
            }
            
            #temperature.critical {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            
            /* =========================
               Tray
               ========================= */
            
            #tray {
              color: #eee8d5;
            }
            
            #tray > .passive {
              -gtk-icon-effect: dim;
            }
            
            #tray > .needs-attention {
              -gtk-icon-effect: highlight;
              background-color: #dc322f;
            }
            
            
            /* =========================
               Idle inhibitor
               ========================= */
            
            #idle_inhibitor {
              color: #eee8d5;
            }
            
            #idle_inhibitor.activated {
              background-color: #073642;
              color: #2aa198;
            }
            
            
            /* =========================
               MPD
               ========================= */
            
            #mpd {
              color: #eee8d5;
            }
            
            #mpd.disconnected {
              background-color: #dc322f;
              color: #eee8d5;
            }
            
            #mpd.stopped {
              color: #eee8d5;
            }
            
            #mpd.paused {
              color: #b58900;
            }
            
            
            /* =========================
               Language
               ========================= */
            
            #language {
              background: transparent;
              color: #eee8d5;
              padding: 0 6px;
              margin: 0;
              min-width: 16px;
            }
            
            
            /* =========================
               Keyboard state
               ========================= */
            
            #keyboard-state {
              background: transparent;
              color: #eee8d5;
              padding: 0;
              margin: 0;
              min-width: 16px;
            }
            
            #keyboard-state > label {
              padding: 0 5px;
            }
            
            #keyboard-state > label.locked {
              background: rgba(0, 0, 0, 0.2);
            }
            
            
            /* =========================
               Scratchpad
               ========================= */
            
            #scratchpad {
              background: transparent;
            }
            
            #scratchpad.empty {
              background: transparent;
            }
            
            
            /* =========================
               Privacy
               ========================= */
            
            #privacy {
              padding: 0;
              background: transparent;
            }
            
            #privacy-item {
              padding: 0 5px;
              color: #eee8d5;
              background: transparent;
            }
            
            #privacy-item.screenshare {
              color: #eee8d5;
              background-color: #cb4b16;
            }
            
            #privacy-item.audio-in {
              color: #191c25;
              background-color: #859900;
            }
            
            #privacy-item.audio-out {
              background-color: #268bd2;
              color: #eee8d5;
            }