dots/users/price/home.nix

527 lines
13 KiB
Nix
Raw Normal View History

2024-04-19 22:27:46 -05:00
{
pkgs,
config,
lib,
clib,
2024-04-19 22:27:46 -05:00
...
}:
let
2024-05-03 14:35:00 -05:00
dotsDir = "${config.home.homeDirectory}/.config/home-manager/users/price/dots";
2024-04-19 22:27:46 -05:00
softLinkDots =
dir:
(builtins.listToAttrs (
2024-05-03 14:35:00 -05:00
map (n: {
name = "${dir + "/" + n}";
value = {
source = config.lib.file.mkOutOfStoreSymlink "${dotsDir}/${dir}/${n}";
force = true;
};
}) (builtins.attrNames (builtins.readDir ./dots/${dir}))
2024-04-19 22:27:46 -05:00
));
in
{
imports = (clib.recurseFilesInDirs [ ./conf ] ".nix");
2023-11-30 00:49:32 -06:00
programs.home-manager.enable = true;
2024-05-03 14:35:00 -05:00
nixpkgs = {
config = {
allowUnfree = true;
android_sdk.accept_license = true;
};
2024-05-03 14:35:00 -05:00
};
2023-11-30 00:49:32 -06:00
home = {
2024-05-03 14:35:00 -05:00
language.base = "en_US.UTF-8";
2024-04-19 22:27:46 -05:00
packages =
with pkgs;
2024-02-02 11:58:59 -06:00
[
android-studio-full
2024-06-22 06:22:05 -05:00
plantuml
2024-06-27 23:38:02 -05:00
libnotify
2024-06-22 06:22:05 -05:00
graphviz
2024-06-13 15:37:23 -05:00
gcolor3
typescript
deno
powershell
2024-06-11 23:49:25 -05:00
vesktop
2024-06-03 17:24:51 -05:00
kooha
libreoffice-fresh
2024-06-02 12:35:31 -05:00
zathura
nix-prefetch-scripts
2024-05-03 14:35:00 -05:00
mako
wl-clipboard
grim
2024-05-27 13:12:53 -05:00
slurp
2024-05-03 14:35:00 -05:00
unzip
Fmt
screen-cap
2024-05-09 00:01:06 -05:00
starship
nodePackages.prettier
2024-05-03 14:35:00 -05:00
cargo
2024-07-10 03:20:06 -05:00
clippy
2024-05-03 14:35:00 -05:00
rustc
rustfmt
python3
shfmt
2024-02-02 11:58:59 -06:00
bob-nvim
2024-05-03 14:35:00 -05:00
neovide
wezterm
kitty
fontconfig
2024-02-02 11:58:59 -06:00
sqlite
swaylock-effects
2024-02-02 11:58:59 -06:00
luajit
2024-06-26 09:39:33 -05:00
luarocks
2024-02-02 11:58:59 -06:00
imagemagick
shellcheck
nodejs
poetry
ruby
yamllint
curl
openssh
2024-06-03 15:03:17 -05:00
gradle
2024-05-24 13:44:57 -05:00
maven
pavucontrol
2024-02-02 11:58:59 -06:00
openssl
wget
rsync
readline
gh
ffmpeg
silicon
man
thunderbird
2024-02-02 11:58:59 -06:00
jq
tectonic
fzf
delta
eza
ripgrep
fd
playerctl
nixfmt-rfc-style
2024-02-02 11:58:59 -06:00
lxappearance
twitter-color-emoji
open-sans
noto-fonts
fira-code
nerdfonts
direnv
swappy
stylua
typstyle
2024-02-02 11:58:59 -06:00
typst
hurl
mullvad-vpn
2024-02-04 22:26:55 -06:00
easyeffects
egl-wayland
2024-02-17 17:04:19 -06:00
helvum
brightnessctl
keyd
2024-04-19 04:51:08 -05:00
tidal-hifi
2024-04-19 22:23:47 -05:00
nix-output-monitor
2024-05-03 14:35:00 -05:00
sops
chromium
2024-05-03 14:35:00 -05:00
tree-sitter
qt6Packages.qt6gtk2
qt6Packages.qt6ct
libsForQt5.qt5ct
2024-04-19 22:27:46 -05:00
]
++ [
age
age-plugin-yubikey
passage
]
++ [
ansible
ansible-lint
]
++ [
2024-05-03 14:35:00 -05:00
gnumake
cmake
clang
clang-tools
ninja
ccache
2024-05-03 14:35:00 -05:00
llvm
llvmPackages.libcxxStdenv
pkg-config
openssl.dev
curl.dev
2024-05-04 15:42:09 -05:00
]
++ [ rust-analyzer ];
file = softLinkDots ".config";
2024-02-29 02:07:22 -06:00
sessionVariables = {
_ZL_DATA = "${config.xdg.cacheHome}/zlua";
RUSTUP_HOME = "${config.xdg.dataHome}/rustup";
CARGO_HOME = "${config.xdg.dataHome}/cargo";
OMNISHARPHOME = "${config.xdg.configHome}/omnisharp";
NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc";
2024-04-19 22:27:46 -05:00
TERMINFO_DIRS = "${config.home.homeDirectory}/.nix-profile/share/terminfo";
WSLENV = "TERMINFO_DIRS";
LD_LIBRARY_PATH = lib.strings.makeLibraryPath [
"${config.home.homeDirectory}/.nix-profile/"
"${pkgs.sqlite.out}"
];
PKG_CONFIG_PATH = "${config.home.homeDirectory}/.nix-profile/lib/pkgconfig";
2024-05-03 14:35:00 -05:00
GTK_PATH = "${pkgs.gtk-engine-murrine}/lib/gtk-2.0";
};
sessionPath = [ "${config.xdg.dataHome}/bin" ];
2023-11-30 00:49:32 -06:00
};
fonts.fontconfig.enable = true;
xdg = {
enable = true;
mime.enable = true;
2024-05-03 14:35:00 -05:00
systemDirs.data = [ "${config.home.homeDirectory}/.nix-profile/share/" ];
mimeApps = {
enable = true;
associations.added = {
2024-05-03 14:35:00 -05:00
"x-scheme-handler/http" = [ "firefox-devedition.desktop" ];
"x-scheme-handler/https" = [ "firefox-devedition.desktop" ];
"x-scheme-handler/chrome" = [ "firefox-devedition.desktop" ];
"text/html" = [ "firefox-devedition.desktop" ];
"application/x-extension-htm" = [ "firefox-devedition.desktop" ];
"application/x-extension-html" = [ "firefox-devedition.desktop" ];
"application/x-extension-shtml" = [ "firefox-devedition.desktop" ];
"application/xhtml+xml" = [ "firefox-devedition.desktop" ];
"application/x-extension-xhtml" = [ "firefox-devedition.desktop" ];
"application/x-extension-xht" = [ "firefox-devedition.desktop" ];
};
defaultApplications = {
"application/pdf" = [ "org.pwmt.zathura.desktop" ];
2024-05-03 14:35:00 -05:00
"x-scheme-handler/http" = [ "firefox-devedition.desktop" ];
"x-scheme-handler/https" = [ "firefox-devedition.desktop" ];
"x-scheme-handler/chrome" = [ "firefox-devedition.desktop" ];
"text/html" = [ "firefox-devedition.desktop" ];
"application/x-extension-htm" = [ "firefox-devedition.desktop" ];
"application/x-extension-html" = [ "firefox-devedition.desktop" ];
"application/x-extension-shtml" = [ "firefox-devedition.desktop" ];
"application/xhtml+xml" = [ "firefox-devedition.desktop" ];
"application/x-extension-xhtml" = [ "firefox-devedition.desktop" ];
"application/x-extension-xht" = [ "firefox-devedition.desktop" ];
};
};
configFile = {
2024-05-03 14:35:00 -05:00
"hypr/hyprland.conf".enable = false;
"fontconfig/fonts.conf".text = ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Fira Code</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Fira Code</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Fira Code</family>
<family>FiraCode Nerd Font</family>
<family>Noto Sans Mono</family>
</prefer>
</alias>
<alias>
<family>emoji</family>
<prefer>
<family>Twemoji</family>
<family>Noto Color Emoji</family>
</prefer>
</alias>
</fontconfig>
'';
};
};
programs = {
2024-06-03 15:03:17 -05:00
eclipse = {
enable = true;
package = pkgs.eclipses.eclipse-java;
};
2024-02-29 02:07:22 -06:00
wofi.enable = true;
firefox = {
enable = true;
package = pkgs.firefox-devedition;
};
waybar = {
enable = true;
systemd.enable = true;
};
git = {
enable = true;
userName = "Price Hiller";
userEmail = "price@orion-technologies.io";
2024-04-19 22:27:46 -05:00
aliases = {
unstage = "reset HEAD --";
};
extraConfig = {
init.defaultBranch = "main";
merge.conflictstyle = "zdiff3";
branch.autosetupmerge = "always";
remote.pushDefault = "origin";
am.threeWay = true;
apply.ignoreWhitespace = "change";
# SEC: Integrate https://github.com/git-ecosystem/git-credential-manager with GPG to improve
# security stance around the credential store
credential.helper = "store";
pull.rebase = true;
commit.gpgsign = true;
transfer.fsckObjects = true;
receive.fsckObjects = true;
status.submoduleSummary = true;
submodule.recurse = true;
fetch = {
fsckObjects = true;
prune = true;
prunetags = true;
};
rebase = {
autosquash = true;
autostash = true;
updateRefs = true;
};
log = {
abbrevCommit = true;
decorate = "short";
date = "iso";
};
rerere = {
enabled = true;
autoUpdate = true;
};
core = {
ignorecase = false;
quotePath = false;
};
diff = {
colorMoved = "default";
submodule = "log";
tool = "nvimdiff";
};
push = {
autoSetupRemote = true;
default = "current";
};
};
signing = {
signByDefault = true;
key = null;
};
delta = {
enable = true;
options = {
navigate = true;
features = "interactive decorations";
2024-04-19 22:27:46 -05:00
interactive = {
keep-plus-minus-markers = false;
};
decorations = {
commit-decoration-style = "bold box ul";
dark = true;
file-style = "omit";
hunk-header-decoration-style = ''"#022b45" box ul'';
hunk-header-file-style = ''"#999999"'';
hunk-header-style = "file line-number syntax";
line-numbers = true;
line-numbers-left-style = ''"#022b45"'';
minus-emph-style = ''normal "#80002a"'';
minus-style = ''normal "#330011"'';
plus-emph-style = ''syntax "#003300"'';
plus-style = ''syntax "#001a00"'';
syntax-theme = "Solarized (dark)";
};
};
};
};
};
2024-02-04 22:26:55 -06:00
qt = {
enable = true;
2024-05-03 14:35:00 -05:00
style = {
name = "gtk2";
package = pkgs.libsForQt5.breeze-qt5;
};
platformTheme.name = "gtk";
2024-02-04 22:26:55 -06:00
};
home.pointerCursor = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
size = 24;
};
2024-04-19 22:27:46 -05:00
gtk =
let
extraGtkConfig = {
gtk-application-prefer-dark-theme = true;
gtk-cursor-theme-size = 0;
gtk-enable-event-sounds = 1;
gtk-enable-input-feedback-sounds = 1;
gtk-xft-antialias = 1;
gtk-xft-hinting = 1;
gtk-xft-hintstyle = "hintfull";
};
in
{
enable = true;
theme = {
name = "Kanagawa-BL";
package = pkgs.kanagawa-gtk-theme;
};
iconTheme = {
name = "Kanagawa";
2024-05-03 14:35:00 -05:00
package = pkgs.kanagawa-icon-theme;
2024-04-19 22:27:46 -05:00
};
font = {
name = "Open Sans";
size = 11;
package = pkgs.open-sans;
};
gtk3.extraConfig = extraGtkConfig;
gtk4.extraConfig = extraGtkConfig;
};
2024-02-04 22:26:55 -06:00
services = {
2024-05-03 14:35:00 -05:00
# blueman-applet.enable = true;
2024-03-16 00:33:11 -05:00
gromit-mpx = {
enable = true;
tools = [
{
device = "default";
type = "pen";
size = 5;
color = "red";
}
{
device = "default";
type = "pen";
size = 5;
color = "blue";
modifiers = [ "SHIFT" ];
}
{
device = "default";
type = "pen";
size = 5;
color = "yellow";
modifiers = [ "CONTROL" ];
}
{
device = "default";
type = "pen";
size = 6;
color = "green";
arrowSize = 1;
modifiers = [ "2" ];
}
{
device = "default";
type = "eraser";
size = 75;
modifiers = [ "3" ];
}
{
device = "default";
color = "red";
arrowSize = 5;
2024-04-19 22:27:46 -05:00
modifiers = [
"CONTROL"
"SHIFT"
];
2024-03-16 00:33:11 -05:00
}
{
device = "default";
color = "blue";
arrowSize = 5;
2024-04-19 22:27:46 -05:00
modifiers = [
"CONTROL"
"SHIFT"
"2"
];
2024-03-16 00:33:11 -05:00
}
{
device = "default";
color = "yellow";
arrowSize = 5;
2024-04-19 22:27:46 -05:00
modifiers = [
"CONTROL"
"SHIFT"
"3"
];
2024-03-16 00:33:11 -05:00
}
];
};
2024-02-04 22:26:55 -06:00
easyeffects.enable = true;
};
2024-02-02 11:58:59 -06:00
systemd.user = {
2024-05-03 14:35:00 -05:00
startServices = "sd-switch";
targets.compositor = {
Unit = {
Description = "Unit for DE to launch";
2024-04-19 22:27:46 -05:00
ConditionEnvironment = [
"WAYLAND_DISPLAY"
"DISPLAY"
];
};
};
services = {
keyd-application-mapper = {
Unit = {
Description = "Keyd - Linux Keyboard Remapper";
PartOf = [ "keyd.service" ];
};
Service = {
2024-05-29 01:05:01 -05:00
ExecStart = "${pkgs.keyd}/bin/keyd-application-mapper";
RestartSec = 3;
};
Install.WantedBy = [ "compositor.target" ];
};
waybar = {
Service = {
Environment = [ "GTK_THEME='THIS THEME DOES NOT EXIST!'" ];
RestartSec = 3;
};
Install.WantedBy = [ "compositor.target" ];
Unit = {
PartOf = [ "compositor.target" ];
After = [ "compositor.target" ];
};
};
2024-04-19 22:27:46 -05:00
gromit-mpx.Service.ExecStart = lib.mkForce "echo 'Disabled, managed by WM'";
easyeffects = {
Install.WantedBy = [ "compositor.target" ];
Unit = {
PartOf = [ "compositor.target" ];
After = [ "compositor.target" ];
};
};
2024-05-27 12:15:30 -05:00
polkit-gnome-authentication-agent-1 = {
Unit = {
Description = "Gnome Polkit authentication agent";
Documentation = "https://gitlab.freedesktop.org/polkit/polkit/";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "always";
};
Install.WantedBy = [ "graphical-session.target" ];
};
};
};
2023-11-30 00:49:32 -06:00
}