{ config, lib, pkgs, ... }: { nixpkgs.config = { allowUnfree = true; allowUnfreePredicate = (_: true); }; # Home Manager needs a bit of information about you and the paths it should # manage. home.username = "jas"; home.homeDirectory = "/home/jas"; home.stateVersion = "24.05"; # Please read the comment before changing. # The home.packages option allows you to install Nix packages into your # environment. home.packages = with pkgs; [ arp-scan borgbackup curlie direnv diskonaut doggo duf dust eza fd glow gum httpie hyfetch hyperfine jq just nixfmt-rfc-style ripgrep starship tealdeer trash-cli vivid wl-clipboard wthrr yazi zellij ]; # Home Manager is pretty good at managing dotfiles. The primary way to manage # plain files is through 'home.file'. home.file = { # # Building this configuration will create a copy of 'dotfiles/screenrc' in # # the Nix store. Activating the configuration will then make '~/.screenrc' a # # symlink to the Nix store copy. # ".screenrc".source = dotfiles/screenrc; ".justfile".source = confs/justfile; ".zshrc".source = confs/zshrc; ".zshrc.d".source = confs/zshrc.d; ".doom.d/config.el".source = doom.d/config.el; ".doom.d/init.el".source = doom.d/init.el; ".doom.d/packages.el".source = doom.d/packages.el; }; ## PROGRAMS # bat config home.activation.buildBatCache = "${lib.getExe pkgs.bat} cache --build"; programs.bat = { enable = true; config.theme = "Catppuccin-mocha"; themes = { Catppuccin-mocha = { src = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "bat"; rev = "d3feec47b16a8e99eabb34cdfbaa115541d374fc"; sha256 = "sha256-s0CHTihXlBMCKmbBBb8dUhfgOOQu9PBCQ+uviy7o47w="; }; file = "/themes/Catppuccin Mocha.tmTheme"; }; }; }; # starship.rs programs.starship = { enable = true; settings = lib.importTOML confs/starship.toml; }; # neovim programs.neovim = { enable = true; plugins = with pkgs.vimPlugins; [ vim-startify vim-lastplace nerdcommenter catppuccin-nvim ]; extraConfig = '' set nocompatible set showmatch set ignorecase set mouse=v set hlsearch set incsearch set tabstop=4 set softtabstop=4 set expandtab set shiftwidth=4 set autoindent set relativenumber set wildmode=longest,list set cc=80 filetype plugin indent on syntax on set clipboard=unnamedplus filetype plugin on set cursorline set ttyfast colorscheme catppuccin ''; }; # zellij config programs.zellij.enable = true; programs.zellij.settings = { theme = "catppuccin-mocha"; themes = { catppuccin-mocha = { bg = "#585b70"; fg = "#cdd6f4"; red = "#f38ba8"; green = "#a6e3a1"; blue = "#89b4fa"; yellow = "#f9e2af"; magenta = "#f5c2e7"; orange = "#fab387"; cyan = "#89dceb"; black = "#181825"; white = "#cdd6f4"; }; }; copy_command = "wl-copy"; copy_clipboard = "system"; copy_on_select = true; }; # Let Home Manager install and manage itself. programs.home-manager.enable = true; # XDG user dirs xdg.userDirs = { enable = true; createDirectories = true; download = "${config.home.homeDirectory}/downloads"; desktop = "${config.home.homeDirectory}/desktop"; documents = "${config.home.homeDirectory}/shared/documents"; publicShare = "${config.home.homeDirectory}/shared"; templates = null; music = null; pictures = "${config.home.homeDirectory}/shared/pictures"; videos = null; }; # git config programs.git = { enable = true; diff-so-fancy = { enable = true; pagerOpts = [ "--tabs=4" "-RFX" ]; }; userName = "Jeffrey Serio"; userEmail = "hyperreal@moonshadow.dev"; extraConfig = { core = { editor = "emacsclient"; }; init = { defaultBranch = "main"; }; pull = { rebase = true; }; }; }; # ssh config programs.ssh.enable = true; programs.ssh.matchBlocks = { "auxnc-8g" = { hostname = "152.53.39.153"; user = "jas"; }; "auxnc-96g" = { hostname = "auxnc-96g.lyrebird-marlin.ts.net"; user = "jas"; }; "bttracker.nirn.quest" = { hostname = "bttracker.nirn.quest"; user = "jas"; }; "hyperreal.coffee" = { hostname = "hyperreal.coffee"; user = "jas"; }; "nas" = { hostname = "nas.lyrebird-marlin.ts.net"; user = "jas"; }; }; # direnv programs.direnv = { enable = true; enableZshIntegration = true; nix-direnv.enable = true; }; }