diff --git a/flake.lock b/flake.lock index 05838f9..d5c36b4 100644 --- a/flake.lock +++ b/flake.lock @@ -1,39 +1,5 @@ { "nodes": { - "astronvim": { - "flake": false, - "locked": { - "lastModified": 1708524813, - "narHash": "sha256-fUfh00iYhLJ89wdvtOLM5vAQkZGXanNboqkUWW6Y3Y4=", - "owner": "AstroNvim", - "repo": "AstroNvim", - "rev": "e7483c864e67fed4d1737c3ba76fe9c50b50ad12", - "type": "github" - }, - "original": { - "owner": "AstroNvim", - "repo": "AstroNvim", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -41,11 +7,11 @@ ] }, "locked": { - "lastModified": 1708806879, - "narHash": "sha256-MSbxtF3RThI8ANs/G4o1zIqF5/XlShHvwjl9Ws0QAbI=", + "lastModified": 1713818326, + "narHash": "sha256-aw3xbVPJauLk/bbrlakIYxKpeuMWzA2feGrkIpIuXd8=", "owner": "nix-community", "repo": "home-manager", - "rev": "4ee704cb13a5a7645436f400b9acc89a67b9c08a", + "rev": "67de98ae6eed5ad6f91b1142356d71a87ba97f21", "type": "github" }, "original": { @@ -54,10 +20,41 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1713612213, + "narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, "hyprland": { "inputs": { + "hyprcursor": "hyprcursor", "hyprland-protocols": "hyprland-protocols", "hyprlang": "hyprlang", + "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": [ "nixpkgs" ], @@ -66,11 +63,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1708817736, - "narHash": "sha256-GZEoru+4uNIGEZ8j1TPaxZwM+ApIngHU/iX3sIGgUO4=", + "lastModified": 1713819507, + "narHash": "sha256-mG0kD8HmkCsHRkTBmqGb/QvM1vAvkAmB5p2H5XQ0zLo=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "f534ac3fc462d8af923d2a1ab8ef58f62639a1ea", + "rev": "da839f20f1b1a57ec78d6b041f8d1369150d253e", "type": "github" }, "original": { @@ -116,11 +113,11 @@ ] }, "locked": { - "lastModified": 1708681732, - "narHash": "sha256-ULZZLZ9C33G13IaXLuAc4oTzHUvnATI8Fj2u6gzMfT0=", + "lastModified": 1713121246, + "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f4466367ef0a92a6425d482050dc2b8840c0e644", + "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", "type": "github" }, "original": { @@ -129,13 +126,38 @@ "type": "github" } }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1713730424, + "narHash": "sha256-MqYjTvQCxwuDIuAaqIEuyqserm5PYr0auiHHPuYFN/k=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "7c9c8adfe7e424faa0c5ce6e8be90157fda53c06", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1708655239, - "narHash": "sha256-ZrP/yACUvDB+zbqYJsln4iwotbH6CTZiTkANJ0AgDv4=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "nixos", "repo": "nixpkgs", - "rev": "cbc4211f0afffe6dfd2478a62615dd5175a13f9a", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { @@ -147,36 +169,9 @@ }, "root": { "inputs": { - "astronvim": "astronvim", "home-manager": "home-manager", "hyprland": "hyprland", - "nixpkgs": "nixpkgs", - "yazi": "yazi" - } - }, - "rust-overlay": { - "inputs": { - "flake-utils": [ - "yazi", - "flake-utils" - ], - "nixpkgs": [ - "yazi", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1701224160, - "narHash": "sha256-qnMmxNMKmd6Soel0cfauyMJ+LzuZbvmiDQPSIuTbQ+M=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4a080e26d55eaedb95ab1bf8eeaeb84149c10f12", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "nixpkgs": "nixpkgs" } }, "systems": { @@ -194,38 +189,21 @@ "type": "github" } }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "wlroots": { "flake": false, "locked": { - "host": "gitlab.freedesktop.org", - "lastModified": 1708558866, - "narHash": "sha256-Mz6hCtommq7RQfcPnxLINigO4RYSNt23HeJHC6mVmWI=", - "owner": "wlroots", - "repo": "wlroots", - "rev": "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5", - "type": "gitlab" + "lastModified": 1713731601, + "narHash": "sha256-bdcKdtLkusvv85DNuJsajZLFeq7bXp+x5AGP1Sd4wD8=", + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea", + "type": "github" }, "original": { - "host": "gitlab.freedesktop.org", - "owner": "wlroots", - "repo": "wlroots", - "rev": "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5", - "type": "gitlab" + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea", + "type": "github" } }, "xdph": { @@ -248,11 +226,11 @@ ] }, "locked": { - "lastModified": 1708696469, - "narHash": "sha256-shh5wmpeYy3MmsBfkm4f76yPsBDGk6OLYRVG+ARy2F0=", + "lastModified": 1713724432, + "narHash": "sha256-dtU1y4oj/0Y42oauzm93ucFg1AoqETnQ21bmXTIUng0=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "1b713911c2f12b96c2574474686e4027ac4bf826", + "rev": "9ace6f969ce495185df34cc6254fb9d297765478", "type": "github" }, "original": { @@ -260,28 +238,6 @@ "repo": "xdg-desktop-portal-hyprland", "type": "github" } - }, - "yazi": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "nixpkgs" - ], - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1708803660, - "narHash": "sha256-B2y46ecQurFvK7c1Cjh1suZC0vVOOw9TB3DJfXlU0dA=", - "owner": "sxyazi", - "repo": "yazi", - "rev": "42cbedbe42936f61170d049f1b77541a5ab66e3d", - "type": "github" - }, - "original": { - "owner": "sxyazi", - "repo": "yazi", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index a55289d..e1008b1 100644 --- a/flake.nix +++ b/flake.nix @@ -13,31 +13,11 @@ url = "github:hyprwm/Hyprland"; inputs.nixpkgs.follows = "nixpkgs"; }; - - # CLI file manager. - yazi = { - url = "github:sxyazi/yazi"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Neovim distribution - astronvim = { - url = "github:AstroNvim/AstroNvim"; - flake = false; - }; }; - outputs = - { self - , home-manager - , hyprland - , nixpkgs - , ... - } @ inputs: - let - system = "x86_64-linux"; - in - { + outputs = { self, home-manager, hyprland, nixpkgs, ... }@inputs: + let system = "x86_64-linux"; + in { nixosConfigurations."nixos" = let specialArgs = inputs; @@ -45,9 +25,7 @@ ./nixos.nix hyprland.nixosModules.default - { - programs.hyprland.enable = true; - } + { programs.hyprland.enable = true; } home-manager.nixosModules.home-manager { @@ -61,6 +39,6 @@ in nixpkgs.lib.nixosSystem { inherit system specialArgs modules; }; - formatter = nixpkgs.legacyPackages.${system}.nixpkgs-fmt; + formatter."${system}" = nixpkgs.legacyPackages.${system}.nixpkgs-fmt; }; } diff --git a/hardware-configuration.nix b/hardware-configuration.nix index ecb837f..8b67355 100644 --- a/hardware-configuration.nix +++ b/hardware-configuration.nix @@ -36,5 +36,6 @@ # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.amd.updateMicrocode = + lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/home-manager.nix b/home-manager.nix index 56fc555..e14b407 100644 --- a/home-manager.nix +++ b/home-manager.nix @@ -44,6 +44,8 @@ home.sessionVariables = { EDITOR = "nvim"; NIXOS_OZONE_WL = "1"; + QT_QPA_PLATFORM = "wayland"; + XCURSOR_SIZE = 36; }; ## @@ -56,8 +58,6 @@ # Allow unfree packages nixpkgs.config.allowUnfree = true; - # Configure fish - # The home.packages option allows you to install Nix packages into your # environment. home.packages = with pkgs; [ @@ -72,12 +72,52 @@ # Utilities brightnessctl discord + element-desktop firefox pavucontrol pulseaudio qbittorrent tigervnc - vesktop + (vesktop.overrideAttrs (prev: { + src = pkgs.fetchFromGitHub { + owner = "wizardlink"; + repo = "Vesktop"; + rev = "93c9cc24f88c1dbc50c3ee0569ddbdbaec76d9b3"; + hash = "sha256-tJyiZ/gAh+mA/UoJq5rzjJxit8lZpkJC74lf1Z5eqFc="; + }; + + installPhase = + let + # this is mainly required for venmic + libPath = lib.makeLibraryPath (with pkgs; [ + libpulseaudio + libnotify + pipewire + stdenv.cc.cc.lib + libva + ]); + in + '' + runHook preInstall + + mkdir -p $out/opt/Vesktop/resources + cp dist/linux-*unpacked/resources/app.asar $out/opt/Vesktop/resources + + pushd build + ${pkgs.libicns}/bin/icns2png -x icon.icns + for file in icon_*x32.png; do + file_suffix=''${file//icon_} + install -Dm0644 $file $out/share/icons/hicolor/''${file_suffix//x32.png}/apps/vesktop.png + done + + makeWrapper ${pkgs.electron}/bin/electron $out/bin/vesktop \ + --prefix LD_LIBRARY_PATH : ${libPath} \ + --add-flags $out/opt/Vesktop/resources/app.asar \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" + + runHook postInstall + ''; + })) vlc yt-dlp zathura @@ -93,12 +133,11 @@ spotify # Gaming + airshipper dolphin-emu - mindustry-wayland - path-of-building protontricks - vkbasalt - winePackages.stableFull + r2modman + wineWowPackages.waylandFull winetricks xonotic @@ -115,7 +154,6 @@ ## Desktop environment cliphist - eww-wayland grim mako polkit-kde-agent @@ -131,19 +169,18 @@ # Create an FHS environment using the command `fhs`, enabling the execution of non-NixOS packages in NixOS! ( - let base = pkgs.appimageTools.defaultFhsEnvArgs; in - pkgs.buildFHSUserEnv (base // { + let base = pkgs.appimageTools.defaultFhsEnvArgs; + in pkgs.buildFHSUserEnv (base // { name = "fhs"; - targetPkgs = pkgs: ( - # pkgs.buildFHSUserEnv provides only a minimal FHS environment, - # lacking many basic packages needed by most software. - # Therefore, we need to add them manually. - # - # pkgs.appimageTools provides basic packages required by most software. - (base.targetPkgs pkgs) ++ (with pkgs; [ - nodejs - ]) - ); + targetPkgs = pkgs: + ( + # pkgs.buildFHSUserEnv provides only a minimal FHS environment, + # lacking many basic packages needed by most software. + # Therefore, we need to add them manually. + # + # pkgs.appimageTools provides basic packages required by most software. + (base.targetPkgs pkgs) ++ (with pkgs; [ nodejs ]) + ); profile = "export FHS=1"; runScript = "bash"; extraOutputsToInstall = [ "dev" ]; @@ -159,7 +196,8 @@ # plain files is through 'home.file'. home.file = { # Cattpuccin theme for fish shell. - ".config/fish/themes/Catppuccin-Frappe.theme".source = ./programs/fish/Catppuccin-Frappe.theme; + ".config/fish/themes/Catppuccin-Frappe.theme".source = + ./programs/fish/Catppuccin-Frappe.theme; # Configuration for gamemode, for running games with optimizations. ".config/gamemode.ini".source = ./programs/gamemode.ini; @@ -169,7 +207,12 @@ ## Kvantum's theme configuration. ".config/Kvantum/Catppuccin-Frappe-Lavender" = { - source = "${pkgs.catppuccin-kvantum.override { accent = "Lavender"; variant = "Frappe"; } }/share/Kvantum/Catppuccin-Frappe-Lavender"; + source = "${ + pkgs.catppuccin-kvantum.override { + accent = "Lavender"; + variant = "Frappe"; + } + }/share/Kvantum/Catppuccin-Frappe-Lavender"; }; ".config/Kvantum/kvantum.kvconfig".text = '' @@ -181,7 +224,8 @@ ## Themeing configuration for qt5 and qt6 ".config/qt5ct/colors".source = ./theming/qt5ct; - ".config/qt6ct/colors".source = ./theming/qt5ct; # We use the qt5ct because it's the SAME spec + ".config/qt6ct/colors".source = + ./theming/qt5ct; # We use the qt5ct because it's the SAME spec ## # Configure pipewire for microphone noise supression. @@ -231,12 +275,8 @@ # My utility scripts ".local/share/scripts".source = ./scripts; - - # Yazi's configuration - ".config/yazi".source = ./programs/yazi; }; - ## Theming home.pointerCursor = { package = pkgs.catppuccin-cursors.frappeLavender; diff --git a/kernel/zenergy.nix b/kernel/zenergy.nix new file mode 100644 index 0000000..43865ee --- /dev/null +++ b/kernel/zenergy.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, fetchFromGitHub, kernel, kmod }: + +let kernelDirectory = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"; +in stdenv.mkDerivation { + pname = "zenergy"; + version = "a3e124477ee8197015481156b90100d49fa3cd84"; + + src = fetchFromGitHub { + owner = "BoukeHaarsma23"; + repo = "zenergy"; + rev = "a3e124477ee8197015481156b90100d49fa3cd84"; + hash = "sha256-s1aoipSsLKO23kTd2uGxVUpqYSeitiz3UIoDIxg/Dj8="; + }; + + hardeningDisable = [ "format" "pic" ]; + + makeFlags = kernel.makeFlags ++ [ "KDIR=${kernelDirectory}" ]; + + preBuild = '' + substituteInPlace Makefile --replace-fail "PWD modules_install" "PWD INSTALL_MOD_PATH=$out modules_install" + ''; + + nativeBuildInputs = [ kmod ] ++ kernel.moduleBuildDependencies; + + installPhase = '' + make modules_install KDIR=${kernelDirectory} + ''; + + outputs = [ "out" ]; + + meta = with lib; { + description = + "Based on AMD_ENERGY driver, but with some jiffies added so non-root users can read it safely."; + homepage = "https://github.com/BoukeHaarsma23/zenergy"; + license = licenses.gpl2Only; + maintainers = with maintainers; [ wizardlink ]; + platforms = platforms.linux; + outputsToInstall = [ "out" ]; + }; +} diff --git a/nixos.nix b/nixos.nix index c8f38be..86e55ed 100644 --- a/nixos.nix +++ b/nixos.nix @@ -2,7 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, pkgs, custom-neovim, yazi, ... }: +{ config, pkgs, ... }: { ## @@ -41,10 +41,13 @@ ## # Kernel - boot.kernelPackages = pkgs.linuxPackages_xanmod_latest; + boot.kernelPackages = pkgs.linuxPackages_zen; # TODO: FIX IT BEING BEING OVERWRITTEN - boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; + boot.extraModulePackages = [ + config.boot.kernelPackages.v4l2loopback + (pkgs.callPackage ./kernel/zenergy.nix { kernel = pkgs.linux_zen; }) + ]; # Bootloader. boot.loader = { @@ -72,11 +75,15 @@ allowedUDPPorts = [ ]; - allowedTCPPortRanges = [ - { from = 1714; to = 1764; } # KDEConnect + allowedTCPPortRanges = [{ + from = 1714; + to = 1764; + } # KDEConnect ]; - allowedUDPPortRanges = [ - { from = 1714; to = 1764; } # KDEConnect + allowedUDPPortRanges = [{ + from = 1714; + to = 1764; + } # KDEConnect ]; }; # Or disable the firewall altogether. @@ -108,9 +115,18 @@ # Select internationalisation properties. i18n = { defaultLocale = "en_US.UTF-8"; + supportedLocales = [ + "C.UTF-8/UTF-8" + "en_GB.UTF-8/UTF-8" + "en_US.UTF-8/UTF-8" + "ja_JP.UTF-8/UTF-8" + "pt_BR.UTF-8/UTF-8" + ]; extraLocaleSettings = { + LANGUAGE = "en_US.UTF-8"; LC_ADDRESS = "en_US.UTF-8"; + LC_ALL = "en_US.UTF-8"; LC_IDENTIFICATION = "en_US.UTF-8"; LC_MEASUREMENT = "pt_BR.UTF-8"; LC_MONETARY = "en_US.UTF-8"; @@ -155,12 +171,11 @@ ## ## DESKTOP ## ## - # Enable the X11 windowing system. - services.xserver.enable = true; - # Enable GDM. - services.xserver.displayManager.sddm = { + # Enable SDDM. + services.displayManager.sddm = { enable = true; + wayland.enable = true; theme = "${import ./theming/sddm.nix { inherit pkgs; }}"; }; @@ -198,15 +213,14 @@ security.rtkit.enable = true; services.pipewire = { enable = true; + audio.enable = true; + alsa.enable = true; alsa.support32Bit = true; - pulse.enable = true; - # If you want to use JACK applications, uncomment this - #jack.enable = true; - # use the example session manager (no others are packaged yet so this is enabled by default, - # no need to redefine it in your config for now) - #media-session.enable = true; + pulse.enable = true; + + #jack.enable = true; }; ## @@ -268,7 +282,7 @@ zoxide # File managing - yazi.packages.${pkgs.system}.default + yazi ## Libraries libsForQt5.qt5.qtgraphicaleffects @@ -287,6 +301,11 @@ ## SERVICES # ## + services.udev.extraRules = '' + # Monsgeek M1 + KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="fffe", ATTRS{idProduct}=="0005", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl" + ''; + # Enable flatpak services.flatpak.enable = true; diff --git a/programs/fish/default.nix b/programs/fish/default.nix index 946bf8f..8ca63ad 100644 --- a/programs/fish/default.nix +++ b/programs/fish/default.nix @@ -28,13 +28,9 @@ zoxide init --cmd cd fish | source ''; - shellAbbrs = { - z = "zoxide"; - }; + shellAbbrs = { z = "zoxide"; }; - shellAliases = { - del = "trash_file"; - }; + shellAliases = { del = "trash_file"; }; functions = { fish_prompt.body = '' diff --git a/programs/git.nix b/programs/git.nix index c7d6e42..30f536b 100644 --- a/programs/git.nix +++ b/programs/git.nix @@ -47,13 +47,9 @@ gpgsign = true; }; - tag = { - gpgsign = true; - }; + tag = { gpgsign = true; }; - difftool = { - prompt = true; - }; + difftool = { prompt = true; }; mergetool = { # https://www.git-scm.com/docs/git-mergetool#Documentation/git-mergetool.txt---no-prompt @@ -79,13 +75,9 @@ signingkey = "A1D3A2B4E14BD7C0445BB749A5767B54367CFBDF"; }; - pull = { - ff = "only"; - }; + pull = { ff = "only"; }; - init = { - defaultBranch = "main"; - }; + init = { defaultBranch = "main"; }; credential = { helper = "/usr/libexec/git-core/git-credential-libsecret"; diff --git a/programs/hyprland/default.nix b/programs/hyprland/default.nix index 48d3d9f..62a969e 100644 --- a/programs/hyprland/default.nix +++ b/programs/hyprland/default.nix @@ -82,22 +82,21 @@ # See https://wiki.hyprland.org/Configuring/Keywords/ for more + # Inject home-manager session variables + exec-once = /etc/profiles/per-user/wizardlink/etc/profile.d/hm-session-vars.sh + # Execute your favorite apps at launch exec-once = ~/.local/share/scripts/hyprland/start_services.sh # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf - # Some default env vars. - env = XCURSOR_SIZE,36 - env = QT_QPA_PLATFORM,wayland - # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { - kb_layout = us,br - kb_variant = + kb_layout = us,br,jp + kb_variant = ,,kana86 kb_model = - kb_options = + kb_options = grp:alts_toggle kb_rules = follow_mouse = 1 @@ -119,8 +118,8 @@ gaps_in = 6 gaps_out = 18 border_size = 2 - col.active_border = $lavender $red 15deg - col.inactive_border = $yellow $sapphire 15deg + col.active_border = $base $surface0 $green 45deg + col.inactive_border = $base $surface0 $blue 45deg layout = dwindle } @@ -195,7 +194,6 @@ # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod CTRL, F, fakefullscreen - bind = $mainMod CTRL, K, exec, hyprctl switchxkblayout ducky-ducky-one2-mini-rgb next bind = $mainMod CTRL, L, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy bind = $mainMod CTRL, P, exec, ~/.local/share/scripts/hyprland/screenshot_area.sh bind = $mainMod CTRL, V, pin @@ -254,11 +252,15 @@ bindm = $mainMod, mouse:273, resizewindow # Window rules - windowrulev2 = float,class:(steam) # Make sure all Steam windows float windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$ windowrulev2 = noanim,class:^(xwaylandvideobridge)$ windowrulev2 = nofocus,class:^(xwaylandvideobridge)$ windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$ + + # Rules for windowkill + windowrule = noborder, ^(steam_app_2726450)$ + windowrule = pin, ^(steam_app_2726450)$ + windowrule = opacity 0.9, ^(steam_app_2726450)$ ''; }; } diff --git a/programs/mangohud.nix b/programs/mangohud.nix index 4aa1860..a98090b 100644 --- a/programs/mangohud.nix +++ b/programs/mangohud.nix @@ -11,35 +11,37 @@ gl_vsync = 0; # GPU Statistics + gpu_core_clock = true; + gpu_fan = true; + gpu_junction_temp = true; + gpu_load_change = true; + gpu_load_color = [ "39F900" "FDFD09" "B22222" ]; + gpu_load_value = [ 60 90 ]; + gpu_mem_clock = true; + gpu_mem_temp = true; + gpu_power = true; gpu_stats = true; gpu_temp = true; - gpu_core_clock = true; - gpu_mem_clock = true; - gpu_power = true; - gpu_load_change = true; - gpu_load_value = [ 60 90 ]; - gpu_load_color = [ "39F900" "FDFD09" "B22222" ]; + gpu_voltage = true; # CPU Statistics + cpu_load_change = true; + cpu_load_color = [ "39F900" "FDFD09" "B22222" ]; + cpu_load_value = [ 60 90 ]; + cpu_mhz = true; + cpu_power = true; cpu_stats = true; cpu_temp = true; - cpu_power = true; - cpu_mhz = true; - cpu_load_change = true; - cpu_load_value = [ 60 90 ]; - cpu_load_color = [ "39F900" "FDFD09" "B22222" ]; - # IO Statistics - io_stats = true; io_read = true; + io_stats = true; io_write = true; - # RAM Statistics - vram = true; ram = true; swap = true; + vram = true; # FPS Statistics fps = true; @@ -56,6 +58,21 @@ # Make so MangoHud starts hidden. no_display = true; + # Show whether the GPU is throttling. + throttling_status = true; + + # Show wine/proton version. + wine = true; + + # Show the vulkan driver in-use. + vulkan_driver = true; + + # Display the process' memory usage. + procmem = true; + + # Show the application's architecture. + arch = true; + # Where to output log files. output_folder = /home/wizardlink/.config/MangoHud; }; diff --git a/programs/neovim/default.nix b/programs/neovim/default.nix index 97e4c53..914766a 100644 --- a/programs/neovim/default.nix +++ b/programs/neovim/default.nix @@ -1,4 +1,4 @@ -{ pkgs, astronvim, lib, ... }: +{ pkgs, lib, ... }: { programs.neovim = { @@ -6,7 +6,7 @@ withNodeJs = true; withPython3 = true; - extraLuaConfig = builtins.readFile "${astronvim}/init.lua"; + extraLuaConfig = builtins.readFile ./init.lua; extraPackages = with pkgs; [ # CMAKE @@ -46,59 +46,18 @@ # Vue nodePackages.volar + # Svelte + nodePackages.svelte-language-server + # YAML yaml-language-server ]; }; xdg.configFile = lib.mkMerge [ - { "nvim/lua/astronvim".source = "${astronvim}/lua/astronvim"; } - { "nvim/lua/plugins".source = "${astronvim}/lua/plugins"; } - { "nvim/lua/resession/extensions".source = "${astronvim}/lua/resession/extensions"; } - { "nvim/lua/lazy_snapshot.lua".source = "${astronvim}/lua/lazy_snapshot.lua"; } - { "nvim/lua/user".source = ./user; } - { - "nvim/parser".source = - let - parsers = pkgs.symlinkJoin { - name = "treesitter-parsers"; - paths = (pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins: with plugins; [ - bash - c - cmake - cpp - css - cuda - dockerfile - gdscript - glsl - godot_resource - html - javascript - jsdoc - json - jsonc - lua - lua - markdown - markdown_inline - nim - nim_format_string - nix - objc - proto - python - query - tsx - typescript - vim - vimdoc - vue - yaml - ])).dependencies; - }; - in - "${parsers}/parser"; - } + { "nvim/lua/community.lua".source = ./lua/community.lua; } + { "nvim/lua/lazy_setup.lua".source = ./lua/lazy_setup.lua; } + { "nvim/lua/plugins".source = ./lua/plugins; } + { "nvim/lua/polish.lua".source = ./lua/polish.lua; } ]; } diff --git a/programs/neovim/init.lua b/programs/neovim/init.lua new file mode 100644 index 0000000..2ce1cdd --- /dev/null +++ b/programs/neovim/init.lua @@ -0,0 +1,19 @@ +-- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution +-- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk. +local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim" +if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then + -- stylua: ignore + vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath }) +end +vim.opt.rtp:prepend(lazypath) + +-- validate that lazy is available +if not pcall(require, "lazy") then + -- stylua: ignore + vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {}) + vim.fn.getchar() + vim.cmd.quit() +end + +require "lazy_setup" +require "polish" diff --git a/programs/neovim/user/plugins/community.lua b/programs/neovim/lua/community.lua similarity index 84% rename from programs/neovim/user/plugins/community.lua rename to programs/neovim/lua/community.lua index 96b388b..949aa0d 100644 --- a/programs/neovim/user/plugins/community.lua +++ b/programs/neovim/lua/community.lua @@ -1,9 +1,10 @@ -return { - -- Add the community repository of plugin specifications - "AstroNvim/astrocommunity", - -- example of importing a plugin, comment out to use it or add your own - -- available plugins can be found at https://github.com/AstroNvim/astrocommunity +-- AstroCommunity: import any community modules here +-- We import this file in `lazy_setup.lua` before the `plugins/` folder. +-- This guarantees that the specs are processed before any user plugins. +---@type LazySpec +return { + "AstroNvim/astrocommunity", { import = "astrocommunity.colorscheme.catppuccin" }, { "catppuccin/nvim", diff --git a/programs/neovim/lua/lazy_setup.lua b/programs/neovim/lua/lazy_setup.lua new file mode 100644 index 0000000..3fb71f7 --- /dev/null +++ b/programs/neovim/lua/lazy_setup.lua @@ -0,0 +1,31 @@ +require("lazy").setup({ + { + "AstroNvim/AstroNvim", + --version = "^4", -- Remove version tracking to elect for nighly AstroNvim + import = "astronvim.plugins", + opts = { -- AstroNvim options must be set here with the `import` key + mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up + maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up + icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available) + pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override + }, + }, + { import = "community" }, + { import = "plugins" }, +} --[[@as LazySpec]], { + -- Configure any other `lazy.nvim` configuration options here + install = { colorscheme = { "astrodark", "habamax" } }, + ui = { backdrop = 100 }, + performance = { + rtp = { + -- disable some rtp plugins, add more to your liking + disabled_plugins = { + "gzip", + "netrwPlugin", + "tarPlugin", + "tohtml", + "zipPlugin", + }, + }, + }, +} --[[@as LazyConfig]]) diff --git a/programs/neovim/lua/plugins/astrocore.lua b/programs/neovim/lua/plugins/astrocore.lua new file mode 100644 index 0000000..ee4b658 --- /dev/null +++ b/programs/neovim/lua/plugins/astrocore.lua @@ -0,0 +1,79 @@ +-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more! +-- Configuration documentation can be found with `:h astrocore` +-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) +-- as this provides autocomplete and documentation while editing + +---@type LazySpec +return { + "AstroNvim/astrocore", + ---@type AstroCoreOpts + opts = { + -- Configure core features of AstroNvim + features = { + large_buf = { size = 1024 * 500, lines = 10000 }, -- set global limits for large files for disabling features like treesitter + autopairs = true, -- enable autopairs at start + cmp = true, -- enable completion at start + diagnostics_mode = 3, -- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on) + highlighturl = true, -- highlight URLs at start + notifications = true, -- enable notifications at start + }, + -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on + diagnostics = { + virtual_text = true, + underline = true, + }, + -- vim options can be configured here + options = { + opt = { -- vim.opt. + relativenumber = true, -- sets vim.opt.relativenumber + number = true, -- sets vim.opt.number + spell = false, -- sets vim.opt.spell + signcolumn = "auto", -- sets vim.opt.signcolumn to auto + wrap = false, -- sets vim.opt.wrap + grepprg = "rg --vimgrep", -- use ripgrep on grep actions + }, + g = { -- vim.g. + -- configure global vim variables (vim.g) + -- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup` + -- This can be found in the `lua/lazy_setup.lua` file + }, + }, + -- Mappings can be configured through AstroCore as well. + -- NOTE: keycodes follow the casing in the vimdocs. For example, `` must be capitalized + mappings = { + -- first key is the mode + n = { + -- second key is the lefthand side of the map + + -- navigate buffer tabs with `H` and `L` + -- L = { + -- function() require("astrocore.buffer").nav(vim.v.count > 0 and vim.v.count or 1) end, + -- desc = "Next buffer", + -- }, + -- H = { + -- function() require("astrocore.buffer").nav(-(vim.v.count > 0 and vim.v.count or 1)) end, + -- desc = "Previous buffer", + -- }, + + -- mappings seen under group name "Buffer" + ["bD"] = { + function() + require("astroui.status.heirline").buffer_picker( + function(bufnr) require("astrocore.buffer").close(bufnr) end + ) + end, + desc = "Pick to close", + }, + -- tables with just a `desc` key will be registered with which-key if it's installed + -- this is useful for naming menus + ["b"] = { desc = "Buffers" }, + -- quick save + -- [""] = { ":w!", desc = "Save File" }, -- change description but the same command + }, + t = { + -- setting a mapping to false will disable it + -- [""] = false, + }, + }, + }, +} diff --git a/programs/neovim/lua/plugins/astrolsp.lua b/programs/neovim/lua/plugins/astrolsp.lua new file mode 100644 index 0000000..c44e4fb --- /dev/null +++ b/programs/neovim/lua/plugins/astrolsp.lua @@ -0,0 +1,137 @@ +-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine +-- Configuration documentation can be found with `:h astrolsp` +-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) +-- as this provides autocomplete and documentation while editing + +---@type LazySpec +return { + "AstroNvim/astrolsp", + ---@type AstroLSPOpts + opts = { + -- Configuration table of features provided by AstroLSP + features = { + autoformat = true, -- enable or disable auto formatting on start + codelens = true, -- enable/disable codelens refresh on start + inlay_hints = false, -- enable/disable inlay hints on start + semantic_tokens = true, -- enable/disable semantic token highlighting + }, + -- customize lsp formatting options + formatting = { + -- control auto formatting on save + format_on_save = { + enabled = true, -- enable or disable format on save globally + allow_filetypes = { -- enable format on save for specified filetypes only + -- "go", + "javascript", + "jsx", + "lua", + "nix", + "rust", + "tsx", + "typescript", + }, + ignore_filetypes = { -- disable format on save for specified filetypes + -- "python", + }, + }, + disabled = { -- disable formatting capabilities for the listed language servers + -- disable lua_ls formatting capability if you want to use StyLua to format your lua code + -- "lua_ls", + }, + timeout_ms = 1000, -- default format timeout + -- filter = function(client) -- fully override the default formatting function + -- return true + -- end + }, + -- enable servers that you already have installed without mason + servers = { + -- "pyright" + "clangd", + "cmake", + "cssls", + "eslint", + "html", + "jsonls", + "lua_ls", + "marksman", + "nil_ls", + "rust_analyzer", + "svelte", + "taplo", + "tsserver", + "volar", + "yamlls", + }, + -- customize language server configuration options passed to `lspconfig` + ---@diagnostic disable: missing-fields + config = { + -- clangd = { capabilities = { offsetEncoding = "utf-8" } }, + }, + -- customize how language servers are attached + handlers = { + -- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server + -- function(server, opts) require("lspconfig")[server].setup(opts) end + + -- the key is the server that is being setup with `lspconfig` + -- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server + -- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed + }, + -- Configure buffer local auto commands to add when attaching a language server + autocmds = { + -- first key is the `augroup` to add the auto commands to (:h augroup) + lsp_document_highlight = { + -- Optional condition to create/delete auto command group + -- can either be a string of a client capability or a function of `fun(client, bufnr): boolean` + -- condition will be resolved for each client on each execution and if it ever fails for all clients, + -- the auto commands will be deleted for that buffer + cond = "textDocument/documentHighlight", + -- cond = function(client, bufnr) return client.name == "lua_ls" end, + -- list of auto commands to set + { + -- events to trigger + event = { "CursorHold", "CursorHoldI" }, + -- the rest of the autocmd options (:h nvim_create_autocmd) + desc = "Document Highlighting", + callback = function() + vim.lsp.buf.document_highlight() + end, + }, + { + event = { "CursorMoved", "CursorMovedI", "BufLeave" }, + desc = "Document Highlighting Clear", + callback = function() + vim.lsp.buf.clear_references() + end, + }, + }, + }, + -- mappings to be set up on attaching of a language server + mappings = { + n = { + gl = { + function() + vim.diagnostic.open_float() + end, + desc = "Hover diagnostics", + }, + -- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean + -- gD = { + -- function() vim.lsp.buf.declaration() end, + -- desc = "Declaration of current symbol", + -- cond = "textDocument/declaration", + -- }, + -- ["uY"] = { + -- function() require("astrolsp.toggles").buffer_semantic_tokens() end, + -- desc = "Toggle LSP semantic highlight (buffer)", + -- cond = function(client) return client.server_capabilities.semanticTokensProvider and vim.lsp.semantic_tokens end, + -- }, + }, + }, + -- A custom `on_attach` function to be run after the default `on_attach` function + -- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`) + on_attach = function(client, bufnr) + -- this would disable semanticTokensProvider for all clients + -- client.server_capabilities.semanticTokensProvider = nil + end, + }, +} diff --git a/programs/neovim/lua/plugins/astroui.lua b/programs/neovim/lua/plugins/astroui.lua new file mode 100644 index 0000000..b061470 --- /dev/null +++ b/programs/neovim/lua/plugins/astroui.lua @@ -0,0 +1,37 @@ +-- AstroUI provides the basis for configuring the AstroNvim User Interface +-- Configuration documentation can be found with `:h astroui` +-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) +-- as this provides autocomplete and documentation while editing + +---@type LazySpec +return { + "AstroNvim/astroui", + ---@type AstroUIOpts + opts = { + -- change colorscheme + colorscheme = "catppuccin", + -- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes + highlights = { + init = { -- this table overrides highlights in all themes + -- Normal = { bg = "#000000" }, + }, + astrotheme = { -- a table of overrides/changes when applying the astrotheme theme + -- Normal = { bg = "#000000" }, + }, + }, + -- Icons can be configured throughout the interface + icons = { + -- configure the loading of the lsp in the status line + LSPLoading1 = "⠋", + LSPLoading2 = "⠙", + LSPLoading3 = "⠹", + LSPLoading4 = "⠸", + LSPLoading5 = "⠼", + LSPLoading6 = "⠴", + LSPLoading7 = "⠦", + LSPLoading8 = "⠧", + LSPLoading9 = "⠇", + LSPLoading10 = "⠏", + }, + }, +} diff --git a/programs/neovim/user/plugins/mason.lua b/programs/neovim/lua/plugins/mason.lua similarity index 94% rename from programs/neovim/user/plugins/mason.lua rename to programs/neovim/lua/plugins/mason.lua index faa9a79..5a91b71 100644 --- a/programs/neovim/user/plugins/mason.lua +++ b/programs/neovim/lua/plugins/mason.lua @@ -1,4 +1,6 @@ --- customize mason plugins +-- Customize Mason plugins + +---@type LazySpec return { -- use mason-lspconfig to configure LSP installations { diff --git a/programs/neovim/user/plugins/null-ls.lua b/programs/neovim/lua/plugins/none-ls.lua similarity index 57% rename from programs/neovim/user/plugins/null-ls.lua rename to programs/neovim/lua/plugins/none-ls.lua index 0631e7d..2bf5082 100644 --- a/programs/neovim/user/plugins/null-ls.lua +++ b/programs/neovim/lua/plugins/none-ls.lua @@ -1,20 +1,23 @@ +-- Customize None-ls sources + +---@type LazySpec return { - "jose-elias-alvarez/null-ls.nvim", + "nvimtools/none-ls.nvim", opts = function(_, config) -- config variable is the default configuration table for the setup function call - local null_ls = require "null-ls" + local null_ls = require("null-ls") -- Check supported formatters and linters - -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting - -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics + -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting + -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics config.sources = { -- Set a formatter -- null_ls.builtins.formatting.stylua, -- null_ls.builtins.formatting.prettier, null_ls.builtins.formatting.nixpkgs_fmt, null_ls.builtins.formatting.prettier, - null_ls.builtins.formatting.rustfmt, null_ls.builtins.formatting.stylua, } + return config -- return final config table end, } diff --git a/programs/neovim/lua/plugins/treesitter.lua b/programs/neovim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..a3af93a --- /dev/null +++ b/programs/neovim/lua/plugins/treesitter.lua @@ -0,0 +1,48 @@ +-- Customize Treesitter + +---@type LazySpec +return { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add more things to the ensure_installed table protecting against community packs modifying it + opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { + -- Programming + "c", + "cmake", + "cpp", + "css", + "gdscript", + "godot_resource", + "html", + "javascript", + "jsdoc", + "lua", + "nim", + "nim_format_string", + "objc", + "proto", + "python", + "svelte", + "tsx", + "typescript", + "vue", + -- Scripting + "bash", + "glsl", + -- Configuring + "dockerfile", + "json", + "jsonc", + "nix", + "yaml", + -- Misc + "cuda", + "markdown", + "markdown_inline", + "query", + -- VIM + "vim", + "vimdoc", + }) + end, +} diff --git a/programs/neovim/lua/plugins/user.lua b/programs/neovim/lua/plugins/user.lua new file mode 100644 index 0000000..e3df0f5 --- /dev/null +++ b/programs/neovim/lua/plugins/user.lua @@ -0,0 +1,33 @@ +-- You can also add or configure plugins by creating files in this `plugins/` folder +-- Here are some examples: + +---@type LazySpec +return { + + -- "andweeb/presence.nvim", + -- { + -- "ray-x/lsp_signature.nvim", + -- event = "BufRead", + -- config = function() require("lsp_signature").setup() end, + -- }, + + -- customize alpha options + { + "goolord/alpha-nvim", + opts = function(_, opts) + -- customize the dashboard header + opts.section.header.val = { + "⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⣰⠿⡇⢸⡟⡇⠀⠘⡷⠶⢶⣆⠘⣶⠶⠶⠶⣦⣤⣤⣤⣤⣄⣀⣀⣀⡀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠤⠤⣤⡀⠀⠀", + "⠀⠀⠀⣰⣿⠀⠹⡌⣇⢹⣀⣠⣿⣦⠀⠹⣄⠸⣆⠀⣄⠹⡇⠀⠈⠃⠁⢹⢻⠀⣿⠈⢻⡛⢳⣤⣶⣿⣿⣿⣿⡶⠶⣶⣶⣶⣶⣶⣶⣶⣶⣾⡁⠀⢠⠴⠙⢦⡀", + "⠀⠀⣴⣿⡙⠀⠀⢳⣾⣿⣿⣿⣿⣿⣷⣦⣼⣿⣿⣷⡘⣆⠁⠀⠀⠀⢠⣼⣿⣴⠇⠀⠀⠙⢿⣿⣿⠟⢹⠃⠀⠀⣀⠀⠉⠈⢷⠈⢻⣿⠁⡿⢿⣄⡘⣄⠀⠀⠁", + "⠀⢸⠻⣿⠉⠓⣶⣶⣿⣿⣿⡿⠿⠿⢿⠿⣿⡉⠻⠇⠙⢿⣷⣀⠀⠀⢼⡙⠿⠃⠀⠀⠀⠀⠈⠿⠋⠀⢸⠄⠀⠀⠛⠃⠀⠀⢸⠀⠀⣿⢀⠇⢸⡿⠛⠛⢷⡶⠂", + "⠀⣸⡄⠙⣆⠀⣿⡿⠹⣏⡤⢤⣸⣿⠼⠀⠘⠇⠆⠀⠀⠀⠉⠉⢳⠦⣼⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⡀⠀⠀⠀⠀⢀⡞⠀⣰⣿⣾⣀⣾⡅⠀⡞⠉⠙⢆", + "⢀⡿⢿⢦⠹⣿⣿⡇⠀⢉⠀⠈⠁⠀⠀⠀⢠⢃⡗⠀⠀⠀⠀⠀⢻⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠲⢤⣙⣲⣤⣤⣶⣫⠤⠖⠹⠋⠉⠉⠉⠻⣶⣽⣦⣀⡼", + "⠼⣧⣬⣿⡿⣭⠈⠿⣤⡬⠷⠴⠒⠒⠒⠲⠿⠛⠀⠂⠀⠂⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⠛⠉⠉⠉⠁⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠴⠶⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + } + return opts + end, + }, +} diff --git a/programs/neovim/lua/polish.lua b/programs/neovim/lua/polish.lua new file mode 100644 index 0000000..b19c743 --- /dev/null +++ b/programs/neovim/lua/polish.lua @@ -0,0 +1,39 @@ +-- This will run last in the setup process and is a good place to configure +-- things like custom filetypes. This just pure lua so anything that doesn't +-- fit in the normal config locations above can go here + +-- Set up custom filetypes +vim.filetype.add { + extension = { + foo = "fooscript", + }, + filename = { + ["Foofile"] = "fooscript", + }, + pattern = { + ["~/%.config/foo/.*"] = "fooscript", + }, +} + + +local dap = require "dap" + +dap.adapters.codelldb = { + port = "${port}", + type = "server", + executable = { + command = "codelldb", + args = { "--port", "${port}" }, + }, +} + +dap.configurations.rust = { + { + name = "Launch file", + type = "codelldb", + request = "launch", + program = function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") end, + cwd = "${workspaceFolder}", + stopOnEntry = false, + }, +} diff --git a/programs/neovim/user/.luacheckrc b/programs/neovim/user/.luacheckrc deleted file mode 100644 index d1113eb..0000000 --- a/programs/neovim/user/.luacheckrc +++ /dev/null @@ -1,18 +0,0 @@ --- Global objects -globals = { - "astronvim", - "astronvim_installation", - "vim", - "bit", -} - --- Rerun tests only if their modification time changed -cache = true - --- Don't report unused self arguments of methods -self = false - -ignore = { - "631", -- max_line_length - "212/_.*", -- unused argument, for vars with "_" prefix -} diff --git a/programs/neovim/user/.neoconf.json b/programs/neovim/user/.neoconf.json deleted file mode 100644 index 2d7a81f..0000000 --- a/programs/neovim/user/.neoconf.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "neodev": { - "library": { - "enabled": true, - "plugins": true - } - }, - "neoconf": { - "plugins": { - "lua_ls": { - "enabled": true - } - } - }, - "lspconfig": { - "lua_ls": { - "Lua.format.enable": false - } - } -} diff --git a/programs/neovim/user/.stylua.toml b/programs/neovim/user/.stylua.toml deleted file mode 100644 index bfcffff..0000000 --- a/programs/neovim/user/.stylua.toml +++ /dev/null @@ -1,7 +0,0 @@ -column_width = 120 -line_endings = "Unix" -indent_type = "Spaces" -indent_width = 2 -quote_style = "AutoPreferDouble" -call_parentheses = "None" -collapse_simple_statement = "Always" diff --git a/programs/neovim/user/README.md b/programs/neovim/user/README.md deleted file mode 100644 index e6c589a..0000000 --- a/programs/neovim/user/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# AstroNvim User Configuration Example - -A user configuration template for [AstroNvim](https://github.com/AstroNvim/AstroNvim) - -## 🛠️ Installation - -#### Make a backup of your current nvim and shared folder - -```shell -mv ~/.config/nvim ~/.config/nvim.bak -mv ~/.local/share/nvim ~/.local/share/nvim.bak -``` - -#### Clone AstroNvim - -```shell -git clone https://github.com/AstroNvim/AstroNvim ~/.config/nvim -``` - -#### Create a new user repository from this template - -Press the "Use this template" button above to create a new repository to store your user configuration. - -You can also just clone this repository directly if you do not want to track your user configuration in GitHub. - -#### Clone the repository - -```shell -git clone https://github.com// ~/.config/nvim/lua/user -``` - -#### Start Neovim - -```shell -nvim -``` diff --git a/programs/neovim/user/highlights/duskfox.lua b/programs/neovim/user/highlights/duskfox.lua deleted file mode 100644 index 31318ee..0000000 --- a/programs/neovim/user/highlights/duskfox.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { -- a table of overrides/changes to the duskfox theme - Normal = { bg = "#000000" }, -} diff --git a/programs/neovim/user/highlights/init.lua b/programs/neovim/user/highlights/init.lua deleted file mode 100644 index f7e055b..0000000 --- a/programs/neovim/user/highlights/init.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { -- this table overrides highlights in all themes - -- Normal = { bg = "#000000" }, -} diff --git a/programs/neovim/user/init.lua b/programs/neovim/user/init.lua deleted file mode 100644 index 1c3ec03..0000000 --- a/programs/neovim/user/init.lua +++ /dev/null @@ -1,125 +0,0 @@ -return { - -- Configure AstroNvim updates - updater = { - remote = "origin", -- remote to use - channel = "stable", -- "stable" or "nightly" - version = "latest", -- "latest", tag name, or regex search like "v1.*" to only do updates before v2 (STABLE ONLY) - branch = "nightly", -- branch name (NIGHTLY ONLY) - commit = nil, -- commit hash (NIGHTLY ONLY) - pin_plugins = nil, -- nil, true, false (nil will pin plugins on stable only) - skip_prompts = false, -- skip prompts about breaking changes - show_changelog = true, -- show the changelog after performing an update - auto_quit = false, -- automatically quit the current session after a successful update - remotes = { -- easily add new remotes to track - -- ["remote_name"] = "https://remote_url.come/repo.git", -- full remote url - -- ["remote2"] = "github_user/repo", -- GitHub user/repo shortcut, - -- ["remote3"] = "github_user", -- GitHub user assume AstroNvim fork - }, - }, - - -- Set colorscheme to use - colorscheme = "catppuccin", - - -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on - diagnostics = { - virtual_text = true, - underline = true, - }, - - lsp = { - -- customize lsp formatting options - formatting = { - -- control auto formatting on save - format_on_save = { - enabled = true, -- enable or disable format on save globally - allow_filetypes = { -- enable format on save for specified filetypes only - -- "go", - "javascript", - "jsx", - "lua", - "nix", - "rust", - "tsx", - "typescript", - }, - ignore_filetypes = { -- disable format on save for specified filetypes - -- "python", - }, - }, - disabled = { -- disable formatting capabilities for the listed language servers - -- disable lua_ls formatting capability if you want to use StyLua to format your lua code - -- "lua_ls", - }, - timeout_ms = 1000, -- default format timeout - -- filter = function(client) -- fully override the default formatting function - -- return true - -- end - }, - -- enable servers that you already have installed without mason - servers = { - "clangd", - "cmake", - "cssls", - "html", - "jsonls", - "lua_ls", - "marksman", - "nil_ls", - "rust_analyzer", - "taplo", - "tsserver", - "volar", - "yamlls", - }, - }, - - -- Configure require("lazy").setup() options - lazy = { - defaults = { lazy = true }, - performance = { - rtp = { - -- customize default disabled vim plugins - disabled_plugins = { "tohtml", "gzip", "matchit", "zipPlugin", "netrwPlugin", "tarPlugin" }, - }, - }, - }, - - -- This function is run last and is a good place to configuring - -- augroups/autocommands and custom filetypes also this just pure lua so - -- anything that doesn't fit in the normal config locations above can go here - polish = function() - -- Set up custom filetypes - -- vim.filetype.add { - -- extension = { - -- foo = "fooscript", - -- }, - -- filename = { - -- ["Foofile"] = "fooscript", - -- }, - -- pattern = { - -- ["~/%.config/foo/.*"] = "fooscript", - -- }, - -- } - local dap = require "dap" - - dap.adapters.codelldb = { - port = "${port}", - type = "server", - executable = { - command = "codelldb", - args = { "--port", "${port}" }, - }, - } - - dap.configurations.rust = { - { - name = "Launch file", - type = "codelldb", - request = "launch", - program = function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") end, - cwd = "${workspaceFolder}", - stopOnEntry = false, - }, - } - end, -} diff --git a/programs/neovim/user/mappings.lua b/programs/neovim/user/mappings.lua deleted file mode 100644 index 8ac5c8f..0000000 --- a/programs/neovim/user/mappings.lua +++ /dev/null @@ -1,40 +0,0 @@ --- Mapping data with "desc" stored directly by vim.keymap.set(). --- --- Please use this mappings table to set keyboard mapping since this is the --- lower level configuration and more robust one. (which-key will --- automatically pick-up stored data by this setting.) -return { - -- first key is the mode - n = { - -- second key is the lefthand side of the map - - -- navigate buffer tabs with `H` and `L` - -- L = { - -- function() require("astronvim.utils.buffer").nav(vim.v.count > 0 and vim.v.count or 1) end, - -- desc = "Next buffer", - -- }, - -- H = { - -- function() require("astronvim.utils.buffer").nav(-(vim.v.count > 0 and vim.v.count or 1)) end, - -- desc = "Previous buffer", - -- }, - - -- mappings seen under group name "Buffer" - ["bD"] = { - function() - require("astronvim.utils.status").heirline.buffer_picker( - function(bufnr) require("astronvim.utils.buffer").close(bufnr) end - ) - end, - desc = "Pick to close", - }, - -- tables with the `name` key will be registered with which-key if it's installed - -- this is useful for naming menus - ["b"] = { name = "Buffers" }, - -- quick save - -- [""] = { ":w!", desc = "Save File" }, -- change description but the same command - }, - t = { - -- setting a mapping to false will disable it - -- [""] = false, - }, -} diff --git a/programs/neovim/user/options.lua b/programs/neovim/user/options.lua deleted file mode 100644 index 37b0b40..0000000 --- a/programs/neovim/user/options.lua +++ /dev/null @@ -1,31 +0,0 @@ --- set vim options here (vim.. = value) -return { - opt = { - -- set to true or false etc. - relativenumber = true, -- sets vim.opt.relativenumber - number = true, -- sets vim.opt.number - spell = false, -- sets vim.opt.spell - signcolumn = "auto", -- sets vim.opt.signcolumn to auto - wrap = false, -- sets vim.opt.wrap - grepprg = "rg --vimgrep", -- use ripgrep on grep actions - }, - g = { - mapleader = " ", -- sets vim.g.mapleader - autoformat_enabled = true, -- enable or disable auto formatting at start (lsp.formatting.format_on_save must be enabled) - cmp_enabled = true, -- enable completion at start - autopairs_enabled = true, -- enable autopairs at start - diagnostics_mode = 3, -- set the visibility of diagnostics in the UI (0=off, 1=only show in status line, 2=virtual text off, 3=all on) - icons_enabled = true, -- disable icons in the UI (disable if no nerd font is available, requires :PackerSync after changing) - ui_notifications_enabled = true, -- disable notifications when toggling UI elements - resession_enabled = false, -- enable experimental resession.nvim session management (will be default in AstroNvim v4) - }, -} --- If you need more control, you can use the function()...end notation --- return function(local_vim) --- local_vim.opt.relativenumber = true --- local_vim.g.mapleader = " " --- local_vim.opt.whichwrap = vim.opt.whichwrap - { 'b', 's' } -- removing option from list --- local_vim.opt.shortmess = vim.opt.shortmess + { I = true } -- add to option list --- --- return local_vim --- end diff --git a/programs/neovim/user/plugins/core.lua b/programs/neovim/user/plugins/core.lua deleted file mode 100644 index b32ff09..0000000 --- a/programs/neovim/user/plugins/core.lua +++ /dev/null @@ -1,74 +0,0 @@ -return { - -- customize alpha options - { - "goolord/alpha-nvim", - opts = function(_, opts) - -- customize the dashboard header - opts.section.header.val = { - "⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⣰⠿⡇⢸⡟⡇⠀⠘⡷⠶⢶⣆⠘⣶⠶⠶⠶⣦⣤⣤⣤⣤⣄⣀⣀⣀⡀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠤⠤⣤⡀⠀⠀", - "⠀⠀⠀⣰⣿⠀⠹⡌⣇⢹⣀⣠⣿⣦⠀⠹⣄⠸⣆⠀⣄⠹⡇⠀⠈⠃⠁⢹⢻⠀⣿⠈⢻⡛⢳⣤⣶⣿⣿⣿⣿⡶⠶⣶⣶⣶⣶⣶⣶⣶⣶⣾⡁⠀⢠⠴⠙⢦⡀", - "⠀⠀⣴⣿⡙⠀⠀⢳⣾⣿⣿⣿⣿⣿⣷⣦⣼⣿⣿⣷⡘⣆⠁⠀⠀⠀⢠⣼⣿⣴⠇⠀⠀⠙⢿⣿⣿⠟⢹⠃⠀⠀⣀⠀⠉⠈⢷⠈⢻⣿⠁⡿⢿⣄⡘⣄⠀⠀⠁", - "⠀⢸⠻⣿⠉⠓⣶⣶⣿⣿⣿⡿⠿⠿⢿⠿⣿⡉⠻⠇⠙⢿⣷⣀⠀⠀⢼⡙⠿⠃⠀⠀⠀⠀⠈⠿⠋⠀⢸⠄⠀⠀⠛⠃⠀⠀⢸⠀⠀⣿⢀⠇⢸⡿⠛⠛⢷⡶⠂", - "⠀⣸⡄⠙⣆⠀⣿⡿⠹⣏⡤⢤⣸⣿⠼⠀⠘⠇⠆⠀⠀⠀⠉⠉⢳⠦⣼⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⡀⠀⠀⠀⠀⢀⡞⠀⣰⣿⣾⣀⣾⡅⠀⡞⠉⠙⢆", - "⢀⡿⢿⢦⠹⣿⣿⡇⠀⢉⠀⠈⠁⠀⠀⠀⢠⢃⡗⠀⠀⠀⠀⠀⢻⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠲⢤⣙⣲⣤⣤⣶⣫⠤⠖⠹⠋⠉⠉⠉⠻⣶⣽⣦⣀⡼", - "⠼⣧⣬⣿⡿⣭⠈⠿⣤⡬⠷⠴⠒⠒⠒⠲⠿⠛⠀⠂⠀⠂⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⠛⠉⠉⠉⠁⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠴⠶⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - } - end, - }, - -- You can disable default plugins as follows: - -- { "max397574/better-escape.nvim", enabled = false }, - -- - -- You can also easily customize additional setup of plugins that is outside of the plugin's setup call - -- { - -- "L3MON4D3/LuaSnip", - -- config = function(plugin, opts) - -- require "plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call - -- -- add more custom luasnip configuration such as filetype extend or custom snippets - -- local luasnip = require "luasnip" - -- luasnip.filetype_extend("javascript", { "javascriptreact" }) - -- end, - -- }, - -- { - -- "windwp/nvim-autopairs", - -- config = function(plugin, opts) - -- require "plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call - -- -- add more custom autopairs configuration such as custom rules - -- local npairs = require "nvim-autopairs" - -- local Rule = require "nvim-autopairs.rule" - -- local cond = require "nvim-autopairs.conds" - -- npairs.add_rules( - -- { - -- Rule("$", "$", { "tex", "latex" }) - -- -- don't add a pair if the next character is % - -- :with_pair(cond.not_after_regex "%%") - -- -- don't add a pair if the previous character is xxx - -- :with_pair( - -- cond.not_before_regex("xxx", 3) - -- ) - -- -- don't move right when repeat character - -- :with_move(cond.none()) - -- -- don't delete if the next character is xx - -- :with_del(cond.not_after_regex "xx") - -- -- disable adding a newline when you press - -- :with_cr(cond.none()), - -- }, - -- -- disable for .vim files, but it work for another filetypes - -- Rule("a", "a", "-vim") - -- ) - -- end, - -- }, - -- By adding to the which-key config and using our helper function you can add more which-key registered bindings - -- { - -- "folke/which-key.nvim", - -- config = function(plugin, opts) - -- require "plugins.configs.which-key"(plugin, opts) -- include the default astronvim config that calls the setup call - -- -- Add bindings which show up as group name - -- local wk = require "which-key" - -- wk.register({ - -- b = { name = "Buffer" }, - -- }, { mode = "n", prefix = "" }) - -- end, - -- }, -} diff --git a/programs/neovim/user/plugins/treesitter.lua b/programs/neovim/user/plugins/treesitter.lua deleted file mode 100644 index c717d37..0000000 --- a/programs/neovim/user/plugins/treesitter.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - -- add more things to the ensure_installed table protecting against community packs modifying it - opts.ensure_installed = nil - opts.automatic_installation = false - end, -} diff --git a/programs/neovim/user/plugins/user.lua b/programs/neovim/user/plugins/user.lua deleted file mode 100644 index 22e89de..0000000 --- a/programs/neovim/user/plugins/user.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - -- You can also add new plugins here as well: - -- Add plugins, the lazy syntax - -- "andweeb/presence.nvim", - -- { - -- "ray-x/lsp_signature.nvim", - -- event = "BufRead", - -- config = function() - -- require("lsp_signature").setup() - -- end, - -- }, - { "folke/flash.nvim", vscode = false }, -} diff --git a/programs/obs-studio.nix b/programs/obs-studio.nix index 4ffc33d..b232ce9 100644 --- a/programs/obs-studio.nix +++ b/programs/obs-studio.nix @@ -1,17 +1,16 @@ { pkgs, ... }: { - programs.obs-studio = - { - enable = true; - plugins = with pkgs.obs-studio-plugins; [ - input-overlay - # Currently broken due to onnxruntime failing to build. - # obs-backgroundremoval - obs-pipewire-audio-capture - obs-vaapi - obs-vkcapture - wlrobs - ]; - }; + programs.obs-studio = { + enable = true; + plugins = with pkgs.obs-studio-plugins; [ + input-overlay + # Currently broken due to onnxruntime failing to build. + # obs-backgroundremoval + obs-pipewire-audio-capture + obs-vaapi + obs-vkcapture + wlrobs + ]; + }; } diff --git a/programs/waybar.nix b/programs/waybar.nix index d8b7ecc..14cb554 100644 --- a/programs/waybar.nix +++ b/programs/waybar.nix @@ -1,45 +1,101 @@ -{ pkgs, ... }: -{ +{ ... }: { programs.waybar = { enable = true; - package = (pkgs.waybar.overrideAttrs (oldAttrs: { - mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; - }) - ); - settings = { mainBar = { layer = "top"; - position = "top"; - modules-left = [ - "hyprland/submap" - "hyprland/workspaces" - "custom/arrow10" - "hyprland/window" - ]; + margin = "10px 10px 0"; + height = 30; + + modules-left = [ "hyprland/workspaces" ]; + modules-center = [ "clock" ]; modules-right = [ - "custom/arrow9" - "pulseaudio" - "custom/arrow8" "network" - "custom/arrow7" "memory" - "custom/arrow6" "cpu" - "custom/arrow5" "temperature" - "custom/arrow4" "battery" - "custom/arrow3" "hyprland/language" - "custom/arrow2" "tray" - "clock#date" - "custom/arrow1" - "clock#time" ]; + "hyprland/workspaces" = { + format = "{icon}"; + + format-icons = { + active = ""; + default = ""; + empty = ""; + persistent = ""; + special = ""; + urgent = ""; + }; + }; + + clock = { + format = "{:%H:%M} "; + format-alt = "{:%A; %B %d, %Y (%R)} "; + tooltip-format = "{calendar}"; + calendar = { + mode = "month"; + mode-mon-col = 3; + weeks-pos = "right"; + on-scroll = 1; + on-click-right = "mode"; + format = { + months = "{}"; + days = "{}"; + weeks = "W{}"; + weekdays = "{}"; + today = "{}"; + }; + actions = { + on-click-backward = "tz_down"; + on-click-forward = "tz_up"; + on-click-right = "mode"; + on-scroll-down = "shift_down"; + on-scroll-up = "shift_up"; + }; + }; + }; + + network = { + interval = 5; + format = " {bandwidthUpBits} 󰇙 {bandwidthDownBits} "; + format-disconnected = " No connection"; + tooltip-format-wifi = " {essid} ({signalStrength}%)"; + }; + + memory = { + interval = 5; + format = " {percentage}%"; + states = { + warning = 70; + critical = 90; + }; + "tooltip-format" = " {used:0.1f}G/{total:0.1f}G"; + }; + + cpu = { + interval = 5; + tooltip = false; + format = " {usage}%"; + format-alt = " {load}"; + states = { + warning = 70; + critical = 90; + }; + }; + + temperature = { + critical-threshold = 90; + interval = 5; + format = "{icon} {temperatureC}°"; + format-icons = [ "" "" "" "" "" ]; + tooltip = false; + }; + # Module configuration battery = { interval = 10; @@ -54,169 +110,28 @@ format-charging-full = " {capacity}%"; format-full = "{icon} {capacity}%"; format-alt = "{icon} {power}W"; - format-icons = [ - "" - "" - "" - "" - "" - ]; + format-icons = [ "" "" "" "" "" ]; tooltip = false; }; - "clock#time" = { - interval = 10; - format = "{:%H:%M}"; - tooltip = false; - }; - "clock#date" = { - interval = 20; - format = "{:%e %b %Y}"; - tooltip = false; - #"tooltip-format" = "{:%e %B %Y}" - }; - - "cpu" = { - interval = 5; - tooltip = false; - format = " {usage}%"; - format-alt = " {load}"; - states = { - warning = 70; - critical = 90; - }; - }; - "hyprland/language" = { - format = " {}"; - min-length = 5; - #"on-click" = "swaymsg 'input * xkb_switch_layout next'"; - tooltip = false; - }; - - memory = { - interval = 5; - format = "🧠 {used:0.1f}G/{total:0.1f}G"; - states = { - "warning" = 70; - "critical" = 90; - }; - tooltip = false; - }; - - network = { - interval = 5; - format-wifi = " {essid} ({signalStrength}%)"; - format-ethernet = " {ifname}"; - format-disconnected = "No connection"; - format-alt = " {ipaddr}/{cidr}"; - tooltip = false; - }; - - "hyprland/submap" = { - format = "{}"; - tooltip = false; - }; - - "hyprland/window" = { - format = "{}"; - max-length = 30; - tooltip = false; - }; - - pulseaudio = { - format = "{icon} {volume}%"; - format-bluetooth = "{icon} {volume}%"; - format-muted = ""; - format-icons = { - headphone = ""; - hands-free = ""; - headset = ""; - phone = ""; - portable = ""; - car = ""; - default = [ - "" - "" - ]; - }; - scroll-step = 1; - on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle"; - tooltip = false; - }; - - temperature = { - critical-threshold = 90; - interval = 5; - format = "{icon} {temperatureC}°"; - format-icons = [ - "" - "" - "" - "" - "" - ]; + format = " {}"; + format-en = "EN/US"; + format-pt-br = "PT/BR"; + #"on-click" = "hyprctl switchxkblayout www.hfd.cn-monsgeek-keyboard-1 next"; tooltip = false; }; tray = { icon-size = 18; - #"spacing" = 10 - }; - - "custom/arrow1" = { - format = ""; - tooltip = false; - }; - - "custom/arrow2" = { - format = ""; - tooltip = false; - }; - - "custom/arrow3" = { - format = ""; - tooltip = false; - }; - - "custom/arrow4" = { - format = ""; - tooltip = false; - }; - - "custom/arrow5" = { - format = ""; - tooltip = false; - }; - - "custom/arrow6" = { - format = ""; - tooltip = false; - }; - - "custom/arrow7" = { - format = ""; - tooltip = false; - }; - - "custom/arrow8" = { - format = ""; - tooltip = false; - }; - - "custom/arrow9" = { - format = ""; - tooltip = false; - }; - - "custom/arrow10" = { - format = ""; - tooltip = false; + spacing = 10; }; }; }; style = '' + /* Using https://github.com/catppuccin/catppuccin for color reference. */ + /* Keyframes */ @keyframes blink-critical { to { @@ -225,260 +140,61 @@ } } - /* Styles */ - - /* Colors (gruvbox) */ - @define-color black #282828; - @define-color red #cc241d; - @define-color green #98971a; - @define-color yellow #d79921; - @define-color blue #458588; - @define-color purple #b16286; - @define-color aqua #689d6a; - @define-color gray #a89984; - @define-color brgray #928374; - @define-color brred #fb4934; - @define-color brgreen #b8bb26; - @define-color bryellow #fabd2f; - @define-color brblue #83a598; - @define-color brpurple #d3869b; - @define-color braqua #8ec07c; - @define-color white #ebdbb2; - @define-color bg2 #504945; - - - @define-color warning @bryellow; - @define-color critical @red; - @define-color mode @black; - @define-color unfocused @bg2; - @define-color focused @braqua; - @define-color inactive @purple; - @define-color sound @brpurple; - @define-color network @purple; - @define-color memory @braqua; - @define-color cpu @green; - @define-color temp @brgreen; - @define-color layout @bryellow; - @define-color battery @aqua; - @define-color date @black; - @define-color time @white; - - /* Reset all styles */ * { - border: none; - border-radius: 0; - min-height: 0; - margin: 0; - padding: 0; - box-shadow: none; - text-shadow: none; - icon-shadow: none; + all: unset; + color: #c6d0f5; + font-family: "FantasqueSansM Nerd Font", 'Courier New', Courier, monospace; + font-size: 16px; } - /* The whole bar */ - #waybar { - background: rgba(40, 40, 40, 0.8784313725); /* #282828e0 */ - color: @white; - font-family: JetBrains Mono, Siji; - font-size: 10pt; - /*font-weight: bold;*/ + .modules-left, + .modules-right, + .modules-center { + padding: 0 20px; + border-radius: 10px; + background-color: rgba(48, 52, 70, 0.85); } - /* Each module */ - #battery, - #clock, - #cpu, - #language, - #memory, - #mode, - #network, - #pulseaudio, - #temperature, - #tray, - #backlight, - #idle_inhibitor, - #disk, - #user, - #mpris { - padding-left: 8pt; - padding-right: 8pt; + tooltip { + background-color: rgba(48, 52, 70, 0.85); + border-radius: 10px; + padding: 8px; } - /* Each critical module */ - #mode, - #memory.critical, - #cpu.critical, - #temperature.critical, - #battery.critical.discharging { - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; - animation-name: blink-critical; - animation-duration: 1s; + tooltip label { + color: #c6d0f5; } - /* Each warning */ - #network.disconnected, - #memory.warning, - #cpu.warning, - #temperature.warning, - #battery.warning.discharging { - color: @warning; + #workspaces { + margin-left: -5px; + padding-left: 0px; } - /* And now modules themselves in their respective order */ - - /* Current sway mode (resize etc) */ - #mode { - color: @white; - background: @mode; - } - - /* Workspaces stuff */ #workspaces button { - /*font-weight: bold;*/ - padding-left: 2pt; - padding-right: 2pt; - color: @white; - background: @unfocused; + margin: 0 8px; } - /* Inactive (on unfocused output) */ - #workspaces button.visible { - color: @white; - background: @inactive; - } - - /* Active (on focused output) */ - #workspaces button.focused { - color: @black; - background: @focused; - } - - /* Contains an urgent window */ - #workspaces button.urgent { - color: @black; - background: @warning; - } - - /* Style when cursor is on the button */ #workspaces button:hover { - background: @black; - color: @white; + background: #414559; + border: none; } - #window { - margin-right: 35pt; - margin-left: 35pt; + #clock { + padding: 0 10px; } - #pulseaudio { - background: @sound; - color: @black; - } - - #network { - background: @network; - color: @white; - } - - #memory { - background: @memory; - color: @black; - } - - #cpu { - background: @cpu; - color: @white; - } - - #temperature { - background: @temp; - color: @black; - } - - #language { - background: @layout; - color: @black; - } - - #battery { - background: @battery; - color: @white; + #network, #cpu, #memory, #temperature { + margin: 0 8px; } #tray { - background: @date; + margin-left: 8px; } - #clock.date { - background: @date; - color: @white; - } - - #clock.time { - background: @time; - color: @black; - } - - #custom-arrow1 { - font-size: 11pt; - color: @time; - background: @date; - } - - #custom-arrow2 { - font-size: 11pt; - color: @date; - background: @layout; - } - - #custom-arrow3 { - font-size: 11pt; - color: @layout; - background: @battery; - } - - #custom-arrow4 { - font-size: 11pt; - color: @battery; - background: @temp; - } - - #custom-arrow5 { - font-size: 11pt; - color: @temp; - background: @cpu; - } - - #custom-arrow6 { - font-size: 11pt; - color: @cpu; - background: @memory; - } - - #custom-arrow7 { - font-size: 11pt; - color: @memory; - background: @network; - } - - #custom-arrow8 { - font-size: 11pt; - color: @network; - background: @sound; - } - - #custom-arrow9 { - font-size: 11pt; - color: @sound; - background: transparent; - } - - #custom-arrow10 { - font-size: 11pt; - color: @unfocused; - background: transparent; + #tray menu { + background-color: rgba(48, 52, 70, 0.85); + border-radius: 10px; + padding: 8px; } ''; }; diff --git a/programs/wezterm/default.nix b/programs/wezterm/default.nix index a2d56d2..66a1d5c 100644 --- a/programs/wezterm/default.nix +++ b/programs/wezterm/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ ... }: { programs.wezterm = { diff --git a/programs/wezterm/wezterm.lua b/programs/wezterm/wezterm.lua index 5af4061..92ee0d1 100644 --- a/programs/wezterm/wezterm.lua +++ b/programs/wezterm/wezterm.lua @@ -2,6 +2,7 @@ local wezterm = require("wezterm") return { color_scheme = "Catppuccin Frappe", + enable_wayland = false, -- Unfortunately broken on Hyprland, AGAIN font = wezterm.font("FantasqueSansM Nerd Font"), font_size = 13, hide_tab_bar_if_only_one_tab = true, diff --git a/programs/yazi/theme.toml b/programs/yazi/theme.toml deleted file mode 100644 index 6c959c5..0000000 --- a/programs/yazi/theme.toml +++ /dev/null @@ -1,145 +0,0 @@ -# vim:fileencoding=utf-8:foldmethod=marker - -# : Manager {{{ - -[manager] -cwd = { fg = "#81c8be" } - -# Hovered -hovered = { fg = "#303446", bg = "#8caaee" } -preview_hovered = { underline = true } - -# Find -find_keyword = { fg = "#e5c890", italic = true } -find_position = { fg = "#f4b8e4", bg = "reset", italic = true } - -# Marker -marker_selected = { fg = "#a6d189", bg = "#a6d189" } -marker_copied = { fg = "#e5c890", bg = "#e5c890" } -marker_cut = { fg = "#e78284", bg = "#e78284" } - -# Tab -tab_active = { fg = "#303446", bg = "#8caaee" } -tab_inactive = { fg = "#c6d0f5", bg = "#51576d" } -tab_width = 1 - -# Border -border_symbol = "│" -border_style = { fg = "#838ba7" } - -# Highlighting -syntect_theme = "~/.config/yazi/Catppuccin-frappe.tmTheme" - -# : }}} - - -# : Status {{{ - -[status] -separator_open = "" -separator_close = "" -separator_style = { fg = "#51576d", bg = "#51576d" } - -# Mode -mode_normal = { fg = "#303446", bg = "#8caaee", bold = true } -mode_select = { fg = "#303446", bg = "#a6d189", bold = true } -mode_unset = { fg = "#303446", bg = "#eebebe", bold = true } - -# Progress -progress_label = { fg = "#ffffff", bold = true } -progress_normal = { fg = "#8caaee", bg = "#51576d" } -progress_error = { fg = "#e78284", bg = "#51576d" } - -# Permissions -permissions_t = { fg = "#8caaee" } -permissions_r = { fg = "#e5c890" } -permissions_w = { fg = "#e78284" } -permissions_x = { fg = "#a6d189" } -permissions_s = { fg = "#838ba7" } - -# : }}} - - -# : Input {{{ - -[input] -border = { fg = "#8caaee" } -title = {} -value = {} -selected = { reversed = true } - -# : }}} - - -# : Select {{{ - -[select] -border = { fg = "#8caaee" } -active = { fg = "#f4b8e4" } -inactive = {} - -# : }}} - - -# : Tasks {{{ - -[tasks] -border = { fg = "#8caaee" } -title = {} -hovered = { underline = true } - -# : }}} - - -# : Which {{{ - -[which] -mask = { bg = "#414559" } -cand = { fg = "#81c8be" } -rest = { fg = "#949cbb" } -desc = { fg = "#f4b8e4" } -separator = "  " -separator_style = { fg = "#626880" } - -# : }}} - - -# : Help {{{ - -[help] -on = { fg = "#f4b8e4" } -exec = { fg = "#81c8be" } -desc = { fg = "#949cbb" } -hovered = { bg = "#626880", bold = true } -footer = { fg = "#51576d", bg = "#c6d0f5" } - -# : }}} - - -# : File-specific styles {{{ - -[filetype] - -rules = [ - # Images - { mime = "image/*", fg = "#81c8be" }, - - # Videos - { mime = "video/*", fg = "#e5c890" }, - { mime = "audio/*", fg = "#e5c890" }, - - # Archives - { mime = "application/zip", fg = "#f4b8e4" }, - { mime = "application/gzip", fg = "#f4b8e4" }, - { mime = "application/x-tar", fg = "#f4b8e4" }, - { mime = "application/x-bzip", fg = "#f4b8e4" }, - { mime = "application/x-bzip2", fg = "#f4b8e4" }, - { mime = "application/x-7z-compressed", fg = "#f4b8e4" }, - { mime = "application/x-rar", fg = "#f4b8e4" }, - - # Fallback - { name = "*", fg = "#c6d0f5" }, - { name = "*/", fg = "#8caaee" } -] - -# : }}} diff --git a/programs/yazi/yazi.toml b/programs/yazi/yazi.toml deleted file mode 100644 index 175a0f6..0000000 --- a/programs/yazi/yazi.toml +++ /dev/null @@ -1,9 +0,0 @@ -[opener] -video = [ - { exec = 'vlc "$1"', desc = "Open in VLC", orphan = true } -] - -[open] -rules = [ - { mime = "video/*", use = "video" } -] diff --git a/scripts/hyprland/start_services.sh b/scripts/hyprland/start_services.sh index e5bdf89..341ef6e 100755 --- a/scripts/hyprland/start_services.sh +++ b/scripts/hyprland/start_services.sh @@ -1,10 +1,25 @@ #!/bin/sh +# +# Make sure xdg-desktop-portal-hyprland has access to what it needs +# +dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP & + +# +# Start authentication polkit. +# +/nix/store/$(ls -la /nix/store | rg '^d.*polkit-kde-agent.*\d$' | awk '{print $9}')/libexec/polkit-kde-authentication-agent-1 & + # # Start waybar. # waybar & +# +# Start xwaylandvideobridge +# +xwaylandvideobridge & + # ## Start wallpaper daemon and set one. # @@ -16,7 +31,7 @@ function load_wallpapers() { } if ! swww query; then - swww init & + swww-daemon & fi load_wallpapers & @@ -26,11 +41,6 @@ load_wallpapers & # mako & -# -# Start authentication polkit. -# -/nix/store/$(ls -la /nix/store | rg '^d.*polkit-kde-agent.*\d$' | awk '{print $9}')/libexec/polkit-kde-authentication-agent-1 & - # # Refresh kdeconnect connections # @@ -43,13 +53,3 @@ wl-paste -w cliphist store & # Need this to be able to paste in xwayland applications. wl-paste -t text -w sh -c 'xclip -selection clipboard -o > /dev/null 2> /dev/null || xclip -selection clipboard' - -# -# Start xwaylandvideobridge -# -xwaylandvideobridge & - -# -# Make sure xdg-desktop-portal-hyprland has access to what it needs -# -dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP & diff --git a/scripts/steam/launch.sh b/scripts/steam/launch.sh index 1bfdf23..722fb47 100755 --- a/scripts/steam/launch.sh +++ b/scripts/steam/launch.sh @@ -1,8 +1,10 @@ #!/bin/sh + export MANGOHUD=1 # https://docs.mesa3d.org/envvars.html -export AMD_VULKAN_ICD="RADV" +export MESA_NO_DITHER=1 # Disables dither +export MESA_BACK_BUFFER=pixmap # For X only export DXVK_ASYNC=1 diff --git a/scripts/steam/launch_native.sh b/scripts/steam/launch_native.sh index 639baf4..3ff1fe9 100755 --- a/scripts/steam/launch_native.sh +++ b/scripts/steam/launch_native.sh @@ -1,6 +1,9 @@ #!/bin/sh -# https://docs.mesa3d.org/envvars.html -export AMD_VULKAN_ICD="RADV" +export MANGOHUD=1 -mangohud gamemoderun "$@" +# https://docs.mesa3d.org/envvars.html +export MESA_NO_DITHER=1 # Disables dither +export MESA_BACK_BUFFER=pixmap # For X only + +gamemoderun "$@" diff --git a/services/adguardhome.nix b/services/adguardhome.nix new file mode 100644 index 0000000..4cf7564 --- /dev/null +++ b/services/adguardhome.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + services.adguardhome = { enable = true; }; +} diff --git a/services/archi.nix b/services/archi.nix new file mode 100644 index 0000000..f026a2e --- /dev/null +++ b/services/archi.nix @@ -0,0 +1,19 @@ +{ ... }: + +{ + services.archisteamfarm = { + enable = true; + web-ui.enable = true; + + bots.wizardlink = { + enabled = true; + passwordFile = /var/lib/archisteamfarm/bots/wizardlink.password; + username = "master1891891"; + + settings = { + CustomGamePlayedWhileFarming = "In the fields"; + CustomGamePlayedWhileIdle = "Out from the fields"; + }; + }; + }; +} diff --git a/services/caddy.nix b/services/caddy.nix new file mode 100644 index 0000000..2d6f8cb --- /dev/null +++ b/services/caddy.nix @@ -0,0 +1,23 @@ +{ ... }: { + services.caddy = { + enable = true; + + virtualHosts."thewizard.link".extraConfig = '' + redir https://github.com/wizardlink/ + header Strict-Transport-Security "max-age=63072000; includeSubDomains" + ''; + + virtualHosts."jellyfin.thewizard.link".extraConfig = '' + encode gzip + reverse_proxy 127.0.0.1:8096 { + flush_interval -1 + } + ''; + + virtualHosts."foundry.thewizard.link".extraConfig = '' + reverse_proxy 127.0.0.1:30000 { + flush_interval -1 + } + ''; + }; +} diff --git a/services/jellyfin.nix b/services/jellyfin.nix new file mode 100644 index 0000000..2a694a7 --- /dev/null +++ b/services/jellyfin.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: + +{ + services.jellyfin = { + enable = true; + openFirewall = true; + user = "wizardlink"; + + package = pkgs.jellyfin.override { + jellyfin-web = pkgs.jellyfin-web.overrideAttrs (oldAttrs: { + patches = [ + (pkgs.fetchpatch { + url = + "https://github.com/jellyfin/jellyfin-web/compare/v${oldAttrs.version}...ConfusedPolarBear:jellyfin-web:intros.diff"; + hash = "sha256-qm4N4wMUFc4I53oQJUK1Six0cahVYz3J+FgO2vvSvXM="; + }) + ]; + }); + }; + }; +} diff --git a/switch b/switch new file mode 100755 index 0000000..dc20a6f --- /dev/null +++ b/switch @@ -0,0 +1,12 @@ +#!/etc/profiles/per-user/wizardlink/bin/fish + +function build + sudo nixos-rebuild switch --flake ~/.system\#nixos $argv[1] +end + +if test "--fast" = "$argv[1]" + build --fast +else + build +end + diff --git a/theming/catppuccin-qt5ct.nix b/theming/catppuccin-qt5ct.nix index a207fb2..29932d2 100644 --- a/theming/catppuccin-qt5ct.nix +++ b/theming/catppuccin-qt5ct.nix @@ -1,8 +1,4 @@ -{ fetchFromGitHub -, flavor ? "Mocha" -, lib -, stdenvNoCC -}: +{ fetchFromGitHub, flavor ? "Mocha", lib, stdenvNoCC }: let validFlavors = [ "Frappe" "Latte" "Macchiato" "Mocha" ]; pname = "catppucin-qt5ct"; diff --git a/theming/sddm.nix b/theming/sddm.nix index 7a8fff3..ec16288 100644 --- a/theming/sddm.nix +++ b/theming/sddm.nix @@ -1,11 +1,11 @@ { pkgs }: let - imgLink = "https://w.wallhaven.cc/full/1p/wallhaven-1p398w.jpg"; + imgLink = "https://w.wallhaven.cc/full/yj/wallhaven-yjq257.png"; image = pkgs.fetchurl { url = imgLink; - sha256 = "5347bc5a114db8afe9d189682a75565e8d0bc46e003f714879d6957729224335"; + sha256 = "sha256-lrQv8VAks86zMzRaF9VEZotp78O9M7/dV8jZNTRb6SY="; }; in pkgs.stdenv.mkDerivation {