nix-config/home-manager/home.nix

220 lines
5.5 KiB
Nix

{ inputs, outputs, config, pkgs, ... }:
let
nix-colors-lib = inputs.nix-colors.lib.contrib { inherit pkgs; };
in {
imports = [
inputs.nix-colors.homeManagerModules.default
outputs.homeManagerModules.alacritty
outputs.homeManagerModules.opinions
outputs.homeManagerModules.gtkConfig
];
nixpkgs.config.allowUnfree = true;
home.username = "oatmealine";
home.homeDirectory = "/home/oatmealine";
colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;
opinions = {
fonts = {
regular = {
package = pkgs.atkinson-hyperlegible;
family = "Atkinson Hyperlegible";
size = 11;
};
monospace = {
package = pkgs.cozette;
family = "CozetteVector";
size = 10;
};
monospaceBitmap = {
package = pkgs.cozette;
family = "Cozette";
size = 10;
};
};
lowercaseXdgDirs = true;
};
programs.git = {
enable = true;
userName = ''Jill "oatmealine" Monoids'';
userEmail = "oatmealine@disroot.org";
};
dconf = {
enable = true;
#settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
};
# Packages that should be installed to the user profile.
home.packages = with pkgs; [
# archives
zip
xz
unzip
p7zip
# utils
ripgrep # recursively searches directories for a regex pattern
jq # A lightweight and flexible command-line JSON processor
nil
# misc
cowsay
file
which
tree
gnused
grc
nix-output-monitor
btop # replacement of htop/nmon
# system call monitoring
strace # system call monitoring
ltrace # library call monitoring
lsof # list open files
# system tools
sysstat
lm_sensors # for `sensors` command
ethtool
pciutils # lspci
usbutils # lsusb
powertop
vivaldi
(discord.override {
withOpenASAR = true;
withVencord = true;
})
telegram-desktop
doas-sudo-shim
gnome.gnome-tweaks
onlyoffice-bin
];
alacritty.enable = true;
gtkConfig = {
enable = true;
cursor = {
package = pkgs.graphite-cursors;
name = "graphite-dark";
};
icon = {
package = pkgs.papirus-nord;
name = "Papirus-Dark";
};
};
programs.vscode = {
enable = true;
extensions = with pkgs.vscode-extensions; [
bbenoist.nix
];
};
programs.fish = let
colorScript = nix-colors-lib.shellThemeFromScheme { scheme = config.colorScheme; };
in {
enable = true;
interactiveShellInit = ''
sh ${colorScript}
'';
plugins = [
{ name = "grc"; src = pkgs.fishPlugins.grc.src; }
#{ name = "tide"; src = pkgs.fishPlugins.tide.src; }
];
};
programs.micro = {
enable = true;
settings = {
autosu = true;
clipboard = "terminal";
colorscheme = "generated";
savecursor = true;
scrollbar = true;
tabsize = 2;
tabstospaces = true;
};
};
home.file."micro-generated-colorscheme" = {
enable = true;
target = ".config/micro/colorschemes/generated.micro";
text = with config.colorScheme.colors; ''
color-link default "#${base05},#${base00}"
color-link comment "#${base03},#${base00}"
color-link identifier "#${base0D},#${base00}"
color-link constant "#${base0E},#${base00}"
color-link constant.string "#E6DB74,#${base00}"
color-link constant.string.char "#BDE6AD,#${base00}"
color-link statement "#${base08},#${base00}"
color-link symbol.operator "#${base08},#${base00}"
color-link preproc "#CB4B16,#${base00}"
color-link type "#${base0D},#${base00}"
color-link special "#${base0B},#${base00}"
color-link underlined "#D33682,#${base00}"
color-link error "bold #CB4B16,#${base00}"
color-link todo "bold #D33682,#${base00}"
color-link hlsearch "#${base00},#E6DB74"
color-link statusline "#${base00},#${base05}"
color-link tabbar "#${base00},#${base05}"
color-link indent-char "#505050,#${base00}"
color-link line-number "#AAAAAA,#${base01}"
color-link current-line-number "#AAAAAA,#${base00}"
color-link diff-added "#00AF00"
color-link diff-modified "#FFAF00"
color-link diff-deleted "#D70000"
color-link gutter-error "#CB4B16,#${base00}"
color-link gutter-warning "#E6DB74,#${base00}"
color-link cursor-line "#${base01}"
color-link color-column "#${base01}"
#No extended types; Plain brackets.
color-link type.extended "default"
#color-link symbol.brackets "default"
color-link symbol.tag "#${base0E},#${base00}"
'';
};
services.syncthing = {
enable = true;
tray.enable = true;
};
dconf.settings = {
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
binding = "Print";
command = "${pkgs.lib.getExe pkgs.flameshot} gui";
name = "take-screenshot";
};
};
# This value determines the home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new home Manager release introduces backwards
# incompatible changes.
#
# You can update home Manager without changing this value. See
# the home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "23.11";
# Let home Manager install and manage itself.
programs.home-manager.enable = true;
}