more organization for componentizing home-manager conifg
parent
b8d7024b93
commit
ca42be3f5f
|
@ -1,3 +1,9 @@
|
|||
{
|
||||
|
||||
mkModuleArgs = import ./mkModuleArgs.nix;
|
||||
modules = [
|
||||
./alacritty.nix
|
||||
./git.nix
|
||||
./ssh.nix
|
||||
./shells.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,3 +1,80 @@
|
|||
{
|
||||
|
||||
{ config
|
||||
, myLib
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
cfg = config.base.git;
|
||||
baseAliases = {
|
||||
a = "add";
|
||||
c = "commit";
|
||||
ca = "commit --amend";
|
||||
cm = "commit -m";
|
||||
lol = "log --graph --decorate --pretty=oneline --abbrev-commit";
|
||||
lola = "log --graph --decorate --pretty=oneline --abbrev-commit --all";
|
||||
sts = "status";
|
||||
co = "checkout";
|
||||
b = "branch";
|
||||
};
|
||||
in
|
||||
{
|
||||
options.base.git = {
|
||||
aliases = myLib.mkOption {
|
||||
type = myLib.types.attrs;
|
||||
default = { };
|
||||
example = baseAliases;
|
||||
description = ''
|
||||
Additional git aliases. This settings comes with base configuration.
|
||||
Redeclaring the base config will override the values.
|
||||
''; # TODO: Add baseAliases as string here (builtins.toString doesn't work)
|
||||
};
|
||||
name = myLib.mkOption {
|
||||
type = myLib.types.str;
|
||||
default = "Pegasust";
|
||||
description = "Git username that appears on commits";
|
||||
example = "Pegasust";
|
||||
};
|
||||
email = myLib.mkOption {
|
||||
type = myLib.types.str;
|
||||
default = "pegasucksgg@gmail.com";
|
||||
example = "peagsucksgg@gmail.com";
|
||||
description = "Git email that appears on commits";
|
||||
};
|
||||
ignores = myLib.mkOption {
|
||||
type = myLib.types.listOf myLib.types.str;
|
||||
default = [
|
||||
".vscode" # vscode settings
|
||||
".direnv" # .envrc cached outputs
|
||||
];
|
||||
description = ''
|
||||
.gitignore patterns that are applied in every repository.
|
||||
This is useful for IDE-specific settings.
|
||||
'';
|
||||
example = [ ".direnv" "node_modules" ];
|
||||
};
|
||||
enable = myLib.mkOption {
|
||||
type = myLib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Enables git
|
||||
'';
|
||||
example = false;
|
||||
};
|
||||
credentialCacheTimeoutSeconds = myLib.mkOption {
|
||||
type = myLib.types.int;
|
||||
default = 3000;
|
||||
description = "Credential cache (in-memory store) for Git in seconds.";
|
||||
example = 3000;
|
||||
};
|
||||
};
|
||||
# TODO : anyway to override configuration?
|
||||
config.programs.git = {
|
||||
inherit (cfg) enable ignores;
|
||||
userName = cfg.name;
|
||||
userEmail = cfg.email;
|
||||
aliases = baseAliases // cfg.aliases;
|
||||
extraConfig = {
|
||||
credential.helper = "cache --timeout=${builtins.toString cfg.credentialCacheTimeoutSeconds}";
|
||||
};
|
||||
lfs.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -28,7 +28,8 @@
|
|||
config = { allowUnfree = true; };
|
||||
};
|
||||
# lib = (import ../lib { inherit pkgs; lib = pkgs.lib; });
|
||||
mkModuleArgs = import ./base/mkModuleArgs.nix;
|
||||
base = import ./base;
|
||||
inherit (base) mkModuleArgs;
|
||||
in
|
||||
{
|
||||
homeConfigurations =
|
||||
|
@ -41,7 +42,7 @@
|
|||
rec {
|
||||
"hungtr" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [
|
||||
modules = base.modules ++ [
|
||||
./home.nix
|
||||
];
|
||||
# optionally pass inarguments to module
|
||||
|
@ -93,9 +94,8 @@
|
|||
# Personal laptop
|
||||
hwtr = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [
|
||||
modules = base.modules ++ [
|
||||
./home.nix
|
||||
./base/alacritty.nix
|
||||
{
|
||||
base.alacritty.font.family = "BitstreamVeraSansMono Nerd Font";
|
||||
}
|
||||
|
|
|
@ -139,40 +139,6 @@ in
|
|||
};
|
||||
initExtra = myHome.shellInitExtra or "";
|
||||
};
|
||||
programs.git = {
|
||||
enable = true;
|
||||
lfs.enable = true;
|
||||
aliases = {
|
||||
a = "add";
|
||||
c = "commit";
|
||||
ca = "commit --amend";
|
||||
cm = "commit -m";
|
||||
lol = "log --graph --decorate --pretty=oneline --abbrev-commit";
|
||||
lola = "log --graph --decorate --pretty=oneline --abbrev-commit --all";
|
||||
sts = "status";
|
||||
co = "checkout";
|
||||
b = "branch";
|
||||
};
|
||||
# No idea why this is not appearing in home-manager search
|
||||
# It's in source code, though
|
||||
userName = "pegasust";
|
||||
userEmail = "pegasucksgg@gmail.com";
|
||||
extraConfig = {
|
||||
merge = { tool = "vimdiff"; conflictstyle = "diff3"; };
|
||||
};
|
||||
ignores = [
|
||||
# vscode-related settings
|
||||
".vscode"
|
||||
# envrc cached outputs
|
||||
".direnv"
|
||||
];
|
||||
extraConfig = {
|
||||
# cache credential for 50 minutes (a pomodoro session)
|
||||
credential.helper = "cache --timeout=3000";
|
||||
};
|
||||
# why is this no longer valid?
|
||||
# pull = { rebase=true; };
|
||||
};
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
forwardAgent = true;
|
||||
|
|
Loading…
Reference in New Issue