feat(home structure): Adding users + structuring common dir for them
This commit is contained in:
parent
d934c9ac18
commit
da5147903b
|
@ -0,0 +1,20 @@
|
|||
# https://github.com/sharkdp/bat
|
||||
# https://github.com/eth-p/bat-extras
|
||||
|
||||
{ pkgs, ... }: {
|
||||
programs.bat = {
|
||||
enable = true;
|
||||
config = {
|
||||
# Show line numbers, Git modifications and file header (but no grid)
|
||||
style = "numbers,changes,header";
|
||||
theme = "gruvbox-dark";
|
||||
};
|
||||
extraPackages = builtins.attrValues {
|
||||
inherit (pkgs.bat-extras)
|
||||
|
||||
batgrep# search through and highlight files using ripgrep
|
||||
batdiff# Diff a file against the current git index, or display the diff between to files
|
||||
batman; # read manpages using bat as the formatter
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
|
||||
services.ssh-agent.enable = true;
|
||||
|
||||
home = {
|
||||
username = lib.mkDefault "laozi";
|
||||
homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
||||
stateVersion = lib.mkDefault "24.05";
|
||||
sessionPath = [
|
||||
"$HOME/.local/bin"
|
||||
"$HOME/scripts/talon_scripts"
|
||||
];
|
||||
sessionVariables = {
|
||||
FLAKE = "$HOME/dotfiles/nix-config";
|
||||
SHELL = "zsh";
|
||||
TERM = "foot";
|
||||
TERMINAL = "foot";
|
||||
EDITOR = "nvim";
|
||||
MANPAGER = "batman"; # see ./cli/bat.nix
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
|
||||
# Packages that don't have custom configs go here
|
||||
|
||||
# TODO: spaces before comment are removed by nixpkgs-fmt
|
||||
# See: https://github.com/nix-community/nixpkgs-fmt/issues/305
|
||||
|
||||
borgbackup# backups
|
||||
ncdu# TUI disk usage
|
||||
btop# resource monitor
|
||||
pfetch# system info
|
||||
pciutils# pci bus info + conns. to them
|
||||
coreutils# basic gnu utils
|
||||
usbutils
|
||||
|
||||
mosh# mobile shell
|
||||
# curl
|
||||
ripgrep# better grep
|
||||
wget# downloader
|
||||
|
||||
eza# ls replacement
|
||||
fd# tree style ls
|
||||
findutils# find gnu.org/software/findutils/
|
||||
fzf# fuzzy search
|
||||
nix-tree# nix package tree viewer
|
||||
jq# JSON pretty printer and manipulator
|
||||
fx# Terminal JSON viewer & processor ~> fx.wtf
|
||||
tree# cli dir tree viewer
|
||||
|
||||
pre-commit# git hooks
|
||||
koji# conventional commits ~> https://github.com/its-danny/koji
|
||||
|
||||
p7zip# compression & encryption
|
||||
unzip# zip extraction
|
||||
unrar# rar extraction
|
||||
zstd# zstd compression
|
||||
zip; # zip compression
|
||||
};
|
||||
|
||||
nixpkgs = {
|
||||
overlays = builtins.attrValues outputs.overlays;
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
# Workaround for https://github.com/nix-community/home-manager/issues/2942
|
||||
allowUnfreePredicate = (_: true);
|
||||
};
|
||||
};
|
||||
|
||||
nix = {
|
||||
package = lib.mkDefault pkgs.nix;
|
||||
settings = {
|
||||
experimental-features = [ "nix-command" "flakes" "repl-flake" ];
|
||||
warn-dirty = true;
|
||||
};
|
||||
};
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
};
|
||||
|
||||
# Nicely reload system units when changing configs
|
||||
systemd.user.startServices = "sd-switch";
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
||||
home.packages = [
|
||||
pkgs.noto-fonts
|
||||
# pkgs.nerdfonts # => loads the complete collection.
|
||||
(nerdfonts.override { fonts = [ "FiraCode" "GeistMono" "DroidSansMono" "FontAwesome" "MaterialDesignIcons"]; })
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitAndTools.gitFull.overrideAttrs = (old: {
|
||||
postInstall = old.postInstall + ''
|
||||
cp ${./includes/git-aliases/docs}* $Doc/share/doc/git
|
||||
''
|
||||
});
|
||||
userName = "madmin";
|
||||
userEmail = "madmin@noreply.codeberg.com";
|
||||
aliases = {
|
||||
gs = "status";
|
||||
lg = "!git log --graph --oneline --decorate --all";
|
||||
};
|
||||
extraConfig = {
|
||||
init.defaultBranch = "master";
|
||||
url = {
|
||||
"ssh://git@github.com" = {
|
||||
insteadOf = "https://github.com";
|
||||
};
|
||||
"ssh://git@gitlab.com" = {
|
||||
insteadOf = "https://gitlab.com";
|
||||
};
|
||||
};
|
||||
# user.signing.key = "";
|
||||
#TODO sops - Re-enable once sops setup complete
|
||||
commit.gpgSign = false;
|
||||
gpg.program = "${config.programs.gpg.package}/bin/gpg2";
|
||||
};
|
||||
# enable git Large File Storage: https://git-lfs.com/
|
||||
# lfs.enable = true;
|
||||
ignores = [ ".direnv" "result" ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
programs.gitui = {
|
||||
enable = true;
|
||||
# Config and theme must be in RON file format
|
||||
# keyConfig = '' '';
|
||||
package = "pkgs.gitui";
|
||||
theme = ''(
|
||||
selected_tab: Reset,
|
||||
command_fg: White,
|
||||
selection_bg: Blue,
|
||||
selection_fg: White,
|
||||
cmdbar_bg: Blue,
|
||||
cmdbar_extra_lines_bg: Blue,
|
||||
disabled_fg: DarkGray,
|
||||
diff_line_add: Green,
|
||||
diff_line_delete: Red,
|
||||
diff_file_added: LightGreen,
|
||||
diff_file_removed: LightRed,
|
||||
diff_file_moved: LightMagenta,
|
||||
diff_file_modified: Yellow,
|
||||
commit_hash: Magenta,
|
||||
commit_time: LightCyan,
|
||||
commit_author: Green,
|
||||
danger_fg: Red,
|
||||
push_gauge_bg: Blue,
|
||||
push_gauge_fg: Reset,
|
||||
tag_fg: LightMagenta,
|
||||
branch_fg: LightYellow,
|
||||
) '';
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{ inputs, pkgs, ... }: {
|
||||
imports = [
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
enableMan = true; # install man pages for nixvim options
|
||||
|
||||
clipboard.register = "unnamedplus"; # use system clipboard instead of internal registers
|
||||
|
||||
colorschemes = {
|
||||
gruvbox = {
|
||||
enable = true;
|
||||
settings = {
|
||||
contrastDark = true;
|
||||
transparentBg = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
extraConfigVim = ''
|
||||
" ================ Persistent Undo ==================
|
||||
" Keep undo history across sessions, by storing in file.
|
||||
" Only works all the time.
|
||||
if has('persistent_undo')
|
||||
silent !mkdir ~/.vim/backups > /dev/null 2>&1
|
||||
set undodir=~/.vim/backups
|
||||
set undofile
|
||||
endif
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
options = [
|
||||
"--cmd cd" #replace cd with z and zi (via cdi)
|
||||
];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
# Here go packages without my configs
|
||||
#!Remember to comment without space after package
|
||||
signal-desktop# there are also clis and other sw for interaction with signal on desktop
|
||||
element-desktop# should be usable on wayland
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
# Here go packages without my configs
|
||||
#!Remember to comment without space after package
|
||||
}
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
pkgs,
|
||||
theme,
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [
|
||||
libsixel
|
||||
# for displaying images
|
||||
];
|
||||
programs.foot = {
|
||||
enable = true;
|
||||
server.enable = false;
|
||||
settings = {
|
||||
main = {
|
||||
app-id = "foot";
|
||||
title = "foot";
|
||||
locked-title = "no";
|
||||
term = "xterm-256color";
|
||||
font = "monospace:size=10.5";
|
||||
vertical-letter-offset = "-0.75";
|
||||
pad = "12x21 center";
|
||||
resize-delay-ms = 100;
|
||||
notify = "notify-send -a \${app-id} -i \${app-id} \${title} \${body}";
|
||||
selection-target = "primary";
|
||||
# box-drawings-uses-font-glyphs = "yes";
|
||||
dpi-aware = "yes";
|
||||
bold-text-in-bright = "no";
|
||||
word-delimiters = ",│`|:\"'()[]{}<>";
|
||||
};
|
||||
cursor = {
|
||||
style = "beam";
|
||||
beam-thickness = 2;
|
||||
};
|
||||
scrollback = {
|
||||
lines = 10000;
|
||||
multiplier = 3;
|
||||
};
|
||||
|
||||
bell = {
|
||||
urgent = "yes";
|
||||
notify = "yes";
|
||||
command = "notify-send bell";
|
||||
command-focused = "no";
|
||||
};
|
||||
url = {
|
||||
launch = "xdg-open \${url}";
|
||||
label-letters = "sadfjklewcmpgh";
|
||||
osc8-underline = "url-mode";
|
||||
protocols = "http, https, ftp, ftps, file, gemini, gopher, irc, ircs";
|
||||
|
||||
uri-characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+=\"'()[]";
|
||||
};
|
||||
colors = with theme.colors; {
|
||||
alpha = "0.75";
|
||||
foreground = text;
|
||||
background = base;
|
||||
|
||||
regular0 = surface1;
|
||||
regular1 = red;
|
||||
regular2 = green;
|
||||
regular3 = yellow;
|
||||
regular4 = blue;
|
||||
regular5 = pink;
|
||||
regular6 = teal;
|
||||
regular7 = subtext1;
|
||||
|
||||
bright0 = surface2;
|
||||
bright1 = red;
|
||||
bright2 = green;
|
||||
bright3 = yellow;
|
||||
bright4 = blue;
|
||||
bright5 = pink;
|
||||
bright6 = teal;
|
||||
bright7 = subtext0;
|
||||
};
|
||||
mouse = {
|
||||
hide-when-typing = "yes";
|
||||
};
|
||||
key-bindings = {
|
||||
show-urls-launch = "Control+Shift+u";
|
||||
unicode-input = "Control+Shift+i";
|
||||
};
|
||||
mouse-bindings = {
|
||||
selection-override-modifiers = "Shift";
|
||||
primary-paste = "BTN_MIDDLE";
|
||||
select-begin = "BTN_LEFT";
|
||||
select-begin-block = "Control+BTN_LEFT";
|
||||
select-extend = "BTN_RIGHT";
|
||||
select-extend-character-wise = "Control+BTN_RIGHT";
|
||||
select-word = "BTN_LEFT-2";
|
||||
select-word-whitespace = "Control+BTN_LEFT-2";
|
||||
#select-row = "BTN_LEFT-3";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
# Here go packages without my configs
|
||||
#!Remember to comment without space after package
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
# Here go packages without my configs
|
||||
#!Remember to comment without space after package
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
commandLineArgs = [
|
||||
"--no-default-browser-check"
|
||||
"--restore-last-sesion"
|
||||
];
|
||||
arkenfox = {
|
||||
enable = true;
|
||||
version = "103.0";
|
||||
};
|
||||
profiles.Default.arkenfox = {
|
||||
enable = true;
|
||||
"0000".enable = true;
|
||||
"0001" = {
|
||||
enable = true;
|
||||
"0101"."browser.shell.checkDefaultBrowser".value = true;
|
||||
};
|
||||
"0002" = {
|
||||
enable = true;
|
||||
"0204"."browser.search.region".enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
# Here go packages without my configs
|
||||
#!Remember to comment without space after package
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
# Here go packages without my configs
|
||||
#!Remember to comment without space after package
|
||||
libreoffice# TODO: will it work on wayland?
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
# Here go packages without my configs
|
||||
#!Remember to comment without space after package
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{ config, lib, pkgs, outputs, configLib, ... }:
|
||||
{
|
||||
imports = (configLib.scanPaths ./.)
|
||||
++ (builtins.attrValues outputs.homeManagerModules);
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
# Here go packages without my configs
|
||||
#!Remember to comment without space after package
|
||||
fwupd# firmware updater default on KDE
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{ configVars, ... }:
|
||||
{
|
||||
imports = [
|
||||
# ======================= Hardware Configs ========================= #
|
||||
|
||||
# ======================= Required Configs ========================= #
|
||||
/core
|
||||
|
||||
# ================ Host-specific Optional Configs ================== #
|
||||
common/optional/utilities
|
||||
common/optional/dev/foot.nix
|
||||
common/optional/office
|
||||
];
|
||||
|
||||
|
||||
home = {
|
||||
username = configVars.username;
|
||||
homeDirectory = "/home/${configVars.username}";
|
||||
};
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{ configVars, ... }:
|
||||
{
|
||||
imports = [
|
||||
# ======================= Hardware Configs ========================= #
|
||||
|
||||
# ======================= Required Configs ========================= #
|
||||
/core
|
||||
|
||||
# ================ Host-specific Optional Configs ================== #
|
||||
common/optional/desktop
|
||||
common/optional/dev
|
||||
];
|
||||
|
||||
|
||||
home = {
|
||||
username = configVars.username;
|
||||
homeDirectory = "/home/${configVars.username}";
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue