diff --git a/flake.nix b/flake.nix index c80cf05..3520210 100755 --- a/flake.nix +++ b/flake.nix @@ -30,7 +30,7 @@ in mergeHosts [ (mkHost "muskduck" { - suite = "desktop"; + suite = "laptop"; extraModules = [ lanzaboote.nixosModules.lanzaboote nixos-hardware.nixosModules.lenovo-thinkpad-t480 diff --git a/helpers.nix b/helpers.nix index d67b96c..ae6af30 100644 --- a/helpers.nix +++ b/helpers.nix @@ -66,13 +66,13 @@ with inputs.nixpkgs.lib; { nixvim.nixosModules.nixvim ./suites/common.nix ./suites/${suite}.nix - ./hosts/${hostname}.nix + ./hosts/${suite}/${hostname}.nix ] ++ (filesystem.listFilesRecursive ./modules) ++ extraModules; }; } - // optionalAttrs (suite != "desktop") { + // optionalAttrs (suite != "laptop") { deploy.nodes.${hostname} = { hostname = "${hostname}.local"; profiles.system = { diff --git a/hosts/muskduck.nix b/hosts/laptop/muskduck.nix similarity index 100% rename from hosts/muskduck.nix rename to hosts/laptop/muskduck.nix diff --git a/hosts/firefox-syncserver.nix b/hosts/lxc/firefox-syncserver.nix similarity index 100% rename from hosts/firefox-syncserver.nix rename to hosts/lxc/firefox-syncserver.nix diff --git a/hosts/technitium.nix b/hosts/lxc/technitium.nix similarity index 100% rename from hosts/technitium.nix rename to hosts/lxc/technitium.nix diff --git a/hosts/weebill.nix b/hosts/server/weebill.nix similarity index 100% rename from hosts/weebill.nix rename to hosts/server/weebill.nix diff --git a/hosts/docker.nix b/hosts/vm/docker.nix similarity index 100% rename from hosts/docker.nix rename to hosts/vm/docker.nix diff --git a/hosts/minecraft.nix b/hosts/vm/minecraft.nix similarity index 100% rename from hosts/minecraft.nix rename to hosts/vm/minecraft.nix diff --git a/suites/common.nix b/suites/common.nix index 750581a..09fcf46 100644 --- a/suites/common.nix +++ b/suites/common.nix @@ -63,6 +63,12 @@ with lib; { "wheel" "networkmanager" ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIETPyuxUVEmYyEW6PVC6BXqkhULHd/RvMm8fMbYhjTMV fern@muskduck" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKzW4epTmK01kGVXcuAXUNJQPltnogf4uab9FA5m8S3n fern@pardalote" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBEJYq1fMxVOzCMfE/td6DtWS8nUk76U9seYD3Z9RYAz u0_a399@fairywren" + "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIMoJvPcUJDVVzO4dHROCFNlgJdDZSP5xyPx2s40zcx5QAAAABHNzaDo= YubiKey5NFC" + ]; }; # Use fish shell @@ -78,6 +84,40 @@ with lib; { end rm -f -- "$tmp" end + + # kanagawa theme. + set -l foreground DCD7BA normal + set -l selection 2D4F67 brcyan + set -l comment 727169 brblack + set -l red C34043 red + set -l orange FF9E64 brred + set -l yellow C0A36E yellow + set -l green 76946A green + set -l purple 957FB8 magenta + set -l cyan 7AA89F cyan + set -l pink D27E99 brmagenta + + # Syntax Highlighting Colors + set -g fish_color_normal $foreground + set -g fish_color_command $cyan + set -g fish_color_keyword $pink + set -g fish_color_quote $yellow + set -g fish_color_redirection $foreground + set -g fish_color_end $orange + set -g fish_color_error $red + set -g fish_color_param $purple + set -g fish_color_comment $comment + set -g fish_color_selection --background=$selection + set -g fish_color_search_match --background=$selection + set -g fish_color_operator $green + set -g fish_color_escape $pink + set -g fish_color_autosuggestion $comment + + # Completion Pager Colors + set -g fish_pager_color_progress $comment + set -g fish_pager_color_prefix $cyan + set -g fish_pager_color_completion $foreground + set -g fish_pager_color_description $comment ''; }; @@ -103,24 +143,84 @@ with lib; { nixvim = { enable = true; - dependencies.ripgrep.enable = true; - globals.mapleader = " "; keymaps = [ { key = "t"; - action = " ToggleTerm direction=horizontal "; + action = " ToggleTerm direction=float "; + mode = "n"; + options = { + silent = true; + desc = "Open floating terminal."; + }; } + { - key = "x"; - action = " Trouble diagnostics toggle focus=false"; + key = "g"; + action = " LazyGit "; + mode = "n"; + options.desc = "Open LazyGit."; + } + + { + key = "y"; + action = " Yazi toggle "; + mode = "n"; + options.desc = "Show/hide file browser."; + } + + { + key = "ff"; + action = " Telescope fd "; + mode = "n"; + options.desc = "Find files."; + } + + { + key = "fb"; + action = " Telescope buffers "; + mode = "n"; + options.desc = "Switch between buffers with telescope."; + } + + { + key = "fg"; + action = " Telescope live_grep "; + mode = "n"; + options.desc = "Grep files."; } ]; - colorschemes.gruvbox = { + colorschemes.kanagawa = { enable = true; - settings.contrast = "hard"; + settings = { + background.dark = "dragon"; + colors.theme.all.ui.bg_gutter = "none"; + overrides = '' + function(colors) + local theme = colors.theme + return { + NormalFloat = { bg = "none" }, + FloatBorder = { bg = "none" }, + FloatTitle = { bg = "none" }, + + TelescopeTitle = { fg = theme.ui.special, bold = true }, + TelescopePromptNormal = { bg = theme.ui.bg_p1 }, + TelescopePromptBorder = { fg = theme.ui.bg_p1, bg = theme.ui.bg_p1 }, + TelescopeResultsNormal = { fg = theme.ui.fg_dim, bg = theme.ui.bg_m1 }, + TelescopeResultsBorder = { fg = theme.ui.bg_m1, bg = theme.ui.bg_m1 }, + TelescopePreviewNormal = { bg = theme.ui.bg_dim }, + TelescopePreviewBorder = { bg = theme.ui.bg_dim, fg = theme.ui.bg_dim }, + + Pmenu = { fg = theme.ui.shade0, bg = theme.ui.bg_p1 }, -- add `blend = vim.o.pumblend` to enable transparency + PmenuSel = { fg = "NONE", bg = theme.ui.bg_p2 }, + PmenuSbar = { bg = theme.ui.bg_m1 }, + PmenuThumb = { bg = theme.ui.bg_p2 }, + } + end, + ''; + }; }; opts = rec { @@ -131,52 +231,34 @@ with lib; { number = true; cursorline = true; undofile = true; + clipboard = "unnamedplus"; }; + clipboard.providers.wl-copy.enable = true; + plugins = { auto-session.enable = true; - bufferline.enable = true; colorizer.enable = true; comment.enable = true; gitsigns.enable = true; lazygit.enable = true; lsp-format.enable = true; + mini-statusline.enable = true; + mini-tabline.enable = true; notify.enable = true; nvim-autopairs.enable = true; - nvim-surround.enable = true; + telescope.enable = true; toggleterm.enable = true; trouble.enable = true; web-devicons.enable = true; - - lualine = { - enable = true; - settings.extensions = ["trouble" "toggleterm"]; - }; - - telescope = { - enable = true; - keymaps = { - "ff" = "find_files"; - "fg" = "live_grep"; - "fb" = "buffers"; - }; - }; + which-key.enable = true; + yazi.enable = true; blink-cmp = { enable = true; settings = { - keymap = { - preset = "enter"; - "" = [ - "select_next" - "fallback" - ]; - "" = [ - "select_prev" - "fallback" - ]; - }; - completion.menu.auto_show = true; + keymap.preset = "enter"; + menu.auto_show = true; completion.documentation.auto_show = true; }; }; @@ -216,6 +298,9 @@ with lib; { yazi ]; + # Enable SSH server. + services.openssh.enable = true; + # Enable avahi hostname resolution. services.avahi = { enable = true; diff --git a/suites/desktop.nix b/suites/laptop.nix similarity index 100% rename from suites/desktop.nix rename to suites/laptop.nix diff --git a/suites/server.nix b/suites/server.nix index d9cc3bc..762cc11 100644 --- a/suites/server.nix +++ b/suites/server.nix @@ -10,23 +10,6 @@ with lib; { # Enable all terminfo (for ghostty). environment.enableAllTerminfo = true; - # Enable sshd. - services.openssh = { - enable = true; - settings = { - PermitRootLogin = "no"; - PasswordAuthentication = false; - KbdInteractiveAuthentication = false; - }; - }; - - users.users.${user}.openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIETPyuxUVEmYyEW6PVC6BXqkhULHd/RvMm8fMbYhjTMV fern@muskduck" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKzW4epTmK01kGVXcuAXUNJQPltnogf4uab9FA5m8S3n fern@pardalote" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBEJYq1fMxVOzCMfE/td6DtWS8nUk76U9seYD3Z9RYAz u0_a399@fairywren" - "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIMoJvPcUJDVVzO4dHROCFNlgJdDZSP5xyPx2s40zcx5QAAAABHNzaDo= YubiKey5NFC" - ]; - # Enable docker. virtualisation.docker.enable = mkIf (user == "docker") true; users.users.${user}.extraGroups = mkIf (user == "docker") ["docker"];