{ config, lib, inputs, pkgs, self, ... }: let cfg = config.profiles.base; neotheme = config.neotheme; in { imports = [ ../../modules/programs/nixpkgs ../../modules/programs/zshell #../../modules/programs/zellij ]; options.profiles.base.enable = lib.mkEnableOption "The base profile, contains general configurations."; config = lib.mkIf cfg.enable { home.sessionVariables = rec { # NIXOS_OZONE_WL = 1; # FIXME: interface 'wl_output' has no event 4 EDITOR = "hx"; VISUAL = EDITOR; GIT_EDITOR = EDITOR; # Airport AIRPORT_USER = "20963"; AIRPORT_HOST = "hk-s020.rsync.net"; }; home.keyboard.layout = "us"; home.packages = [ # Nix Tools pkgs.nix-index pkgs.nix-tree pkgs.nix-top pkgs.nix-update pkgs.hydra-check pkgs.age pkgs.aria2 pkgs.bottom pkgs.calc pkgs.croc pkgs.fd pkgs.fzf pkgs.libnotify pkgs.procs pkgs.sops pkgs.tree pkgs.neovim pkgs.yubikey-manager pkgs.age-plugin-yubikey # Common build tools (pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override { extensions = [ "rust-src" ]; })) pkgs.go pkgs.gcc (pkgs.writeShellScriptBin "0x0" (import ./scripts/0x0.nix)) (pkgs.writeShellScriptBin "airport" (import ./scripts/airport.nix)) ] ++ lib.optionals (pkgs.stdenv.isDarwin) [ pkgs.iterm2 pkgs.rsync ]; programs = { bat.enable = true; direnv.enable = true; direnv.nix-direnv.enable = true; exa.enable = true; exa.enableAliases = true; gpg.enable = true; gpg.settings.keyserver = "keys.openpgp.org"; home-manager.enable = true; htop.enable = true; helix = { enable = true; settings = { theme = "rasmus-ext"; editor = { statusline = { left = [ "mode" "spinner" "file-name" "position" "separator" "spacer" "diagnostics" "file-modification-indicator" ]; center = [ "version-control" ]; right = [ "selections" "file-encoding" "file-line-ending" "file-type" ]; mode.normal = "NORMAL"; mode.insert = "INSERT"; mode.select = "SELECT"; }; cursor-shape = { insert = "bar"; normal = "block"; select = "underline"; }; # lsp = { # display-inlay-hints = true; # }; line-number = "relative"; color-modes = true; bufferline = "multiple"; }; keys.normal = { space = { q = ":buffer-previous"; e = ":buffer-next"; u = ":buffer-close"; o = ":new"; ";" = "command_mode"; }; }; }; themes = { rasmus-ext = { inherits = "rasmus"; # Transparent background # "ui.background" = {}; # Bar cursor "ui.virtual" = { fg = "white"; }; # lightened ui.cursor.{normal,insert,select} "ui.cursor.primary.normal" = { bg = "gray045"; }; "ui.cursor.primary.insert" = { bg = "white"; }; "ui.cursor.primary.select" = { bg = "gray035"; }; # TODO: Use proper search group after # https://github.com/helix-editor/helix/pull/5702 # "ui.selection" = { /* fg = "accent01"; */ bg = "accent02"; }; # "ui.selection.primary" = { /* fg = "accent01"; */ bg = "accent02"; }; palette = { gray035 = "#4b4b49"; gray045 = "#525250"; accent01 = "#f0a0c0"; accent02 = "#302028"; }; }; }; }; tmux = { enable = true; prefix = "C-f"; terminal = "xterm-256color"; shell = "${pkgs.zsh}/bin/zsh"; baseIndex = 1; keyMode = "vi"; escapeTime = 0; extraConfig = import ./config/tmux.nix; }; zsh = { enable = true; enableCompletion = true; enableAutosuggestions = true; autocd = true; dotDir = ".config/zsh"; plugins = [ { name = "powerlevel10k"; src = pkgs.zsh-powerlevel10k; file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; } { name = "powerlevel10k-config"; src = lib.cleanSource ./p10k-config; file = "p10k.zsh"; } { name = "zsh-syntax-highlighting"; src = pkgs.fetchFromGitHub { owner = "zsh-users"; repo = "zsh-syntax-highlighting"; rev = "0.7.1"; sha256 = "03r6hpb5fy4yaakqm3lbf4xcvd408r44jgpv4lnzl9asp4sb9qc0"; }; } { name = "doas-zsh-plugin"; src = pkgs.fetchFromGitHub { owner = "anatolykopyl"; repo = "doas-zsh-plugin"; rev = "17d0b55ca2acd12f7acc9e38c4ecaf413725be18"; sha256 = "sha256-10rcF9cho9GuZCFQVIdFjvHCAlTLHNaLY4twxjT2jcE="; }; file = "doas.plugin.zsh"; } ]; shellAliases = config.programs.zshell.aliases; } // lib.optionalAttrs (pkgs.stdenv.isDarwin) { initExtra = import ./config/zsh-darwin-gpg-ssh.nix; }; zshell.aliases = { vim = "nvim"; nvimdiff = "nvim -d"; } // lib.optionalAttrs (pkgs.stdenv.isDarwin) { # /nixos/modules/config/shells-environment.nix clear = "clear && printf '\\e[3J'"; l = "ls -alh"; }; zoxide = { enable = true; enableZshIntegration = true; }; zellij = { enable = true; settings = { default_mode = "normal"; pane_frames = false; simplified_ui = true; # bitmap fonts themes = { default = { # Industrial Jellybeans theme bg = [ 21 21 21 ]; fg = [ 136 136 136 ]; black = [ 28 28 28 ]; gray = [ 64 64 64 ]; white = [ 232 232 211 ]; red = [ 141 61 38 ]; orange = [ 250 187 110 ]; yellow = [ 250 208 122 ]; green = [ 153 173 106 ]; blue = [ 129 151 191 ]; cyan = [ 143 191 220 ]; magenta = [ 198 182 238 ]; }; }; }; }; }; xdg.configFile."zellij/layouts/sdev.kdl".text = '' layout { pane size=1 borderless=true { plugin location="zellij:tab-bar" } pane split_direction="vertical" { pane size="80%" command="hx" pane size="20%" } pane size=2 borderless=true { plugin location="zellij:status-bar" } } ''; services = { gpg-agent = lib.mkIf pkgs.stdenv.isLinux { enable = true; pinentryFlavor = "gtk2"; defaultCacheTtl = 3600; defaultCacheTtlSsh = 3600; maxCacheTtl = 86400; maxCacheTtlSsh = 86400; enableSshSupport = true; sshKeys = [ "3C79004101E524D10B94F9EE9D3744F4B25F8795" "159371696FD285FF0811692FBFAA6E4AF017CDDE" ]; extraConfig = '' allow-preset-passphrase ''; }; }; home.file."${config.programs.gpg.homedir}/gpg-agent.conf".text = lib.mkIf pkgs.stdenv.isDarwin '' default-cache-ttl 3600 default-cache-ttl-ssh 3600 pinentry-program ${pkgs.pinentry_mac}/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac allow-preset-passphrase enable-ssh-support ''; home.file."${config.programs.gpg.homedir}/sshcontrol".text = lib.mkIf pkgs.stdenv.isDarwin '' 3C79004101E524D10B94F9EE9D3744F4B25F8795 159371696FD285FF0811692FBFAA6E4AF017CDDE ''; }; }