From ecd8b1c9cf603a3873ae875f73d962f7d483de0a Mon Sep 17 00:00:00 2001 From: th3r00t Date: Wed, 20 Aug 2025 09:21:10 -0400 Subject: [PATCH] Copied home-xps13.nix to home-server.nix --- flake.nix | 22 ++ home-server.nix | 539 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 561 insertions(+) create mode 100644 home-server.nix diff --git a/flake.nix b/flake.nix index f3e59cb..e17f3e5 100644 --- a/flake.nix +++ b/flake.nix @@ -54,5 +54,27 @@ } ]; }; + nixosConfigurations.xps13 = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit overlays; }; + modules = [ + { nixpkgs.overlays = overlays; } + sops-nix.nixosModules.sops + ./configuration.nix + home-manager.nixosModules.home-manager { + # home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.sharedModules = [ {nixpkgs.overlays = overlays;} ]; + home-manager.users.th3r00t = { + imports = [ + ./home-server.nix + nix-index-database.homeModules.nix-index + ]; + }; + # home-manager.users.th3r00t = import ./home.nix; + # Optionally, use home-manager.extraSpecialArgs to pass arguments to home.nix + } + ]; + }; }; } diff --git a/home-server.nix b/home-server.nix new file mode 100644 index 0000000..3df6389 --- /dev/null +++ b/home-server.nix @@ -0,0 +1,539 @@ +{ config, pkgs, ... }: +{ + home.username = "th3r00t"; + home.homeDirectory = "/home/th3r00t"; + home.file.".local/usr/bin" = { + source = ./home/.local/usr/bin; + recursive = true; + executable = true; + }; + home.file.".local/usr/lib/blightmud" = { + source = ./home/.local/usr/lib/blightmud; + recursive = true; + executable = true; + }; + home.file.".config/nvim" = { + source = ./home/config/nvim; + recursive = true; + executable = true; + }; + home.file.".irssi" = { + source = ./home/.irssi; + recursive = true; + executable = true; + }; + home.file.".config/dosbox-x" = { + source = ./home/config/dosbox-x; + recursive = true; + executable = true; + }; + home.file.".config/waybar/power_menu.xml" = { + source = ./home/config/waybar/power_menu.xml; + recursive = true; + executable = true; + }; + home.file.".config/qutebrowser/blocked-hosts" = { + source = ./home/config/qutebrowser/blocked-hosts; + recursive = true; + executable = true; + }; + home.file.".ssh/allowed_signers".text = '' + * ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH8P/3yzsruekSaZ9b+yk429VTcfCtI1j8jnkNbPAgnr th3r00t@nixos + ''; + imports = [ + includes/hyprland.nix + ]; + xdg.enable = true; + programs.nix-index.enable = true; + fonts.fontconfig.enable = true; + home.sessionVariables = { + EDITOR = "nvim"; + BROWSER = "qutebrowser"; + PLATFORMTHEME = "kde"; + }; + home.packages = with pkgs; [ + autossh + mesa-demos + bluez + bluez-tools + bluez-alsa + fastfetch + ranger + kdePackages.dolphin + zip + unzip + xz + p7zip + ripgrep + jq + ripgrep + eza + fzf + tmux + cowsay + lolcat + fortune + gnused + gnutar + gnupg + hugo + bat + which + nix-output-monitor + devenv + irssi + luarocks + lua5_1 + gimp + lua-language-server + go + nodejs + uv + readline + cachix + sqlite + rofi + qutebrowser + foot + vifm-full + ranger + zoxide + hyprsysteminfo + ( + python313.withPackages ( + python-pkgs: + [ + python-pkgs.prompt_toolkit + python-pkgs.pygments + python-pkgs.pynvim + python-pkgs.pudb + python-pkgs.ptpython + python-pkgs.ipython + ] + ) + ) + neovim + zig + nodejs + go + syncthing + dosbox-x + lazygit + wofi + qutebrowser + waybar + uwsm + gopls + pyright + ncurses + rustup + wayvnc + power-profiles-daemon + wpa_supplicant_gui + gvfs + ]; + programs.wofi = { + enable = true; + settings = { + location = "top-center"; + allow_markup = true; + width = 400; + }; + style = '' + /* Base */ + window { + background-color: rgba(17, 24, 39, 0.6); + box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1); + border-radius: 1rem; + font-size: 1rem; + } + + window #outer-box { } + + window #outer-box #input { + background-color: rgba(17,24,39,0.6); + color: #c0caf5; + border: none; + border-bottom: 1px solid rgba(17,24,39,0.2); + padding: 0.8rem 1rem; + font-size: 1rem; + border-radius: 1rem 1rem 0 0; + } + + /* focus states (no #window!) */ + window #outer-box #input:focus, + window #outer-box #input:focus-visible, + window #outer-box #input:active { + border: none; + outline: 2px solid transparent; + outline-offset: 2px; + } + + window #outer-box #scroll { } + window #outer-box #scroll #inner-box { } + + window #outer-box #scroll #inner-box #entry { + color: #c0caf5; + background-color: rgba(17,24,39,0.1); + padding: 0.6rem 1rem; + } + + window #outer-box #scroll #inner-box #entry #img { + width: 1rem; + margin-right: 0.5rem; + } + + window #outer-box #scroll #inner-box #entry:selected { + color: #c0caf5; + background-color: rgba(38,50,56,0.1); + outline: none; + } + ''; + }; + programs.neovim.plugins = [ + pkgs.vimPlugins.nvim-treesitter.withAllGrammars + ]; + programs.taskwarrior = { + enable = true; + }; + services.syncthing = { + enable = true; + }; + programs.ranger = { + enable = true; + extraConfig = '' + + ''; + extraPackages = [ ]; + mappings = { + Q = "quitall"; + q = "quit"; + }; + plugins = [ + { + name = "zoxide"; + src = builtins.fetchGit { + url = "https://github.com/jchook/ranger-zoxide.git"; + rev = "363df97af34c96ea873c5b13b035413f56b12ead"; + }; + } + { + name = "tmux"; + src = builtins.fetchGit { + url = "https://github.com/joouha/ranger_tmux.git"; + rev = "05ba5ddf2ce5659a90aa0ada70eb1078470d972a"; + }; + } + ]; + settings = { + column_ratios = "1,3,3"; + confirm_on_delete = "never"; + scroll_offset = 8; + unicode_ellipsis = true; + }; + }; + programs.fzf = { + enable = true; + tmux.enableShellIntegration = true; + enableZshIntegration = true; + colors = { + fg = "#d0d0d0"; + bg = "#24283b"; + hl = "#5f87af"; + "fg+" = "#d0d0d0"; + "bg+" = "#414868"; + "hl+" = "#5fd7ff"; + info = "#afaf87"; + prompt = "#d7005f"; + pointer = "#af5fff"; + marker = "#87ff00"; + spinner = "#af5fff"; + header = "#87afaf"; + }; + }; + programs.tmux = { + enable = true; + baseIndex = 1; + clock24 = true; + disableConfirmationPrompt = true; + keyMode = "vi"; + mouse = true; + newSession = true; + plugins = with pkgs; [ + tmuxPlugins.cpu + { + plugin = tmuxPlugins.resurrect; + extraConfig = "set -g @resurrect-strategy-nvim 'session'"; + } + { + plugin = tmuxPlugins.continuum; + extraConfig = '' + set -g @continuum-restore 'on' + set -g @continuum-save-interval '60' + ''; + } + tmuxPlugins.yank + tmuxPlugins.vim-tmux-navigator + tmuxPlugins.vim-tmux-focus-events + tmuxPlugins.urlview + { + plugin = tmuxPlugins.tokyo-night-tmux; + extraConfig = '' + set -g @tokyo-night-tmux_window_id_style digital + set -g @tokyo-night-tmux_pane_id_style hsquare + set -g @tokyo-night-tmux_zoom_id_style dsquare + set -g @tokyo-night-tmux_show_netspeed 1 + set -g @tokyo-night-tmux_netspeed_iface "wlp2s0" # Detected via default route + set -g @tokyo-night-tmux_netspeed_showip 1 # Display IPv4 address (default 0) + set -g @tokyo-night-tmux_netspeed_refresh 1 # Update interval in seconds (default 1) + set -g @tokyo-night-tmux_show_path 1 + set -g @tokyo-night-tmux_path_format relative # 'relative' or 'full' + set -g @tokyo-night-tmux_show_battery_widget 1 + set -g @tokyo-night-tmux_battery_name "BAT0" # some linux distro have 'BAT0' + set -g @tokyo-night-tmux_battery_low_threshold 21 # default + ''; + } + tmuxPlugins.tmux-fzf + # { + # plugin = tmuxPlugins.tilish; + # extraConfig = '' + # set -g @tilish-navigator 'on' + # set -g @tilish-default 'main-vertical' + # set -g @tilish-enforce 'none' + # set -g escape-time 0 + # set -g @tilish-dmenu 'on' + # ''; + # } + + ]; + prefix = "C-a"; + shell = "${pkgs.zsh}/bin/zsh"; + # terminal = "xterm-kitty:RGB"; + tmuxinator.enable = true; + extraConfig = '' + set-option -g update-environment "DISPLAY XAUTHORITY WAYLAND_DISPLAY XDG_RUNTIME_DIR HYPRLAND_INSTANCE_SIGNATURE" + set -g focus-events on + set -g escape-time 3 + set-option -g status-position top + set-option -as terminal-features 'foot:RGB' + set -g default-terminal 'tmux-256color' + bind-key b choose-tree -Z "run-shell 'tmux swap-pane -s %%'" + # bind C-p display-popup -E -w 60% -h 70% 'tmuxsessions.sh' + bind C-p run-shell 'tmuxsessions.sh' + bind C-d run-shell 'dotfile-picker.sh' + bind [ run-shell 'project-picker.sh' + # bind C-c display-popup -E -w 50% -h 50% 'nvim +":cd ~/org" ~/org/refile.norg' + # bind C-c display-popup -E -w 50% -h 50% 'nvim +"VimwikiIndex" + bind C-c display-popup -E -w 60% -h 60% "pytui -n" + # bind C-w display-popup -E -w 40% -h 60% "pytui -D" + + bind C-o display-popup -E -w 50% -h 50% 'igrep ~/wiki/notes' + + bind j run-shell 'popuptmux' + bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!" + bind i split-window -v -c '\ +#{pane_current_path}' 'emojicherrypick.py --menu fzf\ + ' + bind-key -n F4 run-shell 'ranger' +# bind-key -n C-e split-window -v -c '\ +#{pane_current_path}' 'vifm\' + bind-key -n C-f split-window 'ranger .' +bind F3 send-keys 'igrep .' C-m + ''; + }; + programs.git = { + enable = true; + userName = "th3r00t"; + userEmail = "tty303@proton.me"; + extraConfig = { + commit.gpgSign = true; + gpg.format = "ssh"; + gpg.ssh.allowedSignersFile = "~/.ssh/allowed_signers"; + user.signingkey = "~/.ssh/id_ed25519.pub"; + }; + }; + programs.direnv = { + enable = true; + enableZshIntegration = true; + nix-direnv.enable = true; + }; + programs.foot = { + enable = true; + server.enable = true; + settings = { + main = { + term = "foot"; + font = "SauceCodePro Nerd Font Mono:size=6"; + dpi-aware = "yes"; + shell = "${pkgs.zsh}/bin/zsh"; + }; + mouse = { hide-when-typing = "yes"; }; + cursor = { style = "block"; blink = "yes"; }; + colors = { + alpha = "0.7"; + background="1a1b26"; + foreground="a9b1d6"; + flash="ff9e64"; + flash-alpha="0.5"; + regular0="1a1b26"; + regular1="f7768e"; + regular2="9ece6a"; + regular3="e0af68"; + regular4="7aa2f7"; + regular5="bb9af7"; + regular6="7dcfff"; + regular7="c0caf5"; + bright0="545c7e"; + bright1="ff7a93"; + bright2="b9f27c"; + bright3="ff9e64"; + bright4="7aa2f7"; + bright5="bb9af7"; + bright6="7dcfff"; + bright7="a9b1d6"; + sixel0="1a1b26"; + sixel1="7aa2f7"; + sixel2="f7768e"; + sixel3="9ece6a"; + sixel4="bb9af7"; + sixel5="7dcfff"; + sixel6="e0af68"; + sixel7="565f89"; + sixel8="414868"; + sixel9="4e5173"; + sixel10="8f5151"; + sixel11="4e7652"; + sixel12="8a4d8f"; + sixel13="4e757a"; + sixel14="8a8851"; + sixel15="a9b1d6"; + selection-foreground="1a1b26"; + selection-background="a9b1d6"; + jump-labels="1a1b26 e0af68"; + scrollback-indicator="1a1b26 7aa2f7"; + search-box-no-match="1a1b26 f7768e"; + search-box-match="1a1b26 e0af68"; + urls="e0af68"; + }; + }; + }; + programs.eza = { + enable = true; + enableBashIntegration = true; + enableZshIntegration = true; + }; + programs.starship = { + enable = true; + # custom settings + settings = { + add_newline = false; + aws.disabled = true; + gcloud.disabled = true; + line_break.disabled = true; + }; + }; + programs.zsh = { + enable = true; + sessionVariables = { + PATH="$PATH:$HOME/.local/usr/bin"; + PYTHONBREAKPOINT="pudb.set_trace"; + }; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "colored-man-pages" + "colorize" + "command-not-found" + "compleat" + "dirhistory" + "fzf" + "git-auto-fetch" + "git-extras" + "git-prompt" + "gitignore" + "gpg-agent" + "history" + "jsontools" + "man" + "nmap" + "pip" + "python" + "ssh-agent" + "sudo" + "tmux" + "vi-mode" + "zsh-navigation-tools" + ]; + # theme = "starship"; + }; + }; + programs.bash = { + enable = true; + enableCompletion = true; + bashrcExtra = '' + export PATH="$PATH:$HOME/.local/usr/bin"; + ''; + shellAliases = { + urlencode = "python3 -c 'import sys, urllib.parse as ul; print(ul.quote_plus(sys.stdin.read()))'"; + urldecode = "python3 -c 'import sys, urllib.parse as ul; print(il.unquote_plus(sys.stdin.read()))'"; + ls = "eza"; + cat = "bat"; + }; + }; + programs.hyprlock = { + enable = true; + settings = { + general = { + disable_loading_bar = true; + grace = 300; + hide_cursor = true; + no_fade_in = false; + }; + background = [ + { + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + } + ]; + input-field = [ + { + size = "400, 100"; + position = "0, -80"; + monitor = ""; + dots_center = true; + fade_on_empty = false; + font_color = "rgb(202, 211, 245)"; + inner_color = "rgb(91, 96, 120)"; + outer_color = "rgb(24, 25, 38)"; + outline_thickness = 5; + placeholder_text = "Password"; + shadow_passes = 2; + } + ]; + }; + }; + services.hypridle = { + enable = true; + settings = { + general = { + after_sleep_cmd = "hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "hyprlock"; + }; + listener = [ + { + timeout = 300; + on-timeout = "hyprlock"; + } + { + timeout = 600; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; + }; + }; + home.stateVersion = "25.05"; +}