Price Hiller
4a73c88dc9
All checks were successful
Check Formatting of Files / Check-Formatting (push) Successful in 1m11s
589 lines
15 KiB
Nix
589 lines
15 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
dotsDir = "${config.home.homeDirectory}/.config/home-manager/users/price/dots";
|
|
softLinkDots =
|
|
dir:
|
|
(builtins.listToAttrs (
|
|
map (n: {
|
|
name = "${dir + "/" + n}";
|
|
value = {
|
|
source = config.lib.file.mkOutOfStoreSymlink "${dotsDir}/${dir}/${n}";
|
|
force = true;
|
|
};
|
|
}) (builtins.attrNames (builtins.readDir ./dots/${dir}))
|
|
));
|
|
in
|
|
{
|
|
programs.home-manager.enable = true;
|
|
nixpkgs = {
|
|
config.allowUnfree = true;
|
|
};
|
|
home = {
|
|
language.base = "en_US.UTF-8";
|
|
packages =
|
|
with pkgs;
|
|
[
|
|
mako
|
|
wl-clipboard
|
|
grim
|
|
unzip
|
|
bat
|
|
Fmt
|
|
starship
|
|
nodePackages.prettier
|
|
cargo
|
|
rustc
|
|
rustfmt
|
|
python3
|
|
shfmt
|
|
bob-nvim
|
|
neovide
|
|
wezterm
|
|
fontconfig
|
|
sqlite
|
|
luajit
|
|
imagemagick
|
|
dotnet-sdk_8
|
|
shellcheck
|
|
openjdk
|
|
nodejs
|
|
poetry
|
|
ruby
|
|
yamllint
|
|
curl
|
|
openssh
|
|
openssl
|
|
wget
|
|
rsync
|
|
readline
|
|
gh
|
|
ffmpeg
|
|
silicon
|
|
man
|
|
jq
|
|
tectonic
|
|
fzf
|
|
delta
|
|
eza
|
|
ripgrep
|
|
fd
|
|
nixfmt-rfc-style
|
|
lxappearance
|
|
opensnitch-ui
|
|
twitter-color-emoji
|
|
open-sans
|
|
noto-fonts
|
|
fira-code
|
|
nerdfonts
|
|
direnv
|
|
swappy
|
|
stylua
|
|
typstfmt
|
|
typst
|
|
hurl
|
|
easyeffects
|
|
egl-wayland
|
|
helvum
|
|
brightnessctl
|
|
keyd
|
|
tidal-hifi
|
|
nix-output-monitor
|
|
sops
|
|
ungoogled-chromium
|
|
tree-sitter
|
|
qt6Packages.qt6gtk2
|
|
qt6Packages.qt6ct
|
|
libsForQt5.qt5ct
|
|
]
|
|
++ [
|
|
go
|
|
(lib.hiPrio gotools)
|
|
]
|
|
++ [
|
|
age
|
|
age-plugin-yubikey
|
|
passage
|
|
]
|
|
++ [
|
|
ansible
|
|
ansible-lint
|
|
]
|
|
++ [
|
|
gnumake
|
|
cmake
|
|
gcc
|
|
glibc
|
|
glibc.static
|
|
llvm
|
|
llvmPackages.libcxxStdenv
|
|
]
|
|
++ [ rust-analyzer ];
|
|
|
|
file = {
|
|
".local/share/wallpapers" = {
|
|
source = ./dots/.local/share/wallpapers;
|
|
force = true;
|
|
};
|
|
".omnisharp" = {
|
|
source = ./dots/.omnisharp;
|
|
force = true;
|
|
};
|
|
".latexmkrc" = {
|
|
source = ./dots/.latexmkrc;
|
|
force = true;
|
|
};
|
|
} // softLinkDots ".config";
|
|
|
|
sessionVariables = {
|
|
TERMINFO_DIRS = "${config.home.homeDirectory}/.nix-profile/share/terminfo";
|
|
WSLENV = "TERMINFO_DIRS";
|
|
GTK_PATH = "${pkgs.gtk-engine-murrine}/lib/gtk-2.0";
|
|
# PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig:${pkgs.sqlite.dev}/lib/pkgconfig";
|
|
# LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [
|
|
# openssl
|
|
# curl
|
|
# sqlite
|
|
# ];
|
|
};
|
|
sessionPath = [ "${config.xdg.dataHome}/bin" ];
|
|
};
|
|
|
|
fonts.fontconfig.enable = true;
|
|
|
|
xdg = {
|
|
enable = true;
|
|
mime.enable = true;
|
|
systemDirs.data = [ "${config.home.homeDirectory}/.nix-profile/share/" ];
|
|
mimeApps = {
|
|
enable = true;
|
|
associations.added = {
|
|
"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" ];
|
|
"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 = {
|
|
"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>
|
|
'';
|
|
"bob/config.toml".text = ''
|
|
installation_location = "${config.xdg.dataHome}/bin"
|
|
'';
|
|
};
|
|
};
|
|
|
|
programs = {
|
|
emacs = {
|
|
enable = true;
|
|
package = pkgs.emacs-pgtk.overrideAttrs (old: {
|
|
passthru = old.passthru // {
|
|
treeSitter = true;
|
|
};
|
|
});
|
|
extraPackages = (epkgs: (with epkgs; [ treesit-grammars.with-all-grammars ]));
|
|
};
|
|
wofi.enable = true;
|
|
gpg.enable = true;
|
|
firefox = {
|
|
enable = true;
|
|
package = pkgs.firefox-devedition;
|
|
};
|
|
waybar = {
|
|
enable = true;
|
|
systemd.enable = true;
|
|
};
|
|
zsh = {
|
|
enable = true;
|
|
initExtra = ''
|
|
__HM_SESS_VARS_SOURCED= source "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
|
|
source "$HOME/.config/zsh/zsh"
|
|
'';
|
|
};
|
|
git = {
|
|
enable = true;
|
|
userName = "Price Hiller";
|
|
userEmail = "price@orion-technologies.io";
|
|
aliases = {
|
|
unstage = "reset HEAD --";
|
|
};
|
|
extraConfig = {
|
|
init.defaultBranch = "Development";
|
|
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 = "C3FADDE7A8534BEB";
|
|
};
|
|
delta = {
|
|
enable = true;
|
|
options = {
|
|
navigate = true;
|
|
features = "interactive decorations";
|
|
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)";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
qt = {
|
|
enable = true;
|
|
style = {
|
|
name = "gtk2";
|
|
package = pkgs.libsForQt5.breeze-qt5;
|
|
};
|
|
platformTheme.name = "gtk";
|
|
};
|
|
|
|
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";
|
|
package = pkgs.kanagawa-icon-theme;
|
|
};
|
|
font = {
|
|
name = "Open Sans";
|
|
size = 11;
|
|
package = pkgs.open-sans;
|
|
};
|
|
gtk3.extraConfig = extraGtkConfig;
|
|
gtk4.extraConfig = extraGtkConfig;
|
|
};
|
|
|
|
services = {
|
|
# blueman-applet.enable = true;
|
|
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;
|
|
modifiers = [
|
|
"CONTROL"
|
|
"SHIFT"
|
|
];
|
|
}
|
|
{
|
|
device = "default";
|
|
color = "blue";
|
|
arrowSize = 5;
|
|
modifiers = [
|
|
"CONTROL"
|
|
"SHIFT"
|
|
"2"
|
|
];
|
|
}
|
|
{
|
|
device = "default";
|
|
color = "yellow";
|
|
arrowSize = 5;
|
|
modifiers = [
|
|
"CONTROL"
|
|
"SHIFT"
|
|
"3"
|
|
];
|
|
}
|
|
];
|
|
};
|
|
cliphist.enable = true;
|
|
easyeffects.enable = true;
|
|
opensnitch-ui.enable = true;
|
|
gpg-agent = {
|
|
enable = true;
|
|
enableSshSupport = true;
|
|
enableZshIntegration = true;
|
|
pinentryPackage = pkgs.pinentry-qt;
|
|
maxCacheTtl = 14400;
|
|
maxCacheTtlSsh = 14400;
|
|
sshKeys = [ "530D3EC95C32AB9EC33714AAF865738D6E77680A" ];
|
|
extraConfig = ''
|
|
allow-loopback-pinentry
|
|
'';
|
|
};
|
|
};
|
|
|
|
systemd.user = {
|
|
startServices = "sd-switch";
|
|
targets.compositor = {
|
|
Unit = {
|
|
Description = "Unit for DE to launch";
|
|
ConditionEnvironment = [
|
|
"WAYLAND_DISPLAY"
|
|
"DISPLAY"
|
|
];
|
|
};
|
|
};
|
|
services = {
|
|
swww-daemon = {
|
|
Service =
|
|
let
|
|
cleanup-socket-script = pkgs.writeShellScript "swww-daemon-cleanup-socket" ''
|
|
# Remove the existing swww.socket if it exists, avoids some issues with swww-daemon
|
|
# startup where swww-daemon claims the address is already in use
|
|
if [[ -w "$XDG_RUNTIME_DIR/swww.socket" ]]; then
|
|
rm -f $XDG_RUNTIME_DIR/swww.socket || exit 1
|
|
fi
|
|
'';
|
|
in
|
|
{
|
|
RestartSec = 3;
|
|
PassEnvironment = [ "XDG_RUNTIME_DIR" ];
|
|
ExecStartPre = "${cleanup-socket-script}";
|
|
ExecStopPost = "${cleanup-socket-script}";
|
|
ExecStart = "${pkgs.swww}/bin/swww-daemon";
|
|
};
|
|
Install.WantedBy = [ "compositor.target" ];
|
|
Unit = {
|
|
Description = "Wayland Wallpaper Service";
|
|
PartOf = [ "compositor.target" ];
|
|
After = [ "compositor.target" ];
|
|
};
|
|
};
|
|
swww-wallpapers = {
|
|
Service = {
|
|
RestartSec = 3;
|
|
Type = "oneshot";
|
|
Environment = [
|
|
"SWWW_TRANSITION_FPS=120"
|
|
"SWWW_TRANSITION_STEP=30"
|
|
"SWWW_TRANSITION_DURATION=0.75"
|
|
];
|
|
ExecStart =
|
|
let
|
|
wallpaper-dir = "${dotsDir}/.local/share/wallpapers";
|
|
in
|
|
[
|
|
"${pkgs.swww}/bin/swww img -t random ${wallpaper-dir}/Nebula.jpg"
|
|
"${pkgs.swww}/bin/swww img -t wipe --transition-angle 40 -o eDP-1 ${wallpaper-dir}/Autumn-Leaves.jpg"
|
|
];
|
|
};
|
|
Install.WantedBy = [ "swww-daemon.service" ];
|
|
Unit = {
|
|
Description = "Wayland Wallpaper Service";
|
|
PartOf = [ "swww-daemon.service" ];
|
|
After = [ "swww-daemon.service" ];
|
|
};
|
|
};
|
|
keyd-application-mapper = {
|
|
Unit = {
|
|
Description = "Keyd - Linux Keyboard Remapper";
|
|
PartOf = [ "keyd.service" ];
|
|
};
|
|
Service = {
|
|
ExecStart = "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" ];
|
|
};
|
|
};
|
|
gromit-mpx.Service.ExecStart = lib.mkForce "echo 'Disabled, managed by WM'";
|
|
opensnitch-ui = {
|
|
Service.RestartSec = 3;
|
|
Install.WantedBy = [ "compositor.target" ];
|
|
Unit = {
|
|
PartOf = [ "compositor.target" ];
|
|
After = [
|
|
"compositor.target"
|
|
"waybar.service"
|
|
];
|
|
};
|
|
};
|
|
easyeffects = {
|
|
Install.WantedBy = [ "compositor.target" ];
|
|
Unit = {
|
|
PartOf = [ "compositor.target" ];
|
|
After = [ "compositor.target" ];
|
|
};
|
|
};
|
|
cliphist = {
|
|
Service.RestartSec = 3;
|
|
Install.WantedBy = [ "compositor.target" ];
|
|
Unit = {
|
|
PartOf = [ "compositor.target" ];
|
|
After = [ "compositor.target" ];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|