From dc9c7c8461dc02631e45598cb6ed90235115df92 Mon Sep 17 00:00:00 2001 From: Hadi <112569860+anotherhadi@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:36:05 +0100 Subject: [PATCH] Init --- flake.lock | 306 +++++++++++++++++++++ flake.nix | 35 +++ hadi/app.nix | 18 ++ hadi/cli.nix | 10 + hadi/default.nix | 9 + hadi/dev.nix | 14 + hadi/font.nix | 9 + hadi/utils.nix | 17 ++ home/dunst/default.nix | 76 +++++ home/git/default.nix | 12 + home/home.nix | 25 ++ home/hyprland/default.nix | 96 +++++++ home/kitty/default.nix | 67 +++++ home/misc/default.nix | 14 + home/nvim/auto-pairs.nix | 1 + home/nvim/bufferline.nix | 1 + home/nvim/cmp.nix | 112 ++++++++ home/nvim/default.nix | 51 ++++ home/nvim/git.nix | 6 + home/nvim/lightline.nix | 1 + home/nvim/lsp.nix | 18 ++ home/nvim/none-ls.nix | 18 ++ home/nvim/nvim-tree.nix | 5 + home/nvim/options.nix | 25 ++ home/nvim/telescope.nix | 13 + home/nvim/toggleterm.nix | 7 + home/nvim/treesitter.nix | 11 + home/nvim/wilder.nix | 6 + home/qutebrowser/default.nix | 269 ++++++++++++++++++ home/qutebrowser/duckduckgo_colorscheme.js | 0 home/shell/default.nix | 8 + home/shell/fzf.nix | 6 + home/shell/starship.nix | 5 + home/shell/zoxide.nix | 6 + home/shell/zsh.nix | 35 +++ home/waybar/default.nix | 244 ++++++++++++++++ home/wlogout/default.nix | 125 +++++++++ home/wlogout/icons/hibernate.png | Bin 0 -> 4687 bytes home/wlogout/icons/lock.png | Bin 0 -> 2983 bytes home/wlogout/icons/logout.png | Bin 0 -> 3660 bytes home/wlogout/icons/reboot.png | Bin 0 -> 3957 bytes home/wlogout/icons/shutdown.png | Bin 0 -> 4124 bytes home/wlogout/icons/suspend.png | Bin 0 -> 4510 bytes home/wofi/default.nix | 95 +++++++ hosts/default.nix | 3 + hosts/tuigreet/default.nix | 30 ++ nixos/configuration.nix | 101 +++++++ nixos/hardware-configuration.nix | 42 +++ 48 files changed, 1952 insertions(+) create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 hadi/app.nix create mode 100644 hadi/cli.nix create mode 100644 hadi/default.nix create mode 100644 hadi/dev.nix create mode 100644 hadi/font.nix create mode 100644 hadi/utils.nix create mode 100644 home/dunst/default.nix create mode 100644 home/git/default.nix create mode 100644 home/home.nix create mode 100644 home/hyprland/default.nix create mode 100644 home/kitty/default.nix create mode 100644 home/misc/default.nix create mode 100644 home/nvim/auto-pairs.nix create mode 100644 home/nvim/bufferline.nix create mode 100644 home/nvim/cmp.nix create mode 100644 home/nvim/default.nix create mode 100644 home/nvim/git.nix create mode 100644 home/nvim/lightline.nix create mode 100644 home/nvim/lsp.nix create mode 100644 home/nvim/none-ls.nix create mode 100644 home/nvim/nvim-tree.nix create mode 100644 home/nvim/options.nix create mode 100644 home/nvim/telescope.nix create mode 100644 home/nvim/toggleterm.nix create mode 100644 home/nvim/treesitter.nix create mode 100644 home/nvim/wilder.nix create mode 100644 home/qutebrowser/default.nix create mode 100644 home/qutebrowser/duckduckgo_colorscheme.js create mode 100644 home/shell/default.nix create mode 100644 home/shell/fzf.nix create mode 100644 home/shell/starship.nix create mode 100644 home/shell/zoxide.nix create mode 100644 home/shell/zsh.nix create mode 100644 home/waybar/default.nix create mode 100644 home/wlogout/default.nix create mode 100644 home/wlogout/icons/hibernate.png create mode 100644 home/wlogout/icons/lock.png create mode 100644 home/wlogout/icons/logout.png create mode 100644 home/wlogout/icons/reboot.png create mode 100644 home/wlogout/icons/shutdown.png create mode 100644 home/wlogout/icons/suspend.png create mode 100644 home/wofi/default.nix create mode 100644 hosts/default.nix create mode 100644 hosts/tuigreet/default.nix create mode 100644 nixos/configuration.nix create mode 100644 nixos/hardware-configuration.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..14ce455 --- /dev/null +++ b/flake.lock @@ -0,0 +1,306 @@ +{ + "nodes": { + "devshell": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708939976, + "narHash": "sha256-O5+nFozxz2Vubpdl1YZtPrilcIXPcRAjqNdNE8oCRoA=", + "owner": "numtide", + "repo": "devshell", + "rev": "5ddecd67edbd568ebe0a55905273e56cc82aabe3", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixvim", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1710062421, + "narHash": "sha256-FiCNRfyUgJOLYIokLiFsfI7B+Zn9HDnOzFR3uVr5qsQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "36f873dfc8e2b6b89936ff3e2b74803d50447e0a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709988192, + "narHash": "sha256-qxwIkl85P0I1/EyTT+NJwzbXdOv86vgZxcv4UKicjK8=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "b0b0c3d94345050a7f86d1ebc6c56eea4389d030", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709771483, + "narHash": "sha256-Hjzu9nCknHLQvhdaRFfCEprH0o15KcaNu1QDr3J88DI=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "550340062c16d7ef8c2cc20a3d2b97bcd3c6b6f6", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1709961763, + "narHash": "sha256-6H95HGJHhEZtyYA3rIQpvamMKAGoa8Yh2rFV29QnuGw=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3030f185ba6a4bf4f18b87f345f104e6a6961f34", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "home-manager": "home-manager_2", + "nix-darwin": "nix-darwin", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1710016565, + "narHash": "sha256-GoNm8bTT2YjZwdS0jcF0u2mTb8TYDDVyl8vgGICaS8I=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "fb897e22e31f4d29766d94cea3df4aaf008c095e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "gitignore": "gitignore", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ], + "nixpkgs-stable": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixvim": "nixvim" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "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" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..321c8d0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,35 @@ +{ + description = "NixOS configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = inputs@{ nixpkgs, home-manager, nixvim, ... }: { + nixosConfigurations = { + hadi = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./nixos/configuration.nix + ./hadi + ./hosts + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.hadi = import ./home/home.nix; + home-manager.extraSpecialArgs = { inherit inputs; }; + } + ]; + }; + }; + }; +} diff --git a/hadi/app.nix b/hadi/app.nix new file mode 100644 index 0000000..1fa95a3 --- /dev/null +++ b/hadi/app.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + firefox + nextcloud-client + obsidian + chromium + swappy + hyprpicker + discord + imv + spotify + ]; + + programs.thunar.enable = true; + nixpkgs.overlays = [ + (final: prev: { qutebrowser = prev.qutebrowser.override { enableWideVine = true; }; }) + ]; +} diff --git a/hadi/cli.nix b/hadi/cli.nix new file mode 100644 index 0000000..0a3a2fa --- /dev/null +++ b/hadi/cli.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + ranger + fd + lazygit + tree-sitter + btop + bitwarden-cli + ]; +} diff --git a/hadi/default.nix b/hadi/default.nix new file mode 100644 index 0000000..21591e6 --- /dev/null +++ b/hadi/default.nix @@ -0,0 +1,9 @@ +{ + imports = [ + ./app.nix + ./cli.nix + ./dev.nix + ./utils.nix + ./font.nix + ]; + } diff --git a/hadi/dev.nix b/hadi/dev.nix new file mode 100644 index 0000000..f832c00 --- /dev/null +++ b/hadi/dev.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + go + cargo + nodejs + python3 + ]; + + programs.nix-ld.enable = true; + programs.nix-ld.libraries = with pkgs; [ + stylua + lua-language-server + ]; +} diff --git a/hadi/font.nix b/hadi/font.nix new file mode 100644 index 0000000..ed6bcea --- /dev/null +++ b/hadi/font.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: { + + fonts.packages = with pkgs; [ + (nerdfonts.override { fonts = [ "FiraCode" ]; }) + #inputs.apple-fonts.packages.${pkgs.system}.sf-pro-nerd + #inputs.apple-fonts.packages.${pkgs.system}.sf-mono-nerd + ]; + +} diff --git a/hadi/utils.nix b/hadi/utils.nix new file mode 100644 index 0000000..8a28942 --- /dev/null +++ b/hadi/utils.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + unzip + ripgrep + wget + libva + qt5ct + stow + blueman + gcc + peaclock + alejandra + libnotify + xdg_utils + tldr + ]; +} diff --git a/home/dunst/default.nix b/home/dunst/default.nix new file mode 100644 index 0000000..6264dc6 --- /dev/null +++ b/home/dunst/default.nix @@ -0,0 +1,76 @@ +{ config, lib, pkgs, ... }: + +{ +services.dunst = { + enable = true; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + settings = { + global = { + rounded = "yes"; + origin = "top-right"; + monitor = "0"; + alignment = "left"; + vertical_alignment = "center"; + width = "400"; + height = "400"; + scale = 0; + gap_size = 0; + progress_bar = true; + transparency = 0; + text_icon_padding = 0; + separator_color = "frame"; + sort = "yes"; + idle_threshold = 120; + line_height = 0; + markup = "full"; + show_age_threshold = 60; + ellipsize = "middle"; + ignore_newline = "no"; + stack_duplicates = true; + sticky_history = "yes"; + history_length = 20; + always_run_script = true; + corner_radius = 10; + follow = "mouse"; + font = "Source Sans Pro 10"; + format = "%s\\n%b"; #format = "%s %p\n%b" + frame_color = "#232323"; + frame_width = 1; + offset = "15x15"; + horizontal_padding = 10; + icon_position = "left"; + indicate_hidden = "yes"; + min_icon_size = 0; + max_icon_size = 64; + mouse_left_click = "do_action, close_current"; + mouse_middle_click = "close_current"; + mouse_right_click = "close_all"; + padding = 10; + plain_text = "no"; + separator_height = 2; + show_indicators = "yes"; + shrink = "no"; + word_wrap = "yes"; + browser = "/usr/bin/env librewolf -new-tab"; + }; + + fullscreen_delay_everything = {fullscreen = "delay";}; + + urgency_critical = { + background = "#d64e4e"; + foreground = "#f0e0e0"; + }; + urgency_low = { + background = "#232323"; + foreground = "#2596be"; + }; + urgency_normal = { + background = "#1e1e2a"; + foreground = "#2596be"; + }; + }; + }; +} diff --git a/home/git/default.nix b/home/git/default.nix new file mode 100644 index 0000000..b4555e8 --- /dev/null +++ b/home/git/default.nix @@ -0,0 +1,12 @@ +{ + programs.git = { + enable = true; + userName = "Hadi"; + userEmail = "112569860+anotherhadi@users.noreply.github.com"; + extraConfig = { + init.defaultBranch = "main"; + # Automatically track remote branch + push.autoSetupRemote = true; + }; + }; +} diff --git a/home/home.nix b/home/home.nix new file mode 100644 index 0000000..7466c97 --- /dev/null +++ b/home/home.nix @@ -0,0 +1,25 @@ +{ config, pkgs, ...}: { + home.username = "hadi"; + home.homeDirectory = "/home/hadi"; + + home.packages = with pkgs; [ + vscode + ]; + + home.stateVersion = "23.11"; + programs.home-manager.enable = true; + + imports = [ + ./hyprland + ./nvim + ./waybar + ./kitty + ./dunst + ./wlogout + ./wofi + ./qutebrowser + ./git + ./shell + ./misc + ]; +} diff --git a/home/hyprland/default.nix b/home/hyprland/default.nix new file mode 100644 index 0000000..d0f1409 --- /dev/null +++ b/home/hyprland/default.nix @@ -0,0 +1,96 @@ +{pkgs, ...}:{ + + home.packages = with pkgs; [ + xdg-desktop-portal-hyprland + wlr-randr + swww + wl-clipboard + brightnessctl + gnome.gnome-themes-extra + adwaita-qt + adwaita-qt6 + gnome.adwaita-icon-theme + wlsunset + xwayland + xdg-desktop-portal-gtk + wlroots + wayland-utils + wayland-protocols + meson + ]; + + wayland.windowManager.hyprland = { + enable = true; + xwayland.enable = true; + + settings = { + "$mod" = "SUPER"; + "$menu" = "~/scripts/menu.sh"; + "$powermenu" = "${pkgs.wlogout}/bin/wlogout"; + + monitor = [ + "eDP-2,highres,0x0,1" + "desc:AOC U34G2G1 0x00000E06,highrr,2560x0,1" + ",prefered,auto,1" + ]; + + bind = [ + "$mod, RETURN, exec, kitty" + "$mod, Q, killactive," + "$mod, E, exec, thunar" + "$mod, T, togglefloating," + "$mod, F, fullscreen" + "$mod, B, exec, firefox" + "$mod, C, exec, kitty --class floating peaclock" + "$mod, L, exec, hyprlock" + "$mod, SPACE, exec, $menu" + "$mod, X, exec, $powermenu" + ]++ ( + builtins.concatLists (builtins.genList (i: + let ws = i + 1; + in [ + "$mod, code:1${toString i}, workspace, ${toString ws}" + "$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" + ]) 9)); + + env = [ + + "XCURSOR_SIZE,24" + "LIBVA_DRIVER_NAME,nvidia" + "XDG_SESSION_TYPE,wayland" + "__GLX_VENDOR_LIBRARY_NAME,nvidia" + "WLR_NO_HARDWARE_CURSORS,1" + "QT_QPA_PLATFORMTHEME,qt5ct" + "SWWW_TRANSITION,wipe" + "XDG_CURRENT_DESKTOP,Hyprland" + "XDG_SESSION_TYPE,wayland" + "XDG_SESSION_DESKTOP,Hyprland" + "QT_AUTO_SCREEN_SCALE_FACTOR,1" + "QT_QPA_PLATFORM=wayland,xcb" + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + "T_QPA_PLATFORMTHEME,qt5ct" + "WLR_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1" + "GTK_THEME,Adwaita:dark" + "GTK2_RC_FILES,/usr/share/themes/Adwaita-dark/gtk-2.0/gtkrc" + "QT_STYLE_OVERRIDE,Adwaita-Dark" + ]; + + input = { + kb_layout="fr"; + + kb_options = "caps:escape"; + follow_mouse = 1; + sensitivity = 0.5; + repeat_delay = 300; + repeat_rate = 50; + numlock_by_default=true; + + touchpad ={ + natural_scroll = true; + clickfinger_behavior= true; + }; + }; + + }; + }; +} diff --git a/home/kitty/default.nix b/home/kitty/default.nix new file mode 100644 index 0000000..6c9d8ec --- /dev/null +++ b/home/kitty/default.nix @@ -0,0 +1,67 @@ +{ + programs.kitty = { + enable = true; + settings = { + + scrollback_lines = 10000; + enable_audio_bell = false; + update_check_interval = 0; + font_family = "FiraCode Nerd Font"; + font_size = 13; + cursor_shape = "Underline"; + cursor_underline_thickness = 1; + window_padding_width = 10; + url_style = "curly"; + confirm_os_window_close = "0"; + remember_window_size = "no"; + disable_ligatures = "never"; + shell = "zsh"; + initial_window_width = 1000; + initial_window_height = 600; + + # Special + background = "#090914"; + url_color = "#9978F8"; + + # Black + color0 = "#414868"; + color8 = "#515878"; + + # Red + color1 = "#f7768e"; + color9 = "#f7869e"; + + # Green + color2 = "#73daca"; + color10 = "#83eada"; + + # Yellow + color3 = "#e0af68"; + color11 = "#f0bf78"; + + # Blue + color4 = "#7aa2f7"; + color12 = "#8ab2f7"; + + # Magenta + color5 = "#9978F8"; + color13 = "#A988F8"; + + # Cyan + color6 = "#7dcfff"; + color14 = "#8ddfff"; + + # White + color7 = "#E4E5E7"; + color15 = "#f4f5f7"; + + # Cursor + cursor = "#FBFBFB"; + cursor_text_color = "#090914"; + + # Selection highlight + selection_foreground = "#9978F8"; + selection_background = "#28344a"; + }; + }; +} diff --git a/home/misc/default.nix b/home/misc/default.nix new file mode 100644 index 0000000..34e6eb3 --- /dev/null +++ b/home/misc/default.nix @@ -0,0 +1,14 @@ +{ + home.file = { + ".ssh/config" = { + text = '' + Host github.com + User git + Hostname github.com + PreferredAuthentications publickey + IdentityFile ~/.ssh/github + ''; + executable = false; + }; + }; +} diff --git a/home/nvim/auto-pairs.nix b/home/nvim/auto-pairs.nix new file mode 100644 index 0000000..a347400 --- /dev/null +++ b/home/nvim/auto-pairs.nix @@ -0,0 +1 @@ +{ programs.nixvim.plugins.nvim-autopairs = { enable = true; }; } diff --git a/home/nvim/bufferline.nix b/home/nvim/bufferline.nix new file mode 100644 index 0000000..415e33d --- /dev/null +++ b/home/nvim/bufferline.nix @@ -0,0 +1 @@ +{ programs.nixvim.plugins.bufferline = { enable = true; }; } diff --git a/home/nvim/cmp.nix b/home/nvim/cmp.nix new file mode 100644 index 0000000..dee8cd5 --- /dev/null +++ b/home/nvim/cmp.nix @@ -0,0 +1,112 @@ +{ + programs.nixvim.plugins = { + luasnip.enable = true; + cmp-buffer = { enable = true; }; + cmp-emoji = { enable = true; }; + cmp-nvim-lsp = { enable = true; }; + cmp-path = { enable = true; }; + cmp_luasnip = { enable = true; }; + + cmp = { + enable = true; + settings = { + snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; + sources = [ + { name = "nvim_lsp"; } + { name = "luasnip"; } + { name = "buffer"; } + { name = "nvim_lua"; } + { name = "path"; } + ]; + + formatting = { + fields = [ "abbr" "kind" "menu" ]; + format = +# lua + '' + function(_, item) + local icons = { + Namespace = "󰌗", + Text = "󰉿", + Method = "󰆧", + Function = "󰆧", + Constructor = "", + Field = "󰜢", + Variable = "󰀫", + Class = "󰠱", + Interface = "", + Module = "", + Property = "󰜢", + Unit = "󰑭", + Value = "󰎠", + Enum = "", + Keyword = "󰌋", + Snippet = "", + Color = "󰏘", + File = "󰈚", + Reference = "󰈇", + Folder = "󰉋", + EnumMember = "", + Constant = "󰏿", + Struct = "󰙅", + Event = "", + Operator = "󰆕", + TypeParameter = "󰊄", + Table = "", + Object = "󰅩", + Tag = "", + Array = "[]", + Boolean = "", + Number = "", + Null = "󰟢", + String = "󰉿", + Calendar = "", + Watch = "󰥔", + Package = "", + Copilot = "", + Codeium = "", + TabNine = "", + } + + local icon = icons[item.kind] or "" + item.kind = string.format("%s %s", icon, item.kind or "") + return item + end + ''; + }; + + window = { + completion = { + winhighlight = + "FloatBorder:CmpBorder,Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel"; + scrollbar = false; + sidePadding = 0; + border = [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ]; + }; + + documentation = { + border = [ "╭" "─" "╮" "│" "╯" "─" "╰" "│" ]; + winhighlight = + "FloatBorder:CmpBorder,Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel"; + }; + }; + + mapping = { + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.close()"; + "" = + "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true })"; + }; + }; + }; + + }; +} diff --git a/home/nvim/default.nix b/home/nvim/default.nix new file mode 100644 index 0000000..05532b5 --- /dev/null +++ b/home/nvim/default.nix @@ -0,0 +1,51 @@ +{ pkgs, inputs, ... }: + +{ + imports = [ + inputs.nixvim.homeManagerModules.nixvim + ./auto-pairs.nix + ./options.nix + ./bufferline.nix + ./telescope.nix + ./nvim-tree.nix + ./lightline.nix + ./git.nix + ./cmp.nix + ./none-ls.nix + ./wilder.nix + ./lsp.nix + ./treesitter.nix + ./toggleterm.nix + ]; + + programs.nixvim = { + +enable = true; + + colorschemes.catppuccin.enable = true; + + keymaps = [ + # Global Mappings + # Default mode is "" which means normal-visual-op + { + # Toggle NvimTree + key = "e"; + action = "Neotree toggle"; + } + { + # Format file + key = "fm"; + action = "lua vim.lsp.buf.format()"; + } + + # Terminal Mappings + { + # Escape terminal mode using ESC + mode = "t"; + key = ""; + action = ""; + } + ]; + }; + +} diff --git a/home/nvim/git.nix b/home/nvim/git.nix new file mode 100644 index 0000000..df05090 --- /dev/null +++ b/home/nvim/git.nix @@ -0,0 +1,6 @@ +{ + programs.nixvim.plugins.gitsigns = { + enable = true; + currentLineBlame = true; + }; +} diff --git a/home/nvim/lightline.nix b/home/nvim/lightline.nix new file mode 100644 index 0000000..270a763 --- /dev/null +++ b/home/nvim/lightline.nix @@ -0,0 +1 @@ +{ programs.nixvim.plugins.lualine = { enable = true; }; } diff --git a/home/nvim/lsp.nix b/home/nvim/lsp.nix new file mode 100644 index 0000000..4544024 --- /dev/null +++ b/home/nvim/lsp.nix @@ -0,0 +1,18 @@ +{ + programs.nixvim.plugins.lsp = { + enable = true; + servers = { + bashls.enable = true; + clangd.enable = true; + gopls.enable = true; + nixd.enable = true; + }; + keymaps.lspBuf = { + "gd" = "definition"; + "gD" = "references"; + "gt" = "type_definition"; + "gi" = "implementation"; + "K" = "hover"; + }; + }; +} diff --git a/home/nvim/none-ls.nix b/home/nvim/none-ls.nix new file mode 100644 index 0000000..2d86744 --- /dev/null +++ b/home/nvim/none-ls.nix @@ -0,0 +1,18 @@ +{ + programs.nixvim.plugins.none-ls = { + enable = true; + sources = { + diagnostics = { + golangci_lint.enable = true; + statix.enable = true; + }; + formatting = { + fantomas.enable = true; + gofmt.enable = true; + goimports.enable = true; + nixfmt.enable = true; + markdownlint.enable = true; + }; + }; + }; +} diff --git a/home/nvim/nvim-tree.nix b/home/nvim/nvim-tree.nix new file mode 100644 index 0000000..ef41e5e --- /dev/null +++ b/home/nvim/nvim-tree.nix @@ -0,0 +1,5 @@ +{ + programs.nixvim.plugins.neo-tree = { + enable = true; + }; +} diff --git a/home/nvim/options.nix b/home/nvim/options.nix new file mode 100644 index 0000000..ef62225 --- /dev/null +++ b/home/nvim/options.nix @@ -0,0 +1,25 @@ +{ + + programs.nixvim.globals.mapleader = " "; + programs.nixvim.options = { + updatetime = 100; # Faster completion + + number = true; + relativenumber = true; + + autoindent = true; + clipboard = "unnamedplus"; + expandtab = true; + shiftwidth = 2; + smartindent = true; + tabstop = 2; + + ignorecase = true; + incsearch = true; + smartcase = true; + wildmode = "list:longest"; + + swapfile = false; + undofile = true; # Build-in persistent undo + }; +} diff --git a/home/nvim/telescope.nix b/home/nvim/telescope.nix new file mode 100644 index 0000000..95bfdfd --- /dev/null +++ b/home/nvim/telescope.nix @@ -0,0 +1,13 @@ +{ + programs.nixvim.plugins.telescope = { + enable = true; + keymaps = { + "fg" = "live_grep"; + "" = { + action = "git_files"; + desc = "Telescope Git Files"; + }; + }; + extensions.fzf-native = { enable = true; }; + }; +} diff --git a/home/nvim/toggleterm.nix b/home/nvim/toggleterm.nix new file mode 100644 index 0000000..49c0169 --- /dev/null +++ b/home/nvim/toggleterm.nix @@ -0,0 +1,7 @@ +{ + programs.nixvim.plugins.toggleterm = { + enable = true; + openMapping = ""; + direction = "horizontal"; + }; +} diff --git a/home/nvim/treesitter.nix b/home/nvim/treesitter.nix new file mode 100644 index 0000000..633e7bf --- /dev/null +++ b/home/nvim/treesitter.nix @@ -0,0 +1,11 @@ +{ + programs.nixvim.plugins = { + treesitter = { + enable = true; + nixGrammars = true; + indent = true; + }; + treesitter-context.enable = true; + rainbow-delimiters.enable = true; + }; +} diff --git a/home/nvim/wilder.nix b/home/nvim/wilder.nix new file mode 100644 index 0000000..d699fb9 --- /dev/null +++ b/home/nvim/wilder.nix @@ -0,0 +1,6 @@ +{ + programs.nixvim.plugins.wilder = { + enable = true; + modes = [ ":" "/" "?" ]; + }; +} diff --git a/home/qutebrowser/default.nix b/home/qutebrowser/default.nix new file mode 100644 index 0000000..e8e2497 --- /dev/null +++ b/home/qutebrowser/default.nix @@ -0,0 +1,269 @@ +{ + programs.qutebrowser = { + enable = true; + searchEngines = { + "DEFAULT" = "https://google.com/search?q={}"; + "yt" = "https://youtube.com/results?search_query={}"; + "nixo" = "https://search.nixos.org/options?channel=unstable&query={}"; + "nixp" = "https://search.nixos.org/packages?channel=unstable&query={}"; + }; + + settings = { + + colors = { + tabs = { + odd.bg = "#000000"; + odd.fg = "#FFFFFF"; + even.bg = "#000000"; + even.fg = "#FFFFFF"; + selected.odd.bg = "#101012"; + selected.odd.fg = "#FFFFFF"; + selected.even.bg = "#101012"; + selected.even.fg = "#FFFFFF"; + indicator.error = "#101012"; + indicator.start = "#101012"; + indicator.stop = "#101012"; + }; + + hints = { + bg = "#101012"; + fg = "#FFFFFF"; + match.fg = "#E2E2E2"; + }; + + completion = { + category.bg = "#101012"; + category.fg = "#FFFFFF"; + category.border.top = "#101012"; + category.border.bottom = "#101012"; + + odd.bg = "#101012"; + even.bg = "#101012"; + + fg = [ "#FFFFFF" "#FFFFFF" "#FFFFFF" ]; + + match.fg = "#FF0000"; + + item.selected.bg = "#FF0000"; + item.selected.border.top = "#FF0000"; + item.selected.border.bottom = "#FF0000"; + item.selected.fg = "#FBFBFB"; + item.selected.match.fg = "#FBFBFB"; + }; + + # statusbar = { + # normal.bg = colors.statusbar.bg; + # normal.fg = colors.statusbar.fg; + # private.bg = colors.statusbar.private.bg; + # private.fg = colors.statusbar.private.fg; + # command = { + # bg = colors.statusbar.bg; + # fg = colors.statusbar.fg; + # private.bg = colors.statusbar.private.bg; + # private.fg = colors.statusbar.private.fg; + # }; + # }; + # + # messages = { + # info = { + # bg = colors.statusbar.bg; + # fg = colors.statusbar.fg; + # border = colors.statusbar.bg; + # }; + # + # error = { + # bg = colors.messages.error.bg; + # fg = colors.messages.error.fg; + # border = colors.messages.error.bg; + # }; + # }; + }; + + completion = { + height = "30%"; + open_categories = [ "history" ]; + scrollbar = { + padding = 0; + width = 0; + }; + show = "always"; + shrink = true; + timestamp_format = ""; + web_history.max_items = 7; + }; + + content = { + autoplay = false; + javascript.clipboard = "access"; + pdfjs = true; + }; + + downloads = { + position = "bottom"; + remove_finished = 0; + }; + + fileselect = { + handler = "external"; + multiple_files.command = [ + "alacritty" + "--embed" + "$(xdotool getactivewindow)" + "-e" + "lf" + "-selection-path" + "{}" + ]; + single_file.command = [ + "alacritty" + "--embed" + "$(xdotool getactivewindow)" + "-e" + "lf" + "-selection-path" + "{}" + ]; + }; + + hints = { + border = "none"; + radius = 1; + }; + + scrolling = { + bar = "never"; + smooth = true; + }; + + statusbar = { + show = "never"; + widgets = [ ]; + }; + + tabs = { + show = "multiple"; + last_close = "close"; + mode_on_change = "restore"; + close_mouse_button = "right"; + }; + + url = { + default_page = "https://duckduckgo.com"; + start_pages = [ "https://duckduckgo.com" ]; + }; + + zoom.default = "130%"; + }; + + keyMappings = { + "" = "o"; + "" = "O"; + }; + + keyBindings = { + normal = { + ",p" = "tab-move -"; + ",n" = "tab-move +"; + + "" = "config-source"; + + "" = "fake-key "; + + "" = "scroll-to-perc 0"; + "" = "scroll-to-perc"; + "" = "back"; + "" = "forward"; + + "" = "open -w"; + "" = "open -p"; + + "" = "tab-close"; + "" = "tab-focus 1"; + "" = "tab-focus 2"; + "" = "tab-focus 3"; + "" = "tab-focus 4"; + "" = "tab-focus 5"; + "" = "tab-focus 6"; + "" = "tab-focus 7"; + "" = "tab-focus 8"; + "" = "tab-focus 9"; + "" = "tab-focus 10"; + + "gtb" = "open https://github.com/noib3"; + "ttb" = "open -t https://github.com/noib3"; + + "gma" = "open https://mail.protonmail.com/inbox"; + "tma" = "open -t https://mail.protonmail.com/inbox"; + + "gkp" = "open https://keep.google.com"; + "tkp" = "open -t https://keep.google.com"; + + "grhm" = + "open https://github.com/nix-community/home-manager/find/master"; + "trhm" = + "open -t https://github.com/nix-community/home-manager/find/master"; + + "gnv" = "open https://github.com/neovim/neovim/tree/master/src/nvim"; + "tnv" = "open -t https://github.com/neovim/neovim/tree/master/src/nvim"; + + "gbg" = "open https://rarbgunblocked.org/torrents.php"; + "tbg" = "open -t https://rarbgunblocked.org/torrents.php"; + + "g12ft" = "open https://12ft.io/"; + "t12ft" = "open -t https://12ft.io/"; + + "gtra" = "open http://localhost:9091/transmission/web/"; + "ttra" = "open -t http://localhost:9091/transmission/web/"; + }; + + command = { + "" = "tab-close"; + + "" = "completion-item-yank"; + "" = "fake-key --global "; + + "" = "rl-beginning-of-line"; + "" = "rl-end-of-line"; + "" = "rl-backward-kill-word"; + "" = "rl-unix-line-discard"; + }; + + insert = { + "" = "tab-close"; + + "" = "fake-key "; + "" = "fake-key "; + "" = "fake-key "; + "" = "fake-key "; + + "" = "fake-key "; + "" = "fake-key "; + "" = "fake-key "; + "" = "fake-key "; + + "" = "tab-focus 1"; + "" = "tab-focus 2"; + "" = "tab-focus 3"; + "" = "tab-focus 4"; + "" = "tab-focus 5"; + "" = "tab-focus 6"; + "" = "tab-focus 7"; + "" = "tab-focus 8"; + "" = "tab-focus 9"; + "" = "tab-focus 10"; + }; + }; + + extraConfig = '' + config.unbind("gm") + config.unbind("gd") + config.unbind("gb") + config.unbind("tl") + config.unbind("gt") + + c.tabs.padding = {"bottom": 0, "left": 7, "right": 7, "top": 0} + + config.load_autoconfig(True) + ''; + }; +} diff --git a/home/qutebrowser/duckduckgo_colorscheme.js b/home/qutebrowser/duckduckgo_colorscheme.js new file mode 100644 index 0000000..e69de29 diff --git a/home/shell/default.nix b/home/shell/default.nix new file mode 100644 index 0000000..d5de2bd --- /dev/null +++ b/home/shell/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./fzf.nix + ./zsh.nix + ./starship.nix + ./zoxide.nix + ]; +} diff --git a/home/shell/fzf.nix b/home/shell/fzf.nix new file mode 100644 index 0000000..983fc8d --- /dev/null +++ b/home/shell/fzf.nix @@ -0,0 +1,6 @@ +{ + programs.fzf = { + enable = true; + enableZshIntegration = true; + }; +} diff --git a/home/shell/starship.nix b/home/shell/starship.nix new file mode 100644 index 0000000..927ad3a --- /dev/null +++ b/home/shell/starship.nix @@ -0,0 +1,5 @@ +{ + programs.starship = { + enable = true; + }; +} diff --git a/home/shell/zoxide.nix b/home/shell/zoxide.nix new file mode 100644 index 0000000..12c084c --- /dev/null +++ b/home/shell/zoxide.nix @@ -0,0 +1,6 @@ +{ + programs.zoxide = { + enable= true; + enableZshIntegration = true; + }; +} diff --git a/home/shell/zsh.nix b/home/shell/zsh.nix new file mode 100644 index 0000000..8cc660e --- /dev/null +++ b/home/shell/zsh.nix @@ -0,0 +1,35 @@ +{ pkgs, lib, config, ... }: { + + home.packages = with pkgs; [ eza bat ripgrep tldr ]; + + programs.zsh = { + enable = true; + enableAutosuggestions = true; + enableCompletion = true; + syntaxHighlighting.enable = true; + + history = { + ignoreDups = true; + save = 1000000; + size = 1000000; + }; + + + profileExtra = lib.optionalString (config.home.sessionPath != [ ]) '' + export PATH="$PATH''${PATH:+:}${lib.concatStringsSep ":" config.home.sessionPath}" + ''; + + shellAliases = { + vim = "nvim"; + v = "nvim"; + c = "clear"; + clera = "clear"; + celar = "clear"; + e = "exit"; + cd = "z"; + ls = "eza --icons"; + open = "xdg-open"; + icat = "kitty +kitten icat"; + }; + }; +} diff --git a/home/waybar/default.nix b/home/waybar/default.nix new file mode 100644 index 0000000..d157c47 --- /dev/null +++ b/home/waybar/default.nix @@ -0,0 +1,244 @@ +{ + services = { + blueman-applet.enable = true; + network-manager-applet.enable = true; + }; + + programs.waybar = { + enable = true; + systemd.enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + spacing = 0; + "margin-top" = 15; + "margin-left" = 15; + "margin-right" = 15; + height = 40; + modules-left = [ "custom/logo" "hyprland/window" ]; + modules-center = [ "hyprland/workspaces" ]; + modules-right = + [ "tray" "backlight" "pulseaudio" "battery" "clock" "custom/power" ]; + + "wlr/taskbar" = { + format = "{icon}"; + "on-click" = "activate"; + "on-click-right" = "fullscreen"; + "icon-theme" = "WhiteSur"; + "icon-size" = 25; + "tooltip-format" = "{title}"; + }; + + "hyprland/workspaces" = { + "on-click" = "activate"; + format = "{icon}"; + "format-icons" = { + "default" = ""; + "1" = "1"; + "2" = "2"; + "3" = "3"; + "4" = "4"; + "5" = "5"; + "6" = "6"; + "7" = "7"; + "8" = "8"; + "9" = "9"; + "active" = "󱓻"; + "urgent" = "󱓻"; + }; + "persistent_workspaces" = { + "1" = [ ]; + "2" = [ ]; + "3" = [ ]; + "4" = [ ]; + "5" = [ ]; + }; + }; + + tray = { spacing = 16; }; + + clock = { + "tooltip-format" = "{calendar}"; + "format-alt" = " {:%a, %d %b %Y}"; + format = "󰥔 {:%I:%M %p}"; + }; + + pulseaudio = { + format = "{icon}"; + "format-bluetooth" = "󰂰"; + nospacing = 1; + "tooltip-format" = "Volume : {volume}%"; + "format-muted" = "󰝟"; + "format-icons" = { + "headphone" = ""; + "default" = [ "󰖀" "󰕾" "" ]; + }; + "on-click" = "pamixer -t"; + "scroll-step" = 1; + }; + + "custom/logo" = { + format = "  "; + tooltip = false; + "on-click" = "~/scripts/menu.sh"; + }; + + battery = { + format = "{capacity}% {icon}"; + "format-icons" = { + "charging" = [ "󰢜" "󰂆" "󰂇" "󰂈" "󰢝" "󰂉" "󰢞" "󰂊" "󰂋" "󰂅" ]; + "default" = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; + }; + "format-full" = "󰁹 "; + interval = 10; + states = { + warning = 20; + critical = 10; + }; + tooltip = false; + }; + + "custom/power" = { + format = "󰤆"; + tooltip = false; + "on-click" = "wlogout"; + }; + + backlight = { + device = "nvidia_0"; + format = "{icon}"; + "format-icons" = [ " " " " "" "" "" "" "" "" "" ]; + }; + }; + }; + style = '' + * { + border: none; + border-radius: 0; + min-height: 0; + font-family: "SFProDisplay Nerd Font Bold"; + } + + window#waybar { + background-color: #090914; + transition-property: background-color; + transition-duration: 0.5s; + border-radius: 15px; + font-size: 13px; + } + + window#waybar.hidden { + opacity: 0.5; + } + + #workspaces { + background-color: transparent; + } + + #workspaces button { + all: initial; /* Remove GTK theme values (waybar #1351) */ + min-width: 0; /* Fix weird spacing in materia (waybar #450) */ + box-shadow: inset 0 -3px transparent; /* Use box-shadow instead of border so the text isn't offset */ + padding: 6px 18px; + margin: 6px 3px; + border-radius: 4px; + background-color: #1e1e2e; + color: #cdd6f4; + } + + #workspaces button.active { + color: #1e1e2e; + background-color: #cdd6f4; + } + + #workspaces button:hover { + box-shadow: inherit; + text-shadow: inherit; + color: #1e1e2e; + background-color: #cdd6f4; + } + + #workspaces button.urgent { + background-color: #f38ba8; + } + + #memory, + #custom-power, + #battery, + #backlight, + #pulseaudio, + #network, + #clock, + #tray, + #backlight{ + border-radius: 9px; + margin: 6px 3px; + padding: 6px 12px; + background-color: #1e1e2e; + color: #FBFBFB; + } + + #tray menu { + background-color: #1e1e2e; + color: #FBFBFB; + } + + #custom-power { + margin-right: 6px; + } + + #custom-logo { + padding-right: 7px; + padding-left: 7px; + margin-left: 5px; + font-size: 15px; + border-radius: 8px 0px 0px 8px; + color: #9978F8; + } + + @keyframes blink { + to { + background-color: #f38ba8; + color: #181825; + } + } + + #battery.warning, + #battery.critical, + #battery.urgent { + background-color: #ff0048; + color: #181825; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + } + + #battery.charging { + background-color: #1E1E2E; + color: #FBFBFB; + animation: none; + } + + #custom-power { + background-color: #9978F8; + color: #0C0C0C; + margin-right: 7px; + } + + + tooltip { + border-radius: 8px; + padding: 15px; + background-color: #1E1E2E; + } + + tooltip label { + padding: 5px; + background-color: #1E1E2E; + } + ''; + }; +} diff --git a/home/wlogout/default.nix b/home/wlogout/default.nix new file mode 100644 index 0000000..d5c4f8d --- /dev/null +++ b/home/wlogout/default.nix @@ -0,0 +1,125 @@ +{ + programs.wlogout = { + enable = true; + layout = [ + { + label = "lock"; + action = "sleep 1; hyprlock"; + text = "Lock"; + keybind = "l"; + } + { + label = "hibernate"; + action = "sleep 1; systemctl hibernate"; + text = "Hibernate"; + keybind = "h"; + } + { + label = "logout"; + action = "sleep 1; killall -9 Hyprland sleep 2"; + text = "Exit"; + keybind = "e"; + } + { + label = "shutdown"; + action = "sleep 1; systemctl poweroff"; + text = "Shutdown"; + keybind = "s"; + } + { + label = "suspend"; + action = "sleep 1; systemctl suspend"; + text = "Suspend"; + keybind = "u"; + } + { + label = "reboot"; + action = "sleep 1; systemctl reboot"; + text = "Reboot"; + keybind = "r"; + } + ]; + + style = '' + * { + font-family: "Fira Sans Semibold"; + background-image: none; + transition: 20ms; + } + + window { + background-color: rgba(12, 12, 12, 0.5); + } + + button { + color: #FFFFFF; + font-size:20px; + + background-repeat: no-repeat; + background-position: center; + background-size: 25%; + + border-style: solid; + background-color: rgba(12, 12, 12, 0.5); + border: 3px solid #FFFFFF; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + } + + button:focus, + button:active, + button:hover { + color: #9978F8; + background-color: rgba(12, 12, 12, 0.8); + border: 3px solid #9978F8; + } + + /* + ----------------------------------------------------- + Buttons + ----------------------------------------------------- + */ + + #lock { + margin: 10px; + border-radius: 20px; + background-image: image(url("icons/lock.png")); + } + + #logout { + margin: 10px; + border-radius: 20px; + background-image: image(url("icons/logout.png")); + } + + #suspend { + margin: 10px; + border-radius: 20px; + background-image: image(url("icons/suspend.png")); + } + + #hibernate { + margin: 10px; + border-radius: 20px; + background-image: image(url("icons/hibernate.png")); + } + + #shutdown { + margin: 10px; + border-radius: 20px; + background-image: image(url("icons/shutdown.png")); + } + + #reboot { + margin: 10px; + border-radius: 20px; + background-image: image(url("icons/reboot.png")); + } + ''; + }; + + xdg.configFile."wlogout/icons" = { + recursive = false; + source = ./icons; + }; + +} diff --git a/home/wlogout/icons/hibernate.png b/home/wlogout/icons/hibernate.png new file mode 100644 index 0000000000000000000000000000000000000000..bf2b0010414af5077f0a63d61a9b04c839038e9f GIT binary patch literal 4687 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 literal 0 HcmV?d00001 diff --git a/home/wlogout/icons/lock.png b/home/wlogout/icons/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..da59b10e1133cad9b2ff39bfb0e5148fd9d552a4 GIT binary patch literal 2983 zcmdT`X;c*16@FDz(?ugtEe#UZ>W&ITM*%@W1d68FMnF^;mvLd5umubtD2NUe%_=b1 z4$2~i=}}@55fF_6L8VzWj5;WS8?u@p(+G_*0kMU74aURC;UpRVr(UF{6U$q7rPgJ@ubIR6|Htdm!xY_f~_n!87|e0@xEYf`CYO8I49bpGq!EX7UQzh)wba+ zR%N|;^%mlL+wyCDV)QIm3e^@1%*@Wxyol7WPR}Z_$l=E;FilcA#pzV zt}jVm_xTEYyZ&X2Gt}Gc!6P}qsE#ThuyVV|1d@nuOBQH2Fy=^*tGF^8)I(0QU zTb6!q1SznW_T_PlFRgeJ#(KO`p6J$lLUk%KdDNz|ddktqgkE|;rykMNOulCrR9PJ# z7ZMXWQ}Tz22^EIV{{A$Nz&!X~RD~Pe1<=FojZ0k;bZSu^J7VA~e5l+JzFBcRB$=_E z-mc6cH63+p`?9rFu~2r_Q{e0u|Kw%&yA>aLoDhG?PF{sA1t`KCD}O~#8L6q#m1m;hmBA2*$( zGmV81zTl?gByPgb1fqFR&Q1L%`>(K(3AMZdMx$2uAn5$as6gZ7dBkA;oqLCLolC}t z3F+nHXGN9ljTXqM>8Oy%^6e{d$>bN>mlH3T+});_(MI9DJ zf3#y?x7-olrEi=pTyy?;eKjFOn~iE;>`3X7*yy!7rKNwxys4^9j$Ye0x;?M!m#i^R z^=G*(TAS}h*L3JQ$~dyvH9d%MYlCGAmRa|!V(YH*1K}uEjOW@cr@CFA=2YdD2Wpd# ztfMq7kb#QFt=TsFyo*7DTmNZVjfiVoyHjQ$JG^IlnO?-ASf@?=Oi11w2)Q13eN&q~ z6`^VyR|ullMX0nqss4vI9iSqu6@Z5HqcK@v|JUvm?cf3$O8dGS4a4tqqfA3mnr-?| zSs)^Hqal3+GvM8|GpKaQ2rxXB5RqErw(IB1DL_zBA=x(4LD~0Qy{5B91|}6t9%ic% z03*8Z2)#+V_?7KVw~Q;v0PQ=s6GUf>nFV}B(m?)Pqrj!Tz+Go_B-*Gp*NX-uT@%g- zS4EoLR7v`+ya(;x@Hh}tCW?~>XmDv@(WH^@(w-6Wx6$tCFKchih1fF)3asxGNqOvWEd&GqwNU{1X!~&c{|4xtJNQ=pO4q3lmIbNj|G7=zoBEtS z1Q!YbLyIB;QL_Xf)YGB*Rfxvl1C|L*xG{VuL8`?s=td@)x*6d(0&WgVB1h!0c;rm_ z08_e%eeGqjnh98wCeM%LC4$?!4gI~80u)+`njCjcfU1T|4hP*f3(fE1ni2B zv7bK64-e*lGTo1xeF4926xedkNt*=AsjVb1@Aw9;nc5O_f<7@k<_BB}diOw_A^e7l z^}oBkH-Lo&{C#+Ai<0jgjI*P8xU_BDUULi}9vVaTdn4d@%kbDskVS$Ot(6;RbpsDS zQR+S&m+4b%Ea2qi0WArRUgRs%F<%TRbVzJM%|zg~Vg0uVhYx}m_3lGB&LBAZz0c|` zpXKr1KqX(2tMq(O!s_KHeSfy5gh27Vu^^40CeNstrGmyKMidt#ZoB|lT>3=|)0aT7 gO~92+jjWntK4Oj7R%IN&0sr8Dr>l>kf*&CI5yMTGd;kCd literal 0 HcmV?d00001 diff --git a/home/wlogout/icons/logout.png b/home/wlogout/icons/logout.png new file mode 100644 index 0000000000000000000000000000000000000000..8a259220a62ee279915cb2fbf8a76a4a31487b6c GIT binary patch literal 3660 zcmd5;dvJ_d7C-mvN4~uD7x8Ekx&eQtva~CX{ z0}#A*&DJq-=k$S9GbUA)e4f?S5IAJ=fX1Sr`;!k(T<5iK%KTfE4{n6czmdPcT_gR?yAjQnsj}bazg4 z)#T59`!qeeyZl<#k}H?440+gZ;O3py#@-QU?yX-rr7_L4dHS%VFkwLF*x${(b3Wkw z&4SX(m3y@pUz`}XI$`wO8?ue6lSk8C)gvCA5Qb*W9TGMnuwS>d@x{LiyIj!I-epPL zt!0if&S)W6QPuFivAr}RheYt0unPZ~vBHNuX2 zwq1V`t_*0{k=<=1<1Ag9+n9aeDcLnjux#s7a3Z8-f!E&$+cILz+vU!bwcigbDRV|7 zsQ7-%yH=1+oz`9toKsSk{^`856nEjF=4Od3VQKyPxTI~kF7jC)#v1U8zm}*|Cj5A& z#!XAZC9I`?Br>=l9gQB#;>SmOJo4=7t?9J8;n*YqpSXC#*vaX4p53indS_gh=-+I= z?>0^AG3T){sZYbJ=?k6jg(;kihAsKdPPu=$liDfMm$iK{?U5%4Lu$F}jEzlqOK#A6{FOz4xZsbw&<# z)WSiv3U;n&==w+dqZbOkgdj6oq&!lQw{GGjYT{Q=pBxz-CjKyd>HYbXkFdZgcV4Y zU;;%M5=(>XoC00)bUdIa&8s@s6J2@R1)HR}v7x_Ulav!%)0XRWevB%j-ki0wS(^+# zfyXSuD3#J5s?CC=cGH=cQetc(=bq<{1!YE2gzIWxL^s4XaOG~>s4Na5mg!f!ejm$% zYPeeKy4qjLE0kPs)1xja9=yGIAMs{spDBafEsy0Ub8S0KrdB8wyhQIXi_s$fFL07&aAH&X1C8u{#yw!IS4`!QWRf$ zwztEj!`i_j^vm$qOIciTf=$xE1Aw0z;CB6U(lNPQ)-gkPUnCXXlL_@fT_^^1P!hu% zfF`P!<^Tmaf`FfxNf1qfPSOM9fFDnz2H{xE7Q~%6p?Kz;lf9vp5(V&GEJBT;Za`@>rVr|q)Q6ZOy`KcK;29xE8 zw6C64A(O^2K;{3yP0fg891+QK+BFzN4G<)106$R!&x#uKQc=TySf@%||w0>J~s7Vg6(&qSmRkwfjsPb8&g}IQkJ(Ubgt#;U$dFGOq-|aO%YS zJ9>h}HME0Ih+pjssozfv0l;2`9XWW`PHAF#DWZ3R6G=d0cJ z^wEXWBc{COp1wY_DjKYzz+q#Y0hTBxFnV^)m|CnpfvYIeou3QWS`abX5^%ldh4M%N~hjJFS=YLqNn$1!C~n@;(YfuxHEl|2b)f%$$WDGmc79Zx{!7}7SD;Gb++Kyjk!@%^$pmnQ@tUlXB{?C z!RVaEAuXQL4>y zEJr_8q%ncjrg0Dn?0SBvoTyoTBCGw-F(1JtP}f(!N5O)$^WdKBJu6F3Tdf>#5+Cdv z90NNrE=&03EwwN$Gf_r`!1VN$i=RxK^B~~csSI|a)Bq3^DG+#|+>9s?H-*k7;j|Cgq%yet z`X4#32Vr-}@bfOmWtH*=gCX(GOzSgz#AkqXutiQ=UEzMvQ%M}QAi$QFub_zDv=zCSTcJ#slV-Q0ZFEjI+~AIOD1K2T2`Q!8KHd!~30LJR|_xzY#hqWSFY zd##GcAw>EfHP7?~djOOXb{uc<<xv8|x%`A7uvICu%9ae=)SATBQfI+y@_ldJYl7t2Ivao{5h-?AO2KS7Zro XozeZ!hS_t6Q=0hb1jErtW9B~r%&1|! literal 0 HcmV?d00001 diff --git a/home/wlogout/icons/reboot.png b/home/wlogout/icons/reboot.png new file mode 100644 index 0000000000000000000000000000000000000000..e5fd221a9c500a324ecffd921e18309db45eade2 GIT binary patch literal 3957 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 u{}KBqx@M&pESmdT1x5DuWAXfbub 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 rO~qnnl5T``QYZliqa><(dQaOWm#UD+aTtF9.useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.eno1.useDHCP = lib.mkDefault true; + # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}