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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
O`_9wV&t;ucLK6VPO_+QD
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
zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelajGwq`mz2Y5O=D-;yvr)B1(
zGB9XNtet4aQ0lJqlSJ(89GaEaU3ICztdyE=^dn!-8ua
zE4#heYCgSlyR3F_H9cVOSlvB&QTLP|`~(Q{Uz};O;Q@6a_Zf+|jz}N5
zJbT;0%J~*2K5g=<@v}+0#M&vpb6v%sW0uc19WZWAGcxp-Q4uTlU1MT+dbZR@kwTBF
zC8xxLs44<~suUNuRCy7(YMMGn8gHldQ=2g#)6Bhi<;Ql}1
z_4E@tmg=z_IM_gZdAb(!sR~R0rz)gyT_0|NtFlDE4H0~q{t
z-d)eYz`$AH5n0T@zRzu$OrHy0Sm#6y-MHoB47>FaraRho_5UNX4zU
zcMlfb@)B_kobu>@eWYaSi-cswm*3*Df2kSr|H?5feEJb=IQc}wbu;~ghTm%M@8y!O
zXwIAcU88});7bw%17pI6qYMm82Oe-UGO#pU6lY@KU|6ir#BhSG;h{JqgA3Dv7u<{t
zPK*gZTpPj}6+{@?Q+{C1ELKa`mmSQ;L>voPp9?EeUt
z$YbcSXV}4L@Mi}rLjiNbA4UfTiFyW!M`qU-w9UVK|Ia=)hC3h;0fuAp4AaV9imv$h
z{1bn}dPW9wkO)h|M|K8Am^QE?kWfPzNKXfA!$A*N>;D<-_k)B5co;r>;TPa$@c+;7fQ`ZCFSC!Wu%!UUCtmP$y8IIjQz(0R-Z>C`J=bS1_1HXiT
zT>W#AeD;Qq-xo4H>)-#m>;0$ojK2&RyLLP1sK5lW7^DH@Bao>Kf*?~Fl)x4Xf=yKdJIn=ae+Ss50$?X9Fo86nI0Hok
z%r*rgZG-rs18kcBBf9el*~ah_6xd1)383H*bT9yije-Ot6N3YbKo0{Wg8~zW8`$G4
z$_@++9SlvN;C5j+NCj;QOkl$V7{P{hK-}O0b_0VF*bNMVU^g^yfZgE00(JvQ+74Vk
z-O0~=U`_Gcjvqn{618AUdh8qwnEuEz9II#Ov48N;ogv`|qe}zBf!VSLc4~l1k8|#f
z2iBNx`^avg$Hc-g?-yfJ`Z9(CKbTq0`!P0rWapT-kcokzi3OA`n$lN7WI`Y^YmsEu
zFfcHfGdy@Hzo6h67Xw29GXnz$gGJ-(`i9TvV;C72@)#Hx7#ZZB{gQt$YjZdQLxVH}
zg9EtgXAodu0Htjf22jxi${QS5rFLx3y=}Ih>A=tQ^%yKZ1#2I|G9w6N4awfK4zfgA#*6#WXGk1`az9PKG;7
z3@n@sE({JI-iR=CFf=@vsmUPmxlN3T;kc~gj13$N9P_%F8aC#aDKdQc
z=RA?YfrH`5vHu?{Z05z;h5Z(I^Lt;lE5l=b1_5SXJC-{|KJBVNUq=yD+9wZdy9We3=EIuW$GCj8b0#(?Pp*(
z@Pqw$JV;wJaoQ68^wxt6Yxt-RGVH()VUS@7e>g#g8T?}b875KR1Tw709_)r=^TBR-
z>_2F9Afy7i2=9a`#-va4etj|6to|9Ze4R%T$xJM{fO$QcbFKO}%W4OgE4a<=dfUQlXd02$`b$N-m=Fj_AON=PuL
z7=V1*W6$)!?T?lM*f6k57JiF4Fu$MPzf>war
zq4F;F+Dr#P^6m^B3vJ_!TL@(7_E@YxWmH0!Qdajpuhm~I70z9
z14DOZ^%+}F!(YAnDU9Zz!s`PIE5qsEUpszlHEhhU6Xf2($iTqTuv~*7;#T70x2qZ4
z>KIsb9`33kG
z6hRdNdxL<%KZX`&2Ofz!hDVGFEIsxhtC^3aQ0lJqlSJ(89GaEaU3ICztdyE=^dn!-8ua
zE4#heYCgSlyR3F_H9cVOSlvB&QTLP|`~(Q{Uz};O;Q@6a_Zf+|jz}N5
zJbT;0%J~*2K5g=<@v}+0#M&vpb6v%sW0uc19WZWAGcxp-Q4uTlU1MT+dbZR@kwTBF
zC8xxLs44<~suUNuRCy7(YMMGn8gHldQ=2g#)6Bhi<;Ql}1
z_4E@tmg=z_IM_gZdAb(!sR~R0rz)gyT_0|NtFlDE4H0~q{t
z-d)eYz`$AH5n0T@zRzu$OrHy0Sm#6y-LR@6$_p!oa{==;`7ZQgQ3;
z-N3Tj76L2|m;Jx*H~KvNxk{hUtpyw<;jszkLd%wO-a2_(8f-k-gv{pmzuyHn#Lez!
z(0Tpv;HKP7tRf5tF7Ie!;9`jQq`|&`p~1C33B>uK!Lop%A+k#{5?bB$7Ugg!y*hD{x}LwNaVf0)43U>OeUD&z$125hiRG&2|t^a
z6izGcPiAKUnOqt6O(`wmTpI&fpaAe%hXmpmBVVZryvA>mf84^4g{QHZ}
z@-nos82tX1lgD77(4g*l^BEfhGt&u{`aV|;1~%D*pE(n9pI5Rb>|p#C!_&Q2DC4a8
zdIkd-hupLi=Bx~d8K8|Fy=w%x(F;Sb}o^D>s^^OzC@7?+)svs})QpwY02XHqd2LmQLE
zX(gzD&!pn(pQ9PX><{c%YV^RICFO3mUA8&HH2VW4k*crb+`$H&(1~2mkf6}8>CL24
zE(SIxjnf8D0iDTE0TZY|4otuz(wx0saKcmn(;MXfcstK=Juxej^}wg&53CO>u!}Gp
z>{NZ<)6CS6aAZ;WKSxG~ABi_-a|bX86h-_P*BmSJ7cahtN6X06A!D6z5h9p
ziRri9AG|#9h~3yf{u!r_W5UPgpYDtYK1Baf;LbSVV9(s}l>eMkZ~Arj1s}PiC-8oG
zy3oM%ftdXXPOjpM+6>OQKbwuc75~c^IEm=l?3a_7F;$wu|Nk_5i_<3aeB~RT>gza8
zyD)uv9s|#sr~KzET16OGlr3JH%yX4*Twb5ZVbr$oPYH8^fo{D4vq%twKuv;JhE25{
zlmGuid@203m9N+iFhu=JaMM`Apm5{Bngt9MzrJg7m>3vqFif*=;yJ^|#lT@;;M_7t
zA7tJ_)}pR`Yf3?GPV091%IdIMEFj@n0E13Fi|`Cn5e5N|gl7Q^Hh+~n9O@P_B>as2
zm+*5jgM`9q`3bQa3~VPpv8RZ0fzmTbROz(*glG+hh<^=F`
zt0D2z7yeINA`BowM@EByY4#_y0vI;@Iryo48&kpxoqC2lp!~xw>Y>lj#x)`M0ULw=
z|Ae2;Rg4A^)9g=Z6o8yK&3=hE!(rAF>IKXV%j-A%QQXTQVQ^YLMR*6}flutGvVFwA1t0^T@)xom*ueOS;|{}vm-0IG9{LPy=RUDVvg9!^fO&1_F590_
zEMNvHW`dZyjzPliwEPqP9gLvN&iLWW`(TFC@{hP06j`3|K@Fb}$H1ecP<()wVcx%k
zpV(Osd}7zB@6cvo6PjQOb$c@tL&8tz7)FB`^Zq#=YmjDOaA5rKg}>rg`wpfA3&sPy
z3=Ql&0Ss0<|FJtTGB9l7YItqw|6d{g051arDB9Q?b}&7t;$yhOz`(%eAb7_JomL%YrQ7DjvNAB-
zVYqXipP|Z%alr-#28~+pe%2Z!g
z1_!|f86UM77?_!&B@>n|UC+S4!fIL5F3%*Q!l1$My`Ys1WETS~1497FwIFKRQ*#i-
z021WTX86a)z)-*p@)-lfgPMQ16d1Tbfx>{5f~bNjMolqwguDfvoIj(7HN>F;{$vCgdRhkr~r~FpPS*P
z{JB$NU-|ym@59p{n=2!SkBs?K>oj}z4-dIN6*DmGU}OM!*@4mHNht>?v?fF|{CObF
zu!C{Mb5m&W?O$
zkRS^4n2l-yFh6>j}a8X4aU=Uhkf7j`^o7q
zv*0GYo*GBrpy*l`Jg{PE%T
zr|={5iuh|z#<79|v40YaLk#1G5^jb(h5~K|2XDp#ZUzXufvG`=;lTYx>(1$J7mnX^
zT@9S#%o*|+?=UeuU~33DCDg$5V5Jy?2*VvFh6y^~GH)hXR|?#j19Ffr$PgV3<5C8M;JfSl(ffP%){T5V^^j(I7w~WkTqtQXh}oQhL(jnZ-yRKyS<4&QHZ!|_o7aEff@Xw5`;%5_27!!(
zuma`;hKuhU-<{xKJz$V@!13OR4vsiRg%1aG9_!_iOd<_vAOE;oGc
z>M{7dgRww?Roi0m1GWPTw38J0&sgR$2<&*E(J8hi~>xDn9l5(8O9*M
z;lzAqXQbZe4}ueO2tC<=;20(IuxELfe%^oBJs)QGCFo+>I
zEDRtSg34feK(*rn4v^IhUSLN-Ib949f8cIcf^e8X${K{g$}}Jx6d5H3F?$UL4W@*T
z%}fpWIa~}H%n2_SGk}$Gf%PnAXfR@!W(Sgq__ctcL8;*=Kb&LKuoS^@YG}pautfY=
zz|atsaFdyfL4#Gy4$Qd-;;>J%(O_tpl(3VT?EVi#aQ0lJqlSJ(89GaEaU3ICztdyE=^dn!-8ua
zE4#heYCgSlyR3F_H9cVOSlvB&QTLP|`~(Q{Uz};O;Q@6a_Zf+|jz}N5
zJbT;0%J~*2K5g=<@v}+0#M&vpb6v%sW0uc19WZWAGcxp-Q4uTlU1MT+dbZR@kwTBF
zC8xxLs44<~suUNuRCy7(YMMGn8gHldQ=2g#)6Bhi<;Ql}1
z_4E@tmg=z_IM_gZdAb(!sR~R0rz)gyT_0|NtFlDE4H0~q{t
z-d)eYz`$AH5n0T@zRzu$OrHy0Sm#6y-J(yK}$4nSp^%!qdeuq~g}w
zyBG6htoc|j1U~rx|LM8e%`6)p&zu+~@_Nqq-5zh!HqJ`UKgOK#de^$wbN|=%7}kg`
zR6oo+ZJ!YX7em5JZRQ0G3}XA0K%9@-ObZwortKGE;9{7t>(5k%0EUJGN7r*SFfp{~
z*Q+v!FesG#)Mi}3z_9RiJZHnLx}QP}4crV5-rg5w5Mem*DV)iHkwK?kl_BbbF$2Q`
zCWeaN<*W?i3=9WY89sb_&&8m}z|g?Nz%b{KB%hhL_5b>|{(i;-tPBhR3=9oN=R8PQ
zeC6~1bcUZ23^5E03=nawlmjCJg9rlySri^)G3}~2+OF>?f4wyJ{h#m2Jr7rN6gl~&
zeCXwoPiwyS{dc(wL*=m)7A}U;>1~SP3^vj8bnkn!Hatj8JRr(&eoFeO?;(r|6`m3W
ztOqtfiTqS+JO4hD!If!ZCpur&%ULdDxKMIYDsMx^(<3+MWb&N-%|Eete#4hH6=gN+
zV;N3Fb41zAu(VvrAYi4?CVghsoB#$6S)RkZX+C}$3=$j;ekW{L8>ToK+-O(>l3{4(
zP4f!7^8C7y&6n45di%dUj{MM5;bz0F$G}m;aB~Gi#eu)IjK(U)A`JXy44Z-&KREo}
z-F#<)v<8D*3d7A#rU#5{Dedc-xf476_O2>L`t_Joi*V!g0
zYcR<9Fhs6qc+ki)VJ8=ZoD0Lv)eH|9StcChYG6O#%-+Dn&>+qoZ_IjtxqZE~LbM12
zzf}M6WKgPOxVeU*;sC>hi(C!t+$WxSsjU`e;1^*qie~(vz^JfWl!0G>L4$$efvO+l
zhX)J_r$rg~eR%73Nltjl)xgf`5IOBFR|7i>gXDS!1_rK%v
zGVnK}}(UHZg
z;qF2Pg&GD`8CHkp&3_n;Gut&7_7yg<8O$#0WNK(&Jfp$Ya7-eUg=-nfCrCCc!;zE^sJXKd*0LOljHUI(+C
z3>j_=6E?h#VKB*IkbKItKu}VLA#&=5&oSUKqgToyO_RaA;2*n!Z|mLXOba}jPw0WY
z!qLzo`+|v~VY-Ak0}o$=PB4R5(LZ*DyXRtGFfA}-K4BsbDjgz@{EQD~OOdWFU&PJ8
zu!CWNBJ&9g)&$1q^$a)mOUE*pBr`-lXJTN`V3=(AKl=!S(fVV3C5#LV;tVE<3^$iE
z_&oW;&rn*nl)HhAM}avOR3;?|J+D72-VkMdnU#S--x*w>88m+0e~eo}`1M;qaR!D0
zMu*F+ppr@7o$J8nnt%KZrsXTR8``)Pl))x|O1pUvKmXrvnag;JQ+VQH`H4sGM>1wYWG#R#_5)^phCG}
z`pSK*2lyG74oGb-Ujz2BLGxr$1}+AMij_ei*E29!>}2@C%fJwk{cK$+?_1PPH!7c{{>z|JKUf{40VPKeX@@go=8=$~}mfpAvW2sO5K@1B(S)BnJ
zr33<>sXSx}5*}*dROx4TcLbk2LT6l!sa-!oV@HM5z29JJ{9(
zq6h8^27nzO!}#a!gO4B9Z_r|pbJOvvS9f4!;J$pH6;v%vWp&uio`3EW%flrTd
zclYw6{9FtIAuKv|0SpaJt_i7<8@?=z%scZ-{*&a6h9&dLpI5oW!J)yBz%0K|
zi$N}l!D1=H4@U=v6?=nY8Dbb2QkHQ;B0yL7@0xp(&*$rJo8QZ@!My7YuQ&q(#}ZJ$
zAMo;vW-u~Z#PH*cG(*tX=F|1=?*mRzifx)BTcVyh_-;bmpDhnOB
zz2Ei$IH^h*HmrI4hUvi-UWVW0i@6)pcoZJTFfcT*+&=el)&ukVBJz_N?)^*M2X=kN
zDF&n7V(tcGbB32?@0`RLdL0-}y=y1DF_6rgJxFGcc&U
zu@h(Tm2yafs=9OJI71tkg6q_|&zTmmFr3g3XXxc%5GtF?-O$FXFk9$!N4rNi%Y@sN
zJKr)fFf@uV^h!I3u}aCUIK02nj*B5>>zXn~28O=93>nkbF*Izimwe0A;K-7~r^$LC
zTDRfp`?vR58Jsx}oGD7$m^qu_lZAeNECY{5Lk?%iK8A|LtQ-F9{kxkXA%by6V33X}
zuZY99XQ}JC8xFEgP}F0PbITQRxTp4HEjOs~#@)aktj(%ZFI04m^*{jg1Ez$TnJXH^
zS%o%TWj)Zqe1c7!fq(Tju84msPhNhwP?f=Wdj1}nuYwH+*;5!gpB`oI@n(ql_at>W
zH$xM{85=zYxwKrd4SzgOc#AVIoR$}7;NKSZnu}qYJ*TCm%>xalgrAeA_u4TzBs4^-
zZ9G$PqmYx~^!z&gxV*m_YF8CSSD0HNuAfv
zAYhPS=BZ=e#v#`0B{EjJ#m(b&ZeGY}=@!@b
zQ<8y2SjH$mjYpip+pC*xXX~9H2A;`@OqH#Bs`~mF1Y!b8>dpx0F-)6W#`}r$=Mn}9
zBWJcE&YepbB+QuEH*rLMQL$%kSio%D$ldVJnVJ2ja~ITL2LnoM9pFTXZQasX5e6S
zWJtSrMw@|yWg)|}J9D%dIM^8*cOJ{pX5ip%Y>Ygnqs_p<`>^rn(LY)Y9D<2WGmoCp
zVqjuD*d%$hM~i`p&9Qmr5g#oECia8Pl1F&77??O5TV@_UqshR;`LN~Zp&CsFC$7fU
z$U{1s3{BjMX?X_b8VrYc9;VqD$ZIe-@f}QOGho(WU=n!vLh|_MUM2;Fhr1_yjY;~c
z&7i@=Ahw^WL5Lv%#9?HZMt~FXPlG{&so`ipNDqkP)gZ(GrWqQZ_A@QuV2Jpm!Qchq
zu%OFufo0Y+EC9)HF?2B`e2o4B5={8Hm|+12gP1*>!@@Al9-;zW21OZ!)5QQbfCX$o
z7emCK1q=%~K#pYa0y_c90m*2P0JqG14Cwy#XYEWXBW(V>zlp|)Z!JxsM
z@Uoey!H5COVS;j|*>Qno7Be&$F+eyGzZNhw7&R>A=VH)ciTHueacXD<$*@LzTfoo|
z)Q}3|u!-3&U}z{xILXY#pusuK8r)OFL!9|4&2GiCFGQ!{7f6+-tDnm{r-UW|QtWq)
literal 0
HcmV?d00001
diff --git a/home/wlogout/icons/suspend.png b/home/wlogout/icons/suspend.png
new file mode 100644
index 0000000000000000000000000000000000000000..af099b9c9f95dc8a7bbe81eebe21badd83719cff
GIT binary patch
literal 4510
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
U{Xv+K6sTM8>FVdQ&MBb@07Q;M1&
literal 0
HcmV?d00001
diff --git a/home/wofi/default.nix b/home/wofi/default.nix
new file mode 100644
index 0000000..5cf0329
--- /dev/null
+++ b/home/wofi/default.nix
@@ -0,0 +1,95 @@
+{
+ programs.wofi = {
+ enable = true;
+
+ settings = {
+ allow_markup = true;
+ width = 250;
+ show = "drun";
+ prompt = "Apps";
+ normal_window = true;
+ layer = "top";
+ term = "foot";
+ height = "305px";
+ orientation = "vertical";
+ halign = "fill";
+ line_wrap = "off";
+ dynamic_lines = false;
+ allow_images = true;
+ image_size = 24;
+ exec_search = false;
+ hide_search = false;
+ parse_search = false;
+ insensitive = true;
+ hide_scroll = true;
+ no_actions = true;
+ sort_order = "default";
+ gtk_dark = true;
+ filter_rate = 100;
+ key_expand = "Tab";
+ key_exit = "Escape";
+ };
+
+ style = ''
+ /** ********** Fonts ********** **/
+
+ * {
+ font-family: "SFProDisplay Nerd Font Bold", archcraft, sans-serif;
+ font-size: 12px;
+ }
+
+ #window {
+ background-color: #0B0B13;
+ color: #D9E0EE;
+ border: 2px solid #1B1B23;
+ border-radius: 0px;
+ }
+
+ #outer-box {
+ padding: 20px;
+ }
+
+ #input {
+ background-color: #1B1B23;
+ border: 0px solid #B4BEFE;
+ padding: 8px 12px;
+ }
+
+ #scroll {
+ margin-top: 20px;
+ }
+
+ #inner-box {}
+
+ #img {
+ padding-right: 8px;
+ }
+
+ #text {
+ color: #D9E0EE;
+ }
+
+ #text:selected {
+ color: #0B0B13;
+ }
+
+ #entry {
+ padding: 6px;
+ }
+
+ #entry:selected {
+ background-color: #B4BEFE;
+ color: #0B0B13;
+ }
+
+ #unselected {}
+
+ #selected {}
+
+ #input,
+ #entry:selected {
+ border-radius: 4px;
+ }
+ '';
+ };
+}
diff --git a/hosts/default.nix b/hosts/default.nix
new file mode 100644
index 0000000..2c43ae3
--- /dev/null
+++ b/hosts/default.nix
@@ -0,0 +1,3 @@
+{
+ imports = [ ./tuigreet ];
+}
diff --git a/hosts/tuigreet/default.nix b/hosts/tuigreet/default.nix
new file mode 100644
index 0000000..55688f4
--- /dev/null
+++ b/hosts/tuigreet/default.nix
@@ -0,0 +1,30 @@
+{pkgs, ...}: {
+ services.greetd = {
+ enable = true;
+ settings = {
+ default_session = {
+ command = "${pkgs.greetd.tuigreet}/bin/tuigreet --remember --time --time-format '%I:%M %p | %a • %h | %F' --cmd Hyprland";
+ user = "greeter";
+ };
+ };
+ };
+
+ environment.systemPackages = with pkgs; [
+ greetd.tuigreet
+ ];
+
+ # this is a life saver.
+ # literally no documentation about this anywhere.
+ # might be good to write about this...
+ # https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
+ systemd.services.greetd.serviceConfig = {
+ Type = "idle";
+ StandardInput = "tty";
+ StandardOutput = "tty";
+ StandardError = "journal"; # Without this errors will spam on screen
+ # Without these bootlogs will spam on screen
+ TTYReset = true;
+ TTYVHangup = true;
+ TTYVTDisallocate = true;
+ };
+}
diff --git a/nixos/configuration.nix b/nixos/configuration.nix
new file mode 100644
index 0000000..2a74a28
--- /dev/null
+++ b/nixos/configuration.nix
@@ -0,0 +1,101 @@
+{ pkgs, ... }: {
+ imports = [ ./hardware-configuration.nix ];
+
+ # Bootloader.
+ boot.loader.efi.canTouchEfiVariables = true;
+ boot.loader.systemd-boot = {
+ enable = true;
+ consoleMode = "auto";
+ };
+
+ networking.hostName = "hadi";
+
+ # Enable networking
+ networking.networkmanager.enable = true;
+
+ # Set your time zone.
+ time.timeZone = "Europe/Paris";
+ i18n.defaultLocale = "en_US.UTF-8";
+
+ i18n.extraLocaleSettings = {
+ LC_ADDRESS = "fr_FR.UTF-8";
+ LC_IDENTIFICATION = "fr_FR.UTF-8";
+ LC_MEASUREMENT = "fr_FR.UTF-8";
+ LC_MONETARY = "fr_FR.UTF-8";
+ LC_NAME = "fr_FR.UTF-8";
+ LC_NUMERIC = "fr_FR.UTF-8";
+ LC_PAPER = "fr_FR.UTF-8";
+ LC_TELEPHONE = "fr_FR.UTF-8";
+ LC_TIME = "fr_FR.UTF-8";
+ };
+
+ # Configure keymap in X11
+ services.xserver = {
+ xkb.layout = "fr";
+ xkb.variant = "";
+ };
+ console.keyMap = "fr";
+
+ nix.settings.experimental-features = [ "nix-command" "flakes" ];
+ programs.zsh.enable = true;
+ users.defaultUserShell = pkgs.zsh;
+
+ users.users.hadi = {
+ isNormalUser = true;
+ description = "hadi";
+ extraGroups = [ "networkmanager" "wheel" ];
+ };
+
+ # Allow unfree packages
+ nixpkgs.config.allowUnfree = true;
+
+ environment.systemPackages = with pkgs; [ networkmanagerapplet ];
+
+ nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" "nix-2.16.2" ];
+
+ hardware.opengl = {
+ enable = true;
+ driSupport = true;
+ driSupport32Bit = true;
+ };
+
+ services.xserver.videoDrivers = [ "nvidia" ];
+
+ services.gnome.gnome-keyring.enable = true;
+
+ hardware.nvidia = {
+ modesetting.enable = true;
+ powerManagement.enable = true;
+ powerManagement.finegrained = false;
+ open = false;
+ nvidiaSettings = true;
+ };
+ hardware.bluetooth.enable = true;
+
+ # Set environment variables
+ environment.variables = {
+ XDG_DATA_HOME = "$HOME/.local/share";
+ PASSWORD_STORE_DIR = "$HOME/.local/share/password-store";
+ MOZ_ENABLE_WAYLAND = "1";
+ EDITOR = "nvim";
+ ANKI_WAYLAND = "1";
+ DISABLE_QT5_COMPAT = "0";
+ NIXOS_OZONE_WL = "1";
+ };
+
+ # Sound
+ sound = { enable = true; };
+
+ security.rtkit.enable = true;
+ hardware.pulseaudio.enable = false;
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ jack.enable = true;
+ wireplumber.enable = true;
+ };
+
+ system.stateVersion = "23.11";
+}
diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix
new file mode 100644
index 0000000..2b5308b
--- /dev/null
+++ b/nixos/hardware-configuration.nix
@@ -0,0 +1,42 @@
+# Do not modify this file! It was generated by ‘nixos-generate-config’
+# and may be overwritten by future invocations. Please make changes
+# to /etc/nixos/configuration.nix instead.
+{
+ config,
+ lib,
+ pkgs,
+ modulesPath,
+ ...
+}: {
+ imports = [
+ (modulesPath + "/installer/scan/not-detected.nix")
+ ];
+
+ boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "usb_storage" "sd_mod"];
+ boot.initrd.kernelModules = [];
+ boot.kernelModules = ["kvm-amd"];
+ boot.extraModulePackages = [];
+
+ fileSystems."/" = {
+ device = "/dev/disk/by-uuid/6c2487ec-20ff-4ce3-9396-281c2094aba1";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" = {
+ device = "/dev/disk/by-uuid/B4EA-C54F";
+ fsType = "vfat";
+ };
+
+ swapDevices = [];
+
+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+ # (the default) this is the recommended approach. When using systemd-networkd it's
+ # still possible to use this option, but it's recommended to use it in conjunction
+ # with explicit per-interface declarations with `networking.interfaces..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;
+}