nix/home-mods/shell/default.nix

400 lines
8.7 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ self
, config
, pkgs
, lib
, inputs
, ...
}:
let
doomemacsSrc = builtins.fetchGit {
url = "https://github.com/doomemacs/doomemacs";
ref = "master";
rev = "2bc052425ca45a41532be0648ebd976d1bd2e6c1";
};
neofetchThemesSrc = builtins.fetchGit {
url = "https://github.com/Chick2D/neofetch-themes";
ref = "main";
rev = "c7392136bed264258c9b8788b14410e1ff06d602";
};
myEmacs = (pkgs.emacsPackagesFor pkgs.emacs-unstable-pgtk).emacsWithPackages (epkgs:
with epkgs; [
vterm
treesit-grammars.with-all-grammars
]);
in
{
programs = {
alacritty = {
enable = true;
settings = {
window.dimensions = {
lines = 40;
columns = 150;
};
};
};
bash = {
enable = true;
enableVteIntegration = true;
};
btop.enable = true;
direnv.enable = true;
fd.enable = true;
fzf.enable = true;
lsd = {
enable = true;
enableAliases = true;
};
fish = {
enable = true;
package = pkgs.fish;
interactiveShellInit = lib.mkOrder 199 ''
############################################
# Adds a seperating arrow inbetween commands
# ~ ls <----------- at 12:12
# some home folders
# ~ echo 123 <----------- at 12:13
# 123
# ~ _
############################################
function starship_transient_rprompt_func
set width "$(calc "($(tput cols)-12)/2")"
echo -n " <"
string repeat -n$width
echo -n " "
starship module time
end
any-nix-shell fish --info-right | source
if test -z $INSIDE_EMACS && test $TERM != linux ;
eval (${pkgs.zellij}/bin/zellij setup --generate-auto-start fish | string collect)
end
cat /var/lib/rust-motd/motd
'';
loginShellInit = ''
'';
functions = {
ec = "emacsclient $argv";
ecc = "emacsclient -c $argv";
ecr = "emacsclient -r $argv";
ecrr = "emacsclient -r $argv";
};
plugins = [
{
name = "sponge";
src = pkgs.fetchFromGitHub {
owner = "meaningful-ooo";
repo = "sponge";
rev = "384299545104d5256648cee9d8b117aaa9a6d7be";
sha256 = "31d71950346d349762ca8da5f68e666bb9c05fce311096c616101584af999b5c";
};
}
];
};
git = {
enable = true;
userName = "Tristan Druyen";
userEmail = "tristan@vault81.de";
lfs = {
enable = true;
};
aliases = {
ci = "commit";
co = "checkout";
s = "status";
};
extraConfig = {
user.signingkey = "${config.home.homeDirectory}/.ssh/id_ed25519";
commit.gpgsign = true;
gpg.format = "ssh";
};
package = pkgs.git;
};
lazygit.enable = true;
jujutsu = {
enable = true;
settings = {
user = {
email = "tristan@vault81.de";
name = "Tristan Druyen";
};
};
};
nix-index = {
enable = true;
enableFishIntegration = true;
};
pandoc.enable = true;
rbw = {
enable = true;
settings = {
base_url = "https://bw.vlt81.de";
email = "tristandruyen@vault81.de";
};
};
starship = {
enable = true;
package = pkgs.starship;
enableTransience = true;
settings = {
format = lib.concatStrings [
"$username"
"$hostname"
"$localip"
"$directory"
"$vcsh"
"$fossil_branch"
"$fossil_metrics"
"$git_branch"
"$git_commit"
"$git_state"
"$git_metrics"
"$git_status"
"$docker_context"
"$package"
"$c"
"$cmake"
"$cobol"
"$daml"
"$dart"
"$deno"
"$dotnet"
"$elixir"
"$elm"
"$erlang"
"$fennel"
"$gleam"
"$golang"
"$haskell"
"$haxe"
"$helm"
"$java"
"$julia"
"$kotlin"
"$lua"
"$nim"
"$nodejs"
"$ocaml"
"$opa"
"$perl"
"$php"
"$python"
"$rlang"
"$red"
"$ruby"
"$rust"
"$scala"
"$solidity"
"$swift"
"$terraform"
"$typst"
"$vlang"
"$vagrant"
"$zig"
"$buf"
"$nix_shell"
"$conda"
"$spack"
"$memory_usage"
"$aws"
"$gcloud"
"$openstack"
"$azure"
"$nats"
"$direnv"
"$env_var"
"$crystal"
"$custom"
"$sudo"
"$cmd_duration"
"$line_break"
"$jobs"
"$battery"
"$status"
"$os"
"$container"
"$shell"
"$shlvl"
"$character"
];
direnv.disabled = false;
memory_usage.disabled = false;
shlvl = {
disabled = false;
format = "[$symbol]($style)";
repeat = true;
symbol = "";
repeat_offset = 2;
threshold = 0;
};
time.disabled = false;
};
};
ssh = {
enable = true;
addKeysToAgent = "yes";
hashKnownHosts = true;
extraOptionOverrides = {
VerifyHostKeyDNS = "ask";
};
package = pkgs.openssh;
matchBlocks = {
"he4" = {
host = "he4";
hostname = "he4.vault81.de";
user = "tristand";
identityFile = "~/.ssh/id_ed25519";
};
"he2" = {
host = "he2";
hostname = "he2.vault81.de";
user = "root";
identityFile = "~/.ssh/id_v81_ed25519";
};
# "nixos-desk" = {
# host = "nixos-desk";
# hostname = "nixos-desk";
# user = "tristand";
# identityFile = "~/.ssh/id_v81_ed25519";
# };
};
};
gpg.enable = true;
ripgrep = {
enable = true;
package = pkgs.ripgrep.override { withPCRE2 = true; };
};
zellij = {
enable = true;
enableFishIntegration = false;
};
zoxide.enable = true;
# zed-editor = {
# enable = true;
# };
};
services = {
ssh-agent.enable = true;
gpg-agent = {
enable = false;
# enable = true; # misbehaving atm
enableExtraSocket = true;
# enableSshSupport = true;
enableSshSupport = false;
pinentryPackage = lib.mkForce pkgs.pinentry-qt;
};
lorri.enable = true;
emacs = {
enable = true;
defaultEditor = true;
package = myEmacs;
socketActivation.enable = true;
};
};
home = {
activation.setupEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
mkdir ~/.config/emacs -p
chmod u+rw -R ~/.config/emacs
cp -r ${doomemacsSrc}/. "$HOME/.config/emacs"
'';
activation.setupNeofetch = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
mkdir ~/.config/neofetch -p
chmod u+rw -R ~/.config/neofetch
cp ${neofetchThemesSrc}/normal/acenoster.conf "$HOME/.config/neofetch/config.conf"
'';
file.".config/doom" = {
recursive = true;
source = ../../ext/doom;
# onChange = "${config.home.homeDirectory}/.config/emacs/bin/doom sync";
};
sessionVariables = {
TERMINAL = "alacritty";
ZELLIJ_AUTO_EXIT = "true";
ZELLIJ_AUTO_ATTACH = "false";
};
# TODO Disable gui apps & switch to emacs-git instead of pgtk on headless systems
packages = with pkgs; [
myEmacs
emacs-lsp-booster
any-nix-shell
atool
aspell
aspellDicts.en
aspellDicts.en-computers
aspellDicts.en-science
aspellDicts.de
binutils
calc
cmake
curl
exercism
filezilla
gnutls
gnumake
gcc
imagemagick
libtool
neofetch
nil
nixpkgs-fmt
nodejs_20
tree
python312Full
python312Packages.epc
python312Packages.orjson
rust-motd
rcm
(lib.mkIf config.services.gpg-agent.enable
pinentry-emacs)
shellcheck
shfmt
statix
#texlive.combined.scheme-full
texlive.combined.scheme-medium
tokei
tree-sitter
wget
wl-clipboard
zeal # GUI
zstd
neovim
lazydocker
sshx
bat
lazygit
xpipe
# surrealist
# surrealdb
pkgs.rage
pkgs.nh
pkgs.agenix-rekey
# android-studio-full
# my.aider-chat # broken on 25.05 (check nixpkgs for update)
];
};
}