{ config, lib, inputs, pkgs, self, ... }: let cfg = config.profiles.base; neotheme = config.neotheme; in { imports = [ ../../modules/programs/nixpkgs ../../modules/programs/zshell #../../modules/programs/zellij ../../modules/misc/neotheme ]; 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 = "nvim"; VISUAL = "nvim"; GIT_EDITOR = EDITOR; }; gtk.enable = true; gtk.iconTheme.package = pkgs.papirus-icon-theme; gtk.iconTheme.name = "Papirus-Dark"; gtk.theme.package = (pkgs.orchis-theme.override { tweaks = [ "primary" "compact" ]; }); gtk.theme.name = "Orchis-dark-compact"; gtk.font.name = "Dina 10"; home.file.".icons/default".source = "${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ-AA"; neotheme = { name = "Softjelly"; identifier = "softjelly"; colors = { background = "151515"; foreground = "cbc0ab"; alt0 = "404040"; alt1 = "606060"; color0 = "3c3c3c"; color1 = "cf6a4c"; color2 = "99ad6a"; color3 = "dfa358"; color4 = "8197bf"; color5 = "b3a3ff"; color6 = "8fbfdc"; color7 = "cbc0ab"; bright0 = "4c4c4c"; bright1 = "d98870"; bright2 = "adbd88"; bright3 = "e5b579"; bright4 = "9aaccc"; bright5 = "c2b5ff"; bright6 = "a5cce3"; bright7 = "d5cdbc"; }; }; home.keyboard.layout = "us"; home.packages = [ # Sway pkgs.autotiling pkgs.swaylock-effects pkgs.swaybg pkgs.wayland-utils pkgs.wl-clipboard pkgs.grim pkgs.slurp pkgs.sway-contrib.grimshot pkgs.waybar pkgs.bemenu pkgs.qt5.qtwayland pkgs.xdg-utils # Nix Tools pkgs.nix-index pkgs.nix-tree pkgs.nix-top pkgs.nix-update pkgs.hydra-check pkgs.age pkgs.aria2 pkgs.bottom pkgs.fd # Fix gpg not recognizing foot terminfo pkgs.foot.terminfo 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)) pkgs.go pkgs.gcc (pkgs.writeShellScriptBin "0x0" (import ./scripts/0x0.nix)) ]; wayland.windowManager.sway = { enable = true; wrapperFeatures = { base = true; gtk = true; }; config = { bars = [{ command = "${pkgs.waybar}/bin/waybar"; }]; keybindings = { }; }; extraSessionCommands = '' export XDG_CURRENT_DESKTOP=sway; ''; extraConfig = import ./config/sway.nix { inherit pkgs neotheme; }; }; 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 = "base16_default_dark"; }; }; foot = { enable = true; settings = import ./config/foot.nix { inherit neotheme; }; }; 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; }; waybar = { enable = config.wayland.windowManager.sway.enable; settings = [ (import ./config/waybar/settings.nix { inherit neotheme; }) ]; style = import ./config/waybar/style.nix { inherit neotheme; }; }; 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; }; zshell.aliases = { vim = "nvim"; nvimdiff = "nvim -d"; }; zoxide = { enable = true; enableZshIntegration = true; }; # TODO: https://github.com/NixOS/nixpkgs/issues/198655 # 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 ]; # }; # }; # }; # }; }; services = { dunst = { enable = true; settings = import ./config/dunst.nix { inherit neotheme; }; }; gpg-agent = { enable = true; pinentryFlavor = "gtk2"; defaultCacheTtl = 3600; defaultCacheTtlSsh = 3600; maxCacheTtl = 86400; maxCacheTtlSsh = 86400; enableSshSupport = true; sshKeys = [ "3C79004101E524D10B94F9EE9D3744F4B25F8795" ]; extraConfig = '' allow-preset-passphrase ''; }; swayidle = { enable = true; events = [ { event = "before-sleep"; command = "${pkgs.swaylock-effects}/bin/swaylock -fFc ${neotheme.colors.background} --indicator --grace 2 --fade-in 0.2"; } { event = "lock"; command = "${pkgs.swaylock-effects}/bin/swaylock -fFc ${neotheme.colors.background} --indicator --grace 2 --fade-in 0.2"; } ]; timeouts = [ { timeout = 270; command = "${pkgs.libnotify}/bin/notify-send -t 30000 'Locking screen in 30 seconds'"; } { timeout = 300; command = "${pkgs.swaylock-effects}/bin/swaylock -fFc ${neotheme.colors.background} --indicator --grace 2 --fade-in 0.2"; } { timeout = 600; command = "${pkgs.sway}/bin/swaymsg 'output * dpms off'"; resumeCommand = "${pkgs.sway}/bin/swaymsg 'output * dpms on'"; } ]; }; wlsunset = { enable = true; latitude = "36.5"; longitude = "127.2"; }; }; }; }