From 1ec7eadcb8b60a16a46194a888e96956a90ac203 Mon Sep 17 00:00:00 2001 From: "RingOfStorms (Joshua Bell)" Date: Sat, 11 May 2024 11:46:42 -0500 Subject: [PATCH] h002 being weird, but it is working tty now --- hosts/h002/configuration.nix | 38 ++++++----- hosts/h002/hardware-configuration.nix | 37 +++++++++++ .../_common/components/home_manager/atuin.nix | 14 ++++ .../components/home_manager/starship.nix | 44 +++++++++++++ .../home_manager/tmux/tmux-reset.conf | 62 +++++++++++++++++ .../components/home_manager/tmux/tmux.nix | 66 +++++++++++++++++++ .../components/home_manager/zoxide.nix | 9 +++ users/_common/components/home_manager/zsh.nix | 29 ++++++++ users/_common/components/readme.md | 0 .../nix_modules/user.nix} | 2 - users/luser/home_manager/common.nix | 12 ++++ 11 files changed, 293 insertions(+), 20 deletions(-) create mode 100644 hosts/h002/hardware-configuration.nix create mode 100644 users/_common/components/home_manager/atuin.nix create mode 100644 users/_common/components/home_manager/starship.nix create mode 100644 users/_common/components/home_manager/tmux/tmux-reset.conf create mode 100644 users/_common/components/home_manager/tmux/tmux.nix create mode 100644 users/_common/components/home_manager/zoxide.nix create mode 100644 users/_common/components/home_manager/zsh.nix create mode 100644 users/_common/components/readme.md rename users/{josh/nix_modules/_user.nix => _common/nix_modules/user.nix} (84%) create mode 100644 users/luser/home_manager/common.nix diff --git a/hosts/h002/configuration.nix b/hosts/h002/configuration.nix index 2bf390c..93c29c2 100644 --- a/hosts/h002/configuration.nix +++ b/hosts/h002/configuration.nix @@ -4,18 +4,20 @@ [ (settings.hostsDir + "/_common/components/neovim.nix") # Common components this machine uses - (settings.hostsDir + "/_common/components/systemd_boot.nix") (settings.hostsDir + "/_common/components/ssh.nix") (settings.hostsDir + "/_common/components/caps_to_escape_in_tty.nix") - (settings.hostsDir + "/_common/components/font_jetbrainsmono.nix") + # (settings.hostsDir + "/_common/components/font_jetbrainsmono.nix") (settings.hostsDir + "/_common/components/home_manager.nix") - (settings.hostsDir + "/_common/components/gnome_xorg.nix") + # (settings.hostsDir + "/_common/components/gnome_xorg.nix") (settings.hostsDir + "/_common/components/docker.nix") # Users this machine has + (settings.usersDir + "/root/configuration.nix") - (settings.usersDir + "/josh/configuration.nix") + (settings.usersDir + "/luser/configuration.nix") ]; +boot.loader.grub = { enable = true; device = "/dev/sdb" ; }; + # machine specific configuration # ============================== hardware.enableAllFirmware = true; @@ -35,27 +37,27 @@ # nvidia gfx https://nixos.wiki/wiki/Nvidia # ========= # Enable OpenGL - hardware.opengl = { - enable = true; - driSupport = true; - driSupport32Bit = true; - }; + #hardware.opengl = { + # enable = true; + # driSupport = true; + # driSupport32Bit = true; + #}; # Load nvidia driver for Xorg and Wayland - services.xserver.videoDrivers = [ "nvidia" ]; - hardware.nvidia = { + #services.xserver.videoDrivers = [ "nvidia" ]; + #hardware.nvidia = { # Modesetting is required. - modesetting.enable = true; + # modesetting.enable = true; # Nvidia power management. Experimental, and can cause sleep/suspend to fail. # Enable this if you have graphical corruption issues or application crashes after waking # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead # of just the bare essentials. - powerManagement.enable = false; + # powerManagement.enable = false; # Fine-grained power management. Turns off GPU when not in use. # Experimental and only works on modern Nvidia GPUs (Turing or newer). - powerManagement.finegrained = false; + # powerManagement.finegrained = false; # Use the NVidia open source kernel module (not to be confused with the # independent third-party "nouveau" open source driver). @@ -64,13 +66,13 @@ # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus # Only available from driver 515.43.04+ # Currently alpha-quality/buggy, so false is currently the recommended setting. - open = false; + # open = false; # Enable the Nvidia settings menu, # accessible via `nvidia-settings`. - nvidiaSettings = true; + # nvidiaSettings = true; # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.stable; - }; + # package = config.boot.kernelPackages.nvidiaPackages.stable; + # }; } diff --git a/hosts/h002/hardware-configuration.nix b/hosts/h002/hardware-configuration.nix new file mode 100644 index 0000000..d1fbb4c --- /dev/null +++ b/hosts/h002/hardware-configuration.nix @@ -0,0 +1,37 @@ +# 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 = [ "ehci_pci" "ahci" "xhci_pci" "firewire_ohci" "usb_storage" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-label/NIXROOT"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-label/NIXBOOT"; + 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; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/users/_common/components/home_manager/atuin.nix b/users/_common/components/home_manager/atuin.nix new file mode 100644 index 0000000..fc17cbd --- /dev/null +++ b/users/_common/components/home_manager/atuin.nix @@ -0,0 +1,14 @@ +{ ... }: +{ + programs.atuin = { + enable = true; + enableZshIntegration = true; + flags = [ "--disable-up-arrow" ]; + settings = { + workspaces = true; + exit-mode = "return-query"; + enter_accept = true; + }; + }; +} + diff --git a/users/_common/components/home_manager/starship.nix b/users/_common/components/home_manager/starship.nix new file mode 100644 index 0000000..0ee80b3 --- /dev/null +++ b/users/_common/components/home_manager/starship.nix @@ -0,0 +1,44 @@ +{ ... }: +{ + programs.starship = { + enable = true; + enableZshIntegration = true; + settings = { + add_newline = false; + palette = "catppuccin_coal"; + palettes.catppuccin_coal = { + # Same as catppuccin mocha for these + rosewater = "#f5e0dc"; + flamingo = "#f2cdcd"; + pink = "#f5c2e7"; + mauve = "#cba6f7"; + red = "#f38ba8"; + maroon = "#eba0ac"; + peach = "#fab387"; + yellow = "#f9e2af"; + green = "#a6e3a1"; + teal = "#94e2d5"; + sky = "#89dceb"; + sapphire = "#74c7ec"; + blue = "#89b4fa"; + lavender = "#b4befe"; + # Coal variant: https://gist.github.com/RingOfStorms/b2ff0c4e37f5be9f985c72c3ec9a3e62 + text = "#e0e0e0"; + subtext1 = "#cccccc"; + subtext0 = "#b8b8b8"; + overlay2 = "#a3a3a3"; + overlay1 = "#8c8c8c"; + overlay0 = "#787878"; + surface2 = "#636363"; + surface1 = "#4f4f4f"; + surface0 = "#3b3b3b"; + base = "#262626"; + mantle = "#1f1f1f"; + crust = "#171717"; + }; + }; + }; +} + + + diff --git a/users/_common/components/home_manager/tmux/tmux-reset.conf b/users/_common/components/home_manager/tmux/tmux-reset.conf new file mode 100644 index 0000000..3d2dcb0 --- /dev/null +++ b/users/_common/components/home_manager/tmux/tmux-reset.conf @@ -0,0 +1,62 @@ +# Reset everything then add what we want exactly +unbind-key -a +bind C-Space send-prefix + +# Windows +bind -r p previous-window +bind -r n next-window +bind -r & kill-window +bind -r c new-window -c "#{pane_current_path}" +bind ',' command-prompt "rename-window %%" +bind "\|" split-window -h -c "#{pane_current_path}" +bind "\\" split-window -v -c "#{pane_current_path}" +bind w choose-tree -Zw +bind -r 1 select-window -t:1 +bind -r 2 select-window -t:2 +bind -r 3 select-window -t:3 +bind -r 4 select-window -t:4 +bind -r 5 select-window -t:5 +bind -r 6 select-window -t:6 +bind -r 7 select-window -t:7 +bind -r 8 select-window -t:8 +bind -r 9 select-window -t:9 +# custom +bind m command-prompt -p "Swap with window index:" "swap-window -t '%%'" +bind -r [ swap-window -t -1 \; previous-window +bind -r ] swap-window -t +1 \; next-window + + +# Panes +bind ! break-pane +bind -r left select-pane -L +bind -r down select-pane -D +bind -r up select-pane -U +bind -r right select-pane -R +bind -r x kill-pane +bind -r space resize-pane -Z +bind S select-layout tiled +bind -r h select-pane -L +bind -r j select-pane -D +bind -r k select-pane -U +bind -r l select-pane -R + + +# Sessions +bind $ command-prompt "rename-session %%" +bind -r ) switch-client -n +bind -r ( switch-client -p +# custom +bind C command-prompt -p "session name:" "new-session -s '%%'" + +# Tmux util +bind : command-prompt +bind C-D detach + +# ========== +# My options +set-option -g terminal-overrides ',xterm-256color:RGB' +set -g detach-on-destroy off +set -g renumber-windows on +set -g status-position top +set -sg escape-time 0 + diff --git a/users/_common/components/home_manager/tmux/tmux.nix b/users/_common/components/home_manager/tmux/tmux.nix new file mode 100644 index 0000000..957934a --- /dev/null +++ b/users/_common/components/home_manager/tmux/tmux.nix @@ -0,0 +1,66 @@ +{ settings, lib, pkgs, ... } @ args: +let + tmux = pkgs.tmuxPlugins; +in +{ + # home manager doesn't give us an option to add tmux extra config at the top so we do it ourselves here. + xdg.configFile."tmux/tmux.conf".text = lib.mkBefore (builtins.readFile ./tmux-reset.conf); + + programs.tmux = { + enable = true; + + # Revisit this later, permission denied to make anything in `/run` as my user... + secureSocket = false; + + # default is B switch to space for easier dual hand use + shortcut = "Space"; + prefix = "C-Space"; + baseIndex = 1; + mouse = true; + keyMode = "vi"; + shell = "${pkgs.zsh}/bin/zsh"; + terminal = "screen-256color"; + aggressiveResize = true; + sensibleOnTop = false; + + plugins = [ + { + plugin = tmux.catppuccin.overrideAttrs (_: { + src = pkgs.fetchFromGitHub { + owner = "ringofstorms"; + repo = "tmux-catppuccin-coal"; + rev = "e6d7c658e2d11798912ca1ed4e3626e3e1fad3fc"; + sha256 = "sha256-M1XAeCz/lqgjZ7CnWCykJxZCDk+WVoawwHrR9SEO9ns="; + }; + }); + extraConfig = '' + set -g @catppuccin_flavour 'mocha' + set -g @catppuccin_window_left_separator "" + set -g @catppuccin_window_right_separator " " + set -g @catppuccin_window_middle_separator " █" + set -g @catppuccin_window_number_position "right" + set -g @catppuccin_window_default_fill "number" + set -g @catppuccin_window_default_text "#W" + set -g @catppuccin_window_current_fill "number" + set -g @catppuccin_window_current_text "#W#{?window_zoomed_flag,(),}" + set -g @catppuccin_status_modules_right "directory application date_time" + set -g @catppuccin_status_modules_left "session" + set -g @catppuccin_status_left_separator " " + set -g @catppuccin_status_right_separator " " + set -g @catppuccin_status_right_separator_inverse "no" + set -g @catppuccin_status_fill "icon" + set -g @catppuccin_status_connect_separator "no" + set -g @catppuccin_directory_text "#{b:pane_current_path}" + set -g @catppuccin_date_time_text "%H:%M" + ''; + } + ]; + }; + + home.shellAliases = { + t = "tmux"; + tat = "tmux ls 2>/dev/null && tmux attach-session -t \"$(tmux ls | head -n1 | cut -d: -f1)\" || tmux new-session"; + }; +} + + diff --git a/users/_common/components/home_manager/zoxide.nix b/users/_common/components/home_manager/zoxide.nix new file mode 100644 index 0000000..801d377 --- /dev/null +++ b/users/_common/components/home_manager/zoxide.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + programs.zoxide = { + enable = true; + enableZshIntegration = true; + options = [ "--cmd cd" ]; + }; +} + diff --git a/users/_common/components/home_manager/zsh.nix b/users/_common/components/home_manager/zsh.nix new file mode 100644 index 0000000..3dab258 --- /dev/null +++ b/users/_common/components/home_manager/zsh.nix @@ -0,0 +1,29 @@ +{ ... }: +{ + programs.zsh = { + enable = true; + autosuggestion.enable = true; + + shellAliases = { }; + + defaultKeymap = "emacs"; + + initExtra = '' + # Make home/end and ctrl + left/right nav how I expect them to like in bash + bindkey "\e[1~" beginning-of-line + bindkey "\e[4~" end-of-line + bindkey '^[[1;5D' emacs-backward-word + bindkey '^[[1;5C' emacs-forward-word + + # Auto completion/suggestions/and case insensitivity + autoload -Uz compinit && compinit + setopt correct + setopt extendedglob + setopt nocaseglob + zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case insensitive tab completion + zstyle ':completion:*' list-colors "''${(s.:.)LS_COLORS}" # Colored completion (different colors for dirs/files/etc) + zstyle ':completion:*' rehash true # automatically find new executables in path + ''; + }; +} + diff --git a/users/_common/components/readme.md b/users/_common/components/readme.md new file mode 100644 index 0000000..e69de29 diff --git a/users/josh/nix_modules/_user.nix b/users/_common/nix_modules/user.nix similarity index 84% rename from users/josh/nix_modules/_user.nix rename to users/_common/nix_modules/user.nix index 522260e..0fda291 100644 --- a/users/josh/nix_modules/_user.nix +++ b/users/_common/nix_modules/user.nix @@ -7,10 +7,8 @@ shell = pkgs.zsh; }; - # TODO how to do this from home manager file instead environment.pathsToLink = [ "/share/zsh" ]; programs.zsh = { enable = true; }; } - diff --git a/users/luser/home_manager/common.nix b/users/luser/home_manager/common.nix new file mode 100644 index 0000000..0a93519 --- /dev/null +++ b/users/luser/home_manager/common.nix @@ -0,0 +1,12 @@ +{ lib, ylib, settings, ... }: +{ + imports = [ + (settings.usersDir + "/_common/components/home_manager/tmux/tmux.nix") + (settings.usersDir + "/_common/components/home_manager/atuin.nix") + (settings.usersDir + "/_common/components/home_manager/starship.nix") + (settings.usersDir + "/_common/components/home_manager/zoxide.nix") + (settings.usersDir + "/_common/components/home_manager/zsh.nix") + ]; +} + +