From 1d9c4beaf36fad77e13c692c548d68802c49c77f Mon Sep 17 00:00:00 2001 From: "RingOfStorms (Joshua Bell)" Date: Tue, 18 Mar 2025 00:32:21 -0500 Subject: [PATCH] WIP BROKEN SYSTEM ATM --- common/flake.nix | 3 + common/home_manager/default.nix | 52 +++++++ common/home_manager/programs/alacritty.nix | 33 ++++ common/home_manager/programs/atuin.nix | 15 ++ common/home_manager/programs/direnv.nix | 28 ++++ common/home_manager/programs/git.nix | 65 ++++++++ common/home_manager/programs/kitty.nix | 65 ++++++++ .../home_manager/programs/launcher_rofi.nix | 18 +++ .../programs/nix_deprecations.nix | 18 +++ common/home_manager/programs/obs.nix | 4 + common/home_manager/programs/postgres.nix | 7 + common/home_manager/programs/slicer.nix | 33 ++++ common/home_manager/programs/ssh.nix | 142 ++++++++++++++++++ common/home_manager/programs/starship.nix | 52 +++++++ .../programs/tmux/tmux-reset.conf | 65 ++++++++ common/home_manager/programs/tmux/tmux.nix | 81 ++++++++++ common/home_manager/programs/zoxide.nix | 8 + common/home_manager/programs/zsh.nix | 41 +++++ components/hm/ssh.nix | 4 +- hosts/lio/flake.lock | 77 ++-------- hosts/lio/flake.nix | 49 +++--- 21 files changed, 767 insertions(+), 93 deletions(-) create mode 100644 common/home_manager/default.nix create mode 100644 common/home_manager/programs/alacritty.nix create mode 100644 common/home_manager/programs/atuin.nix create mode 100644 common/home_manager/programs/direnv.nix create mode 100644 common/home_manager/programs/git.nix create mode 100644 common/home_manager/programs/kitty.nix create mode 100644 common/home_manager/programs/launcher_rofi.nix create mode 100644 common/home_manager/programs/nix_deprecations.nix create mode 100644 common/home_manager/programs/obs.nix create mode 100644 common/home_manager/programs/postgres.nix create mode 100644 common/home_manager/programs/slicer.nix create mode 100644 common/home_manager/programs/ssh.nix create mode 100644 common/home_manager/programs/starship.nix create mode 100644 common/home_manager/programs/tmux/tmux-reset.conf create mode 100644 common/home_manager/programs/tmux/tmux.nix create mode 100644 common/home_manager/programs/zoxide.nix create mode 100644 common/home_manager/programs/zsh.nix diff --git a/common/flake.nix b/common/flake.nix index 9930606..1dcda32 100644 --- a/common/flake.nix +++ b/common/flake.nix @@ -9,6 +9,7 @@ outputs = { + home-manager, ... }: { @@ -21,8 +22,10 @@ }: { imports = [ + home-manager.nixosModules.home-manager ./options.nix ./general + ./home_manager ./boot ./users ./programs diff --git a/common/home_manager/default.nix b/common/home_manager/default.nix new file mode 100644 index 0000000..aa2abaa --- /dev/null +++ b/common/home_manager/default.nix @@ -0,0 +1,52 @@ +{ + config, + lib, + ... +}: +let + ccfg = import ../config.nix; + cfg_path = [ + ccfg.custom_config_key + "homeManager" + ]; + cfg = lib.attrsets.getAttrFromPath cfg_path config; +in +{ + options = + { } + // lib.attrsets.setAttrByPath cfg_path { + users = lib.mkOption { + type = lib.types.attrsOf lib.types.attrs; + default = { }; + description = "Home manager users to configure. Should match nix options of home-manager.users..*"; + }; + stateVersion = lib.mkOption { + type = lib.types.str; + default = "23.11"; + description = "Home manager state version"; + }; + }; + config = { + # Home manager options + security.polkit.enable = true; + home-manager.useUserPackages = true; + home-manager.useGlobalPkgs = true; + home-manager.backupFileExtension = "bak"; + + home-manager.sharedModules = [ + ./programs/tmux/tmux.nix + ./programs/alacritty.nix + ./programs/atuin.nix + ]; + + home-manager.users = lib.mapAttrs' (name: userConfig: { + inherit name; + value = userConfig // { + home.stateVersion = cfg.stateVersion; + programs.home-manager.enable = true; + home.username = name; + home.homeDirectory = lib.mkForce "/home/${name}"; + }; + }) cfg.users; + }; +} diff --git a/common/home_manager/programs/alacritty.nix b/common/home_manager/programs/alacritty.nix new file mode 100644 index 0000000..457dbe7 --- /dev/null +++ b/common/home_manager/programs/alacritty.nix @@ -0,0 +1,33 @@ +{ ... }: +{ + programs.alacritty = { + settings = { + window = { + decorations = "None"; + dynamic_title = false; + }; + colors = { + primary = { + foreground = "#e0e0e0"; + background = "#262626"; + }; + normal = { + # Catppuccin Coal + black = "#1f1f1f"; + red = "#f38ba8"; + green = "#a6e3a1"; + yellow = "#f9e2af"; + blue = "#89b4fa"; + magenta = "#cba6f7"; + cyan = "#89dceb"; + white = "#e0e0e0"; + }; + }; + font = { + normal = { family = "JetBrainsMonoNL Nerd Font"; style = "Regular"; }; + size = 12.0; + }; + }; + }; +} + diff --git a/common/home_manager/programs/atuin.nix b/common/home_manager/programs/atuin.nix new file mode 100644 index 0000000..165263c --- /dev/null +++ b/common/home_manager/programs/atuin.nix @@ -0,0 +1,15 @@ +{ ... }: +{ + programs.atuin = { + enableZshIntegration = true; + flags = [ "--disable-up-arrow" ]; + settings = { + workspaces = true; + exit-mode = "return-query"; + enter_accept = true; + sync_address = "http://100.64.0.2:8888"; + sync = { records = true; }; + }; + }; +} + diff --git a/common/home_manager/programs/direnv.nix b/common/home_manager/programs/direnv.nix new file mode 100644 index 0000000..873b54e --- /dev/null +++ b/common/home_manager/programs/direnv.nix @@ -0,0 +1,28 @@ +{ ... }: +{ + programs.direnv = { + enable = true; + enableZshIntegration = true; + nix-direnv.enable = true; + config = { + nix-direnv = true; + global = { + strict_env = true; + load_dotenv = true; + hide_env_diff = true; + }; + whitelist = { + prefix = [ + "~/projects" + "~/.config" + ]; + }; + home.shellAliases = { + ndr = "nix-direnv-reload"; + }; + programs.zsh.shellAliases = { + ndr = "nix-direnv-reload"; + }; + }; + }; +} diff --git a/common/home_manager/programs/git.nix b/common/home_manager/programs/git.nix new file mode 100644 index 0000000..d98abc3 --- /dev/null +++ b/common/home_manager/programs/git.nix @@ -0,0 +1,65 @@ +{ ... }: +{ + programs.git = { + enable = true; + # TODO make configurable + userEmail = "ringofstorms@gmail.com"; + userName = "RingOfStorms (Joshua Bell)"; + + extraConfig = { + core.pager = "cat"; + core.editor = "nvim"; + + pull.rebase = false; + + init.defaultBranch = "main"; + }; + + difftastic = { + enable = true; + background = "dark"; + }; + + ignores = [ + # -------------- + # Intellij + # -------------- + "*.iml" + # -------------- + # MAC OS + # -------------- + ".DS_Store" + ".AppleDouble" + ".LSOverride" + # Icon must end with two \r + "Icon" + # Thumbnails + "._*" + # Files that might appear in the root of a volume + ".DocumentRevisions-V100" + ".fseventsd" + ".Spotlight-V100" + ".TemporaryItems" + ".Trashes" + ".VolumeIcon.icns" + ".com.apple.timemachine.donotpresent" + + # Directories potentially created on remote AFP share + ".AppleDB" + ".AppleDesktop" + "Network Trash Folder" + "Temporary Items" + ".apdisk" + + # direnv things + "/.direnv" + + # local only files + "*.local" + + # AI tooling + ".aider*" + "aider" + ]; + }; +} diff --git a/common/home_manager/programs/kitty.nix b/common/home_manager/programs/kitty.nix new file mode 100644 index 0000000..1b58b46 --- /dev/null +++ b/common/home_manager/programs/kitty.nix @@ -0,0 +1,65 @@ +{ config, lib, ... }: +{ + options.components.kitty = { + font_size = lib.mkOption { + type = lib.types.float; + default = 12.0; + description = "Font size for Kitty terminal"; + }; + }; + config = { + # Enable Kitty terminal + programs.kitty = { + enable = true; + + settings = { + # Window settings + background_opacity = 1.0; + os_window_class = "kitty"; + remember_window_size = false; + placement_strategy = "center"; + initial_window_width = "160c"; + initial_window_height = "55c"; + + # Remove window borders + hide_window_decorations = "titlebar-only"; + tab_title_template = "none"; + active_tab_title_template = "none"; + draw_minimal_borders = "yes"; + window_border_width = "0.1pt"; + + # Colors (Catppuccin Coal) + foreground = "#e0e0e0"; + background = "#262626"; + color0 = "#1f1f1f"; + color1 = "#f38ba8"; + color2 = "#a6e3a1"; + color3 = "#f9e2af"; + color4 = "#89b4fa"; + color5 = "#cba6f7"; + color6 = "#89dceb"; + color7 = "#e0e0e0"; + color8 = "#565656"; + color9 = "#f38ba8"; + color10 = "#a6e3a1"; + color11 = "#f9e2af"; + color12 = "#89b4fa"; + color13 = "#cba6f7"; + color14 = "#89dceb"; + color15 = "#ffffff"; + + # Font settings + font_family = "JetBrainsMonoNL Nerd Font"; + font_size = config.components.kitty.font_size; + bold_font = "auto"; + italic_font = "auto"; + italic_bold_font = "auto"; + }; + + # If you want to include extra configuration this way instead of through the main `settings` attribute + extraConfig = '' + # You can add additional config here if needed + ''; + }; + }; +} diff --git a/common/home_manager/programs/launcher_rofi.nix b/common/home_manager/programs/launcher_rofi.nix new file mode 100644 index 0000000..353b29e --- /dev/null +++ b/common/home_manager/programs/launcher_rofi.nix @@ -0,0 +1,18 @@ +{ + pkgs, + ... +}: +{ + programs.rofi = { + enable = true; + plugins = with pkgs; [ rofi-calc ]; + extraConfig = { + modi = "drun,run,ssh,window,calc"; + terminal = "alacritty"; + }; + theme = "glue_pro_blue"; + }; + programs.wofi = { + enable = true; + }; +} diff --git a/common/home_manager/programs/nix_deprecations.nix b/common/home_manager/programs/nix_deprecations.nix new file mode 100644 index 0000000..d281d87 --- /dev/null +++ b/common/home_manager/programs/nix_deprecations.nix @@ -0,0 +1,18 @@ +{ ... }: +{ + programs.zsh.shellAliases = { + # Nix deprecations + nix-hash = "echo 'The functionality of nix-hash may be covered by various subcommands or options in the new `nix` command.'"; + nix-build = "echo 'Use `nix build` instead.'"; + nix-info = "echo 'Use `nix flake info` or other `nix` subcommands to obtain system and Nix information.'"; + nix-channel = "echo 'Channels are being phased out in favor of flakes. Use `nix flake` subcommands.'"; + nix-instantiate = "echo 'Use `nix eval` or `nix-instantiate` with flakes.'"; + nix-collect-garbage = "echo 'Use `nix store gc` instead.'"; + nix-prefetch-url = "echo 'Use `nix-prefetch` or fetchers in Nix expressions.'"; + nix-copy-closure = "echo 'Use `nix copy` instead.'"; + nix-shell = "echo 'Use `nix shell` instead.'"; + # nix-daemon # No direct replacement: The Nix daemon is still in use and managed by the system service manager. + nix-store = "echo 'Use `nix store` subcommands for store operations.'"; + nix-env = "echo 'Use `nix profile` instead'"; + }; +} diff --git a/common/home_manager/programs/obs.nix b/common/home_manager/programs/obs.nix new file mode 100644 index 0000000..68d6d68 --- /dev/null +++ b/common/home_manager/programs/obs.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + programs.obs-studio.enable = true; +} diff --git a/common/home_manager/programs/postgres.nix b/common/home_manager/programs/postgres.nix new file mode 100644 index 0000000..053099b --- /dev/null +++ b/common/home_manager/programs/postgres.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + home.file.".psqlrc".text = '' + \pset pager off + ''; +} + diff --git a/common/home_manager/programs/slicer.nix b/common/home_manager/programs/slicer.nix new file mode 100644 index 0000000..4361d5a --- /dev/null +++ b/common/home_manager/programs/slicer.nix @@ -0,0 +1,33 @@ +{ pkgs, ... }: +let + orca-slicer-fix = pkgs.stdenv.mkDerivation { + name = "orca-slicer"; + buildInputs = [ pkgs.makeWrapper ]; + unpackPhase = "true"; + buildPhase = '' + mkdir -p $out/bin + makeWrapper ${pkgs.orca-slicer}/bin/orca-slicer $out/bin/orca-slicer \ + --set WEBKIT_DISABLE_DMABUF_RENDERER 1 + ''; + + installPhase = '' + mkdir -p $out/share/applications + cat > $out/share/applications/orca-slicer.desktop <