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; +}