config/shared/home/default.nix

222 lines
5.6 KiB
Nix
Raw Normal View History

{
2023-10-09 17:17:24 +03:00
lib,
pkgs,
2023-10-06 11:32:22 +03:00
stateVersion,
2023-10-06 14:32:52 +03:00
email,
2024-02-04 22:05:44 +02:00
devTools,
2023-10-27 10:31:00 +03:00
hmOnly,
username,
...
2024-02-02 11:06:36 +02:00
}: let
2024-02-02 13:51:43 +02:00
# from https://github.com/Gerg-L/demoninajar/blob/39964f198dbfa34c21f81c35370fab312b476051/homes/veritas_manjaro/nixGL.nix#L42
mkWrapped = wrap: orig-pkg: execName:
pkgs.makeOverridable
(
attrs: let
pkg = orig-pkg.override attrs;
outs = pkg.meta.outputsToInstall;
paths = pkgs.lib.attrsets.attrVals outs pkg;
nonTrivialOuts = pkgs.lib.lists.remove "out" outs;
metaAttributes =
pkgs.lib.attrsets.getAttrs
(
[
"name"
"pname"
"version"
"meta"
]
++ nonTrivialOuts
)
pkg;
in
pkgs.symlinkJoin (
{
inherit paths;
2024-02-02 13:54:06 +02:00
nativeBuildInputs = [pkgs.makeWrapper];
2024-02-02 13:51:43 +02:00
postBuild = ''
mv $out/bin/${execName} $out/bin/.${execName}-mkWrapped-original
2024-02-04 22:05:44 +02:00
makeWrapper \
${wrap}/bin/${wrap.name} $out/bin/${execName} \
--add-flags $out/bin/.${execName}-mkWrapped-original
2024-02-02 13:51:43 +02:00
'';
}
// metaAttributes
)
)
{};
glintel = mkWrapped pkgs.nixgl.nixGLIntel;
2024-03-06 09:11:48 +02:00
firefox =
if (pkgs.stdenv.hostPlatform.system == "x86_64-linux")
then pkgs.firefox-bin
else pkgs.firefox;
2024-03-12 16:50:11 +02:00
homeDirectory = "/home/${username}";
2024-02-02 11:06:36 +02:00
in {
home = {
2024-03-12 16:50:11 +02:00
inherit stateVersion username homeDirectory;
};
2024-03-13 09:56:08 +02:00
home.file = {
".cache/evolution/.stignore".text = "*.db";
".parallel/will-cite".text = "";
};
2024-03-12 16:50:11 +02:00
home.sessionVariables = lib.mkIf devTools {
GOPATH = "${homeDirectory}/.go";
};
2023-10-23 09:48:14 +03:00
home.packages = with pkgs;
2023-12-12 13:16:02 +02:00
lib.mkMerge [
2024-02-04 22:05:44 +02:00
(lib.mkIf devTools [
2024-03-13 14:05:52 +02:00
pkgs-unstable.go_1_22
2023-12-18 22:57:09 +02:00
zig
2023-12-12 13:16:02 +02:00
])
2024-02-02 11:06:36 +02:00
2023-12-12 13:16:02 +02:00
(lib.mkIf hmOnly [
2024-02-07 11:24:04 +02:00
# pkgs by motiejus
2024-02-05 09:19:16 +02:00
tmuxbash
nicer
2024-02-07 11:24:04 +02:00
2023-10-27 10:31:00 +03:00
ncdu
2024-02-05 13:42:13 +02:00
poop
2023-10-27 10:31:00 +03:00
tokei
2024-02-07 11:24:04 +02:00
bloaty
2023-12-07 10:24:58 +02:00
scrcpy
yt-dlp
2023-10-27 10:31:00 +03:00
vimv-rs
2024-02-05 13:42:13 +02:00
ripgrep
2024-02-07 13:53:02 +02:00
yamllint
2023-12-14 10:10:00 +02:00
bandwhich
2023-10-27 10:31:00 +03:00
hyperfine
2024-02-14 15:54:42 +02:00
nix-output-monitor
2023-12-12 13:16:02 +02:00
])
];
2024-02-04 22:23:56 +02:00
programs = lib.mkMerge [
{
direnv.enable = true;
man = {
enable = true;
generateCaches = true;
};
2024-03-12 16:14:15 +02:00
chromium = {
enable = true;
extensions = [
2024-03-12 16:17:17 +02:00
{id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} # ublock origin
{id = "mdjildafknihdffpkfmmpnpoiajfjnjd";} # consent-o-matic
2024-03-12 16:14:15 +02:00
];
};
2024-02-04 22:23:56 +02:00
firefox = lib.mkIf devTools {
2023-11-27 18:17:27 +02:00
enable = true;
2024-02-04 22:23:56 +02:00
# firefox doesn't need the wrapper on the personal laptop
package =
if hmOnly
2024-03-06 09:05:22 +02:00
then (glintel firefox "firefox")
else firefox;
2024-02-04 22:23:56 +02:00
policies.DisableAppUpdate = true;
profiles = {
xdefault = {
isDefault = true;
settings = {
"app.update.auto" = false;
"browser.aboutConfig.showWarning" = false;
"browser.contentblocking.category" = "strict";
"browser.urlbar.showSearchSuggestionsFirst" = false;
"layout.css.prefers-color-scheme.content-override" = 0;
"signon.management.page.breach-alerts.enabled" = false;
"signon.rememberSignons" = false;
};
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
bitwarden
ublock-origin
consent-o-matic
multi-account-containers
];
};
};
2023-11-27 18:17:27 +02:00
};
2024-02-04 22:23:56 +02:00
neovim = lib.mkMerge [
2023-11-27 18:17:27 +02:00
{
2024-02-04 22:23:56 +02:00
enable = true;
vimAlias = true;
vimdiffAlias = true;
defaultEditor = true;
plugins = lib.mkMerge [
[pkgs.vimPlugins.fugitive]
(lib.mkIf devTools [
pkgs.pkgs-unstable.vimPlugins.vim-go
pkgs.vimPlugins.zig-vim
])
];
2024-02-04 22:23:56 +02:00
extraConfig = builtins.readFile ./vimrc;
2023-11-27 18:17:27 +02:00
}
2024-02-04 22:23:56 +02:00
(lib.mkIf devTools {
extraLuaConfig =
builtins.readFile
(pkgs.substituteAll {
src = ./dev.lua;
inherit (pkgs) gotools ripgrep;
})
.outPath;
})
2023-11-27 18:17:27 +02:00
];
2024-02-04 22:23:56 +02:00
git = {
enable = true;
userEmail = email;
userName = "Motiejus Jakštys";
aliases.yolo = "commit --amend --no-edit -a";
extraConfig = {
rerere.enabled = true;
pull.ff = "only";
2024-02-14 11:18:49 +02:00
merge.conflictstyle = "zdiff3";
2024-02-04 22:23:56 +02:00
init.defaultBranch = "main";
};
};
gpg = {
enable = true;
mutableKeys = false;
mutableTrust = false;
publicKeys = [
{
source = ./motiejus-gpg.txt;
trust = "ultimate";
}
];
};
tmux = {
enable = true;
keyMode = "vi";
historyLimit = 1000000;
extraConfig = ''
bind c new-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind '"' split-window -v -c "#{pane_current_path}"
2024-04-10 10:13:23 +03:00
# neovim :checkhealth
set-option -sg escape-time 10
set-option -g default-terminal "screen-256color"
2024-04-10 10:16:03 +03:00
set-option -sa terminal-features ',xterm-256color:RGB'
2024-02-04 22:23:56 +02:00
'';
};
}
(
lib.mkIf (!hmOnly)
{
bash = {
enable = true;
shellAliases = {
2024-04-12 14:02:28 +03:00
"l" = "echo -n ł | ${pkgs.xclip}/bin/xclip -selection clipboard";
2024-02-04 22:23:56 +02:00
"gp" = "${pkgs.git}/bin/git remote | ${pkgs.parallel}/bin/parallel --verbose git push";
};
2024-04-12 14:02:28 +03:00
initExtra = "source ${./gg.sh}";
2024-02-04 22:23:56 +02:00
};
}
)
];
}