idiosyn/home/config/nil/home.nix

360 lines
6.7 KiB
Nix
Raw Normal View History

2024-08-25 11:11:12 +02:00
{ self, nur, stylix, nix-index-database, niri, ... }: { config, lib, pkgs, ... }@args:
2024-08-18 13:47:18 +02:00
let
osConfig = args.osConfig or { };
in {
imports = [
nur.hmModules.nur
2024-08-25 19:10:52 +02:00
self.homeModules.greedy
2024-08-18 13:47:18 +02:00
self.homeModules.locale-en_EU
nix-index-database.hmModules.nix-index
stylix.homeManagerModules.stylix
2024-08-25 11:11:12 +02:00
niri.homeModules.config
niri.homeModules.stylix
2024-08-18 13:47:18 +02:00
] ++ self.lib.mods [
2024-08-25 19:10:52 +02:00
./gammarelay.nix
./founts.nix
./stylix.nix
./desktop.nix
./bar.nix
./terminal.nix
2024-08-18 13:47:18 +02:00
./firefox.nix
2024-08-25 19:10:52 +02:00
./thunderbird.nix
./sioyek.nix
./texlive.nix
2024-08-25 21:57:42 +02:00
./mpv.nix
2024-08-26 13:05:56 +02:00
./music.nix
2024-08-18 13:47:18 +02:00
];
home.stateVersion = "24.11";
home.enableNixpkgsReleaseCheck = false;
home.activation = {
fish = lib.hm.dag.entryAfter ["writeBoundary"] ''
run ${lib.getExe config.programs.fish.package} -c 'set -U fish_greeting'
'';
};
home.packages = with pkgs; [
# Terminfo
kitty.terminfo
# Core utilities
(lib.meta.setPrio 0 uutils-coreutils-noprefix)
# Text manipulation
2024-08-28 11:53:20 +02:00
delta
2024-08-18 13:47:18 +02:00
sd
skim
# Networking
dogdns
whois
xh
# Filesystem
file
#xcp
# Development
pijul
# Calculator
fend
];
home.sessionVariables = {
TMPDIR = "$XDG_RUNTIME_DIR/tmp";
};
editorconfig = {
enable = true;
settings = {
"*" = {
indent_style = "tab";
tab_width = 4;
end_of_line = "lf";
charset = "utf-8";
trim_trailing_whitespace = true;
insert_final_newline = true;
};
"*.nix" = {
indent_style = "space";
indent_size = 2;
};
};
};
home.shellAliases = {
icat = "kitten icat";
};
home.preferXdgDirectories = true;
programs.aria2 = {
enable = true;
settings = {
max-concurrent-downloads = 4;
max-connection-per-server = 2;
min-split-size = "16M";
remote-time = true;
split = 4;
http-accept-gzip = true;
max-overall-upload-limit = "256K";
dscp = 8;
enable-mmap = true;
file-allocation = "falloc";
};
};
programs.bat.enable = true;
programs.bottom = {
enable = true;
settings.flags = {
group = true;
battery = true;
color = "gruvbox";
mem_as_value = true;
network_use_binary_prefix = true;
network_use_bytes = true;
};
};
programs.eza = {
enable = true;
icons = true;
git = true;
extraOptions = [
"--binary"
"--colour=automatic"
"--colour-scale=all"
"--colour-scale-mode=gradient"
"--group-directories-first"
];
};
programs.fd.enable = true;
programs.fish = {
enable = true;
functions = {
fish_prompt = ''
set -l user_colour 'green'
if fish_is_root_user
set user_colour 'red'
end
echo -n -s (set_color $user_colour --bold) $USER@ (prompt_hostname) \
(set_color blue --bold) ' ' (prompt_pwd) ' ' (set_color normal)
'';
fish_right_prompt = ''
set -l st $status
if test $st -ne 0
set_color red --bold
printf "%s " (sysexit $st)
set_color normal
end
'';
fish_title = "prompt_pwd";
sysexit = builtins.readFile ./sysexit.fish;
};
interactiveShellInit = ''
if type -q tabs
tabs -4
end
'';
};
2024-08-24 18:15:18 +02:00
programs.git = let
key = "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAICczPHRwY9MAwDGlcB0QgMOJjcpLJhVU3covrW9RBS62AAAABHNzaDo=";
in {
2024-08-18 13:47:18 +02:00
enable = true;
2024-08-28 11:53:20 +02:00
delta.enable = true;
2024-08-18 13:47:18 +02:00
userName = "Mikael Voss";
userEmail = "mvs@nyantec.com";
extraConfig = {
core = {
eol = "lf";
fsync = "committed";
};
2024-08-24 18:15:18 +02:00
user.signingKey = "key::${key}";
2024-08-18 13:47:18 +02:00
init.defaultBranch = "main";
pull.rebase = true;
push.autoSetupRemote = true;
rebase.autoStash = true;
gpg.format = "ssh";
gpg.ssh.allowedSignersFile = toString (pkgs.writeText "allowed-signers" ''
2024-08-24 18:15:18 +02:00
${config.programs.git.userEmail} ${key}
2024-08-18 13:47:18 +02:00
'');
commit.gpgSign = true;
tag.gpgSign = true;
};
};
programs.helix = {
enable = true;
defaultEditor = true;
settings = {
editor.auto-pairs = {
"" = "";
"" = "";
"" = "";
"" = "";
};
editor.whitespace.render = {
nbsp = "all";
nnbsp = "all";
tab = "all";
};
editor.whitespace.characters = {
nbsp = "";
nnbsp = "";
tab = "»";
tabpad = "·";
};
keys.normal = {
minus = "command_mode";
r = "move_char_left";
n = "move_visual_line_down";
t = "move_visual_line_up";
h = "move_char_right";
};
};
};
programs.jq.enable = true;
programs.man.generateCaches =
osConfig.documentation.man.generateCaches or false;
programs.ripgrep.enable = true;
programs.ssh = {
enable = true;
compression = true;
controlMaster = "auto";
controlPath = "\${XDG_RUNTIME_DIR}/ssh/%r@%n:%p";
controlPersist = "1m";
matchBlocks = {
"*.nyantec.com".user = "mvs";
"solitary.social" = {
user = "nil";
forwardAgent = true;
};
};
serverAliveInterval = 10;
serverAliveCountMax = 60;
};
programs.vim = {
enable = true;
settings = {
background = "dark";
expandtab = false;
number = true;
shiftwidth = 4;
tabstop = 4;
};
extraConfig = ''
" no Vi compatibility
set nocompatible
" Unicode support
set encoding=utf-8
" special characters
set list
set listchars=tab:»·,trail:·,extends:
set ruler
" movement
noremap r h
noremap R H
noremap n j
noremap t k
noremap h l
noremap H L
" beginning of previous word
noremap p b
" end of word
noremap l e
noremap L E
" change one char
noremap X s
" repeat search
noremap ; n
noremap : N
" paste
noremap s p
noremap S P
" join lines
noremap N J
" change
noremap e c
noremap E C
" replace
noremap z r
noremap Z R
" inclusive jump
noremap m f
noremap M F
" exlusive jump
noremap f t
noremap F T
" command mode
noremap - :
'';
};
services.ssh-agent.enable = true;
systemd.user.tmpfiles.rules = [
"d %t/ssh 700"
"d %t/tmp 700 - - 24h"
];
xdg.userDirs =
let
home = config.home.homeDirectory;
in {
enable = true;
desktop = "${home}/tmp";
documents = "${home}/var";
download = "${home}/tmp";
pictures = "${home}/img";
music = "${home}/msc";
publicShare = null;
templates = null;
videos = null;
};
}