nix/home-mods/shell/default.nix

240 lines
5.1 KiB
Nix

{ self
, config
, pkgs
, lib
, ...
}:
let
doomemacsSrc = builtins.fetchGit {
url = "https://github.com/doomemacs/doomemacs";
ref = "master";
rev = "9620bb45ac4cd7b0274c497b2d9d93c4ad9364ee";
};
neofetchThemesSrc = builtins.fetchGit {
url = "https://github.com/Chick2D/neofetch-themes";
ref = "main";
rev = "c7392136bed264258c9b8788b14410e1ff06d602";
};
myEmacs = (pkgs.emacsPackagesFor pkgs.emacs-pgtk).emacsWithPackages (epkgs:
with epkgs; [
vterm
treesit-grammars.with-all-grammars
]);
in
{
programs = {
alacritty = {
enable = true;
settings = {
window.opacity = 0.88;
window.dimensions = {
lines = 40;
columns = 150;
};
};
};
rbw = {
enable = true;
settings = {
base_url = "https://bw.vlt81.de";
email = "tristandruyen@vault81.de";
};
};
starship = {
enable = true;
package = pkgs.unstable-pkgs.starship;
};
fish = {
enable = true;
package = pkgs.unstable-pkgs.fish;
interactiveShellInit = ''
any-nix-shell fish --info-right | source
direnv hook fish | source
cat /var/lib/rust-motd/motd
printf '\eP$f{"hook": "SourcedRcFileForWarp", "value": { "shell": "fish" }}\x9c'
'';
loginShellInit = ''
direnv hook fish | source
'';
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.unstable-pkgs.git;
};
nix-index = {
enable = true;
enableFishIntegration = true;
};
ssh = {
enable = true;
package = pkgs.unstable-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;
package = pkgs.unstable-pkgs.gnupg;
};
zoxide = {
enable = true;
package = pkgs.unstable-pkgs.zoxide;
};
};
services = {
gpg-agent = {
enable = true;
enableExtraSocket = true;
enableSshSupport = true;
pinentryPackage = lib.mkForce pkgs.pinentry-qt;
};
lorri.enable = true;
emacs = {
enable = true;
defaultEditor = true;
package = myEmacs;
};
};
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";
};
packages = with pkgs.unstable-pkgs; [
myEmacs
asciinema
any-nix-shell
atool
aspell
aspellDicts.en
aspellDicts.en-computers
aspellDicts.en-science
aspellDicts.de
binutils
btop
calc
cmake
curl
direnv
exercism
filezilla
fd
gnutls
gnumake
gcc
imagemagick
imagemagick
libtool
neofetch
nil
nixpkgs-fmt
nodejs_20
tree
pandoc
python311Full
python311Packages.epc
python311Packages.orjson
rust-motd
rcm
(lib.mkIf config.services.gpg-agent.enable
pinentry-emacs)
(ripgrep.override { withPCRE2 = true; })
shellcheck
shfmt
statix
texlive.combined.scheme-full
tokei
tree-sitter
wget
wl-clipboard
zeal
zellij
zstd
neovim
lazydocker
lazygit
];
};
}