161 lines
3.2 KiB
Nix
161 lines
3.2 KiB
Nix
|
{
|
||
|
pkgs,
|
||
|
config,
|
||
|
osConfig,
|
||
|
lib,
|
||
|
...
|
||
|
}:
|
||
|
let
|
||
|
getIfHas =
|
||
|
path: attrs:
|
||
|
if path == [ ] then
|
||
|
attrs
|
||
|
else if builtins.hasAttr (builtins.head path) attrs then
|
||
|
getIfHas (builtins.tail path) (builtins.getAttr (builtins.head path) attrs)
|
||
|
else
|
||
|
null;
|
||
|
|
||
|
osConfigGetIfHasOrFalse = path: lib.defaultTo false (getIfHas (lib.splitString "." path) osConfig);
|
||
|
|
||
|
user = config.home.username;
|
||
|
homedir = config.home.homeDirectory;
|
||
|
graphical = osConfigGetIfHasOrFalse "grimmShared.graphical";
|
||
|
in
|
||
|
{
|
||
|
home.preferXdgDirectories = true;
|
||
|
|
||
|
home.packages = with pkgs; [
|
||
|
deskwhich
|
||
|
] ++ lib.optionals graphical [
|
||
|
# imhex
|
||
|
# libreoffice-qt
|
||
|
filezilla
|
||
|
obsidian
|
||
|
nomacs
|
||
|
pdfarranger
|
||
|
krita
|
||
|
# weasis
|
||
|
|
||
|
# kicad
|
||
|
prusa-slicer
|
||
|
freecad
|
||
|
openscad
|
||
|
|
||
|
vlc
|
||
|
# blender
|
||
|
];
|
||
|
|
||
|
home.shellAliases = {
|
||
|
":q" = "exit";
|
||
|
"ls" = "eza";
|
||
|
"lix" = "nix";
|
||
|
"l" = "eza -hla";
|
||
|
"vi" = "hx";
|
||
|
"bat" = "bat --theme=Dracula";
|
||
|
};
|
||
|
programs.thunderbird = {
|
||
|
enable = graphical;
|
||
|
profiles.default = {
|
||
|
isDefault = true;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.zathura.enable = graphical;
|
||
|
programs.bash = {
|
||
|
enable = true;
|
||
|
enableCompletion = true;
|
||
|
};
|
||
|
|
||
|
programs.alacritty = {
|
||
|
enable = graphical;
|
||
|
settings = {
|
||
|
font.size = 16;
|
||
|
font.normal = {
|
||
|
family = "Noto Sans Mono";
|
||
|
};
|
||
|
window.opacity = 0.85;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.starship = {
|
||
|
enable = true;
|
||
|
enableBashIntegration = true;
|
||
|
settings = {
|
||
|
format = "$all$directory$character";
|
||
|
nodejs.disabled = true;
|
||
|
cmake.symbol = "cmake ";
|
||
|
custom.shell = {
|
||
|
command = "basename $SHELL";
|
||
|
when = "test -v SHELL";
|
||
|
format = " in [$output]($style)";
|
||
|
# ignore_timeout = true;
|
||
|
};
|
||
|
# env_var.SHELL = {variable = "SHELL"; default = ""; };
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.fzf.enable = true;
|
||
|
programs.fzf.tmux.enableShellIntegration = true;
|
||
|
|
||
|
programs.thefuck = {
|
||
|
enable = true;
|
||
|
enableBashIntegration = true;
|
||
|
};
|
||
|
|
||
|
programs.helix = {
|
||
|
enable = true;
|
||
|
defaultEditor = true;
|
||
|
settings = {
|
||
|
editor.cursor-shape.insert = "bar";
|
||
|
theme = "base16_transparent";
|
||
|
};
|
||
|
extraPackages = with pkgs; [
|
||
|
marksman
|
||
|
nixd
|
||
|
];
|
||
|
};
|
||
|
|
||
|
programs.tmux = {
|
||
|
enable = true;
|
||
|
clock24 = true;
|
||
|
historyLimit = 50000;
|
||
|
newSession = true;
|
||
|
};
|
||
|
|
||
|
systemd.user.enable = true;
|
||
|
systemd.user.tmpfiles.rules = lib.optional (osConfigGetIfHasOrFalse "services.printing.cups-pdf.enable") "L ${homedir}/PDF - - - - /var/spool/cups-pdf-pdf/users/${user}";
|
||
|
|
||
|
xdg.userDirs = {
|
||
|
enable = true;
|
||
|
createDirectories = true;
|
||
|
};
|
||
|
|
||
|
programs.gradle = {
|
||
|
enable = true;
|
||
|
settings = {
|
||
|
"org.gradle.java.home" = "${pkgs.openjdk}/lib/openjdk";
|
||
|
"org.gradle.java.installations.auto-detect" = false;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.gpg = {
|
||
|
enable = true;
|
||
|
mutableKeys = true;
|
||
|
publicKeys = [
|
||
|
{
|
||
|
source = ./grimmauld.gpg;
|
||
|
trust = 5;
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
services.gpg-agent = {
|
||
|
enable = true;
|
||
|
enableBashIntegration = true;
|
||
|
pinentryPackage = if graphical then pkgs.pinentry-qt else pkgs.pinentry-tty;
|
||
|
};
|
||
|
|
||
|
xdg.mimeApps.enable = true;
|
||
|
services.ssh-agent.enable = true;
|
||
|
}
|