base: move some shared configuration to shared
This commit is contained in:
parent
6fe9af56e7
commit
fe306085f4
11 changed files with 273 additions and 227 deletions
|
@ -1,10 +1,15 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
chvp = {
|
||||||
|
homeStateVersion = "24.11";
|
||||||
|
systemStateVersion = 4;
|
||||||
|
username = "charlotte.vanpetegem";
|
||||||
|
};
|
||||||
|
networking.computerName = "Thaylen City";
|
||||||
|
|
||||||
homebrew = {
|
homebrew = {
|
||||||
enable = true;
|
enable = true;
|
||||||
brews = [
|
|
||||||
];
|
|
||||||
casks = [
|
casks = [
|
||||||
"docker"
|
"docker"
|
||||||
"libreoffice"
|
"libreoffice"
|
||||||
|
@ -18,25 +23,7 @@
|
||||||
upgrade = true;
|
upgrade = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
networking.computerName = "Thaylen City";
|
|
||||||
nix = {
|
|
||||||
extraOptions = ''
|
|
||||||
keep-outputs = true
|
|
||||||
keep-derivations = true
|
|
||||||
'';
|
|
||||||
configureBuildUsers = true;
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
bash.enable = false;
|
|
||||||
zsh.enable = true;
|
|
||||||
};
|
|
||||||
security.pam.enableSudoTouchIdAuth = true;
|
security.pam.enableSudoTouchIdAuth = true;
|
||||||
services.nix-daemon.enable = true;
|
|
||||||
users.users."charlotte.vanpetegem" = {
|
|
||||||
name = "charlotte.vanpetegem";
|
|
||||||
home = "/Users/charlotte.vanpetegem";
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
};
|
|
||||||
system = {
|
system = {
|
||||||
defaults = {
|
defaults = {
|
||||||
dock = {
|
dock = {
|
||||||
|
@ -65,54 +52,12 @@
|
||||||
remapCapsLockToEscape = true;
|
remapCapsLockToEscape = true;
|
||||||
};
|
};
|
||||||
startup.chime = false;
|
startup.chime = false;
|
||||||
stateVersion = 4;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users."charlotte.vanpetegem" = {
|
home-manager.users."charlotte.vanpetegem" = {
|
||||||
programs = {
|
programs = {
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
nix-direnv = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
global = {
|
|
||||||
load_dotenv = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
autocd = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
dotDir = ".config/zsh";
|
|
||||||
history = {
|
|
||||||
expireDuplicatesFirst = true;
|
|
||||||
path = "$HOME/.local/share/zsh/history";
|
|
||||||
};
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [
|
|
||||||
"autojump"
|
|
||||||
"common-aliases"
|
|
||||||
"extract"
|
|
||||||
"history-substring-search"
|
|
||||||
"git"
|
|
||||||
"tmux"
|
|
||||||
];
|
|
||||||
theme = "robbyrussell";
|
|
||||||
};
|
|
||||||
sessionVariables = {
|
|
||||||
DEFAULT_USER = "charlotte.vanpetegem";
|
|
||||||
# Until I get emacs set up on this machine
|
# Until I get emacs set up on this machine
|
||||||
EDITOR = "vim";
|
zsh.sessionVariables.EDITOR = "vim";
|
||||||
};
|
|
||||||
shellAliases = {
|
|
||||||
gupd = "gfa && gprom";
|
|
||||||
};
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
};
|
|
||||||
git = {
|
git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
|
@ -138,14 +83,9 @@
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
autojump
|
|
||||||
coreutils
|
|
||||||
docker-compose
|
docker-compose
|
||||||
nix-direnv
|
|
||||||
ripgrep
|
|
||||||
tmux
|
tmux
|
||||||
];
|
];
|
||||||
stateVersion = "24.11";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
12
modules/darwin/base/default.nix
Normal file
12
modules/darwin/base/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
username = config.chvp.username;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./nix
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.${username}.home = "/Users/${username}";
|
||||||
|
}
|
9
modules/darwin/base/nix/default.nix
Normal file
9
modules/darwin/base/nix/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nix = {
|
||||||
|
configureBuildUsers = true;
|
||||||
|
gc.interval = if config.chvp.base.nix.slowGc then { Hour = 0; Minute = 0; } else { Minute = 0; };
|
||||||
|
};
|
||||||
|
services.nix-daemon.enable = true;
|
||||||
|
}
|
|
@ -1 +1,7 @@
|
||||||
{ ... }: { }
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./base
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
|
@ -17,46 +17,22 @@
|
||||||
./zsh
|
./zsh
|
||||||
];
|
];
|
||||||
|
|
||||||
options.chvp = {
|
|
||||||
stateVersion = lib.mkOption {
|
|
||||||
example = "20.09";
|
|
||||||
};
|
|
||||||
|
|
||||||
dataPrefix = lib.mkOption {
|
|
||||||
default = "";
|
|
||||||
example = "/data";
|
|
||||||
};
|
|
||||||
|
|
||||||
cachePrefix = lib.mkOption {
|
|
||||||
default = "";
|
|
||||||
example = "/cache";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
home-manager.useGlobalPkgs = true;
|
system.autoUpgrade = {
|
||||||
|
|
||||||
system = {
|
|
||||||
stateVersion = config.chvp.stateVersion;
|
|
||||||
autoUpgrade = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
flake = "gitlab:chvp/nixos-config?host=git.chvp.be";
|
flake = "gitlab:chvp/nixos-config?host=git.chvp.be";
|
||||||
dates = "01/4:00";
|
dates = "01/4:00";
|
||||||
randomizedDelaySec = "10min";
|
randomizedDelaySec = "10min";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
home-manager.users = {
|
home-manager.users = {
|
||||||
charlotte = { ... }: {
|
charlotte = { ... }: {
|
||||||
home.stateVersion = config.chvp.stateVersion;
|
|
||||||
systemd.user.sessionVariables = config.home-manager.users.charlotte.home.sessionVariables;
|
systemd.user.sessionVariables = config.home-manager.users.charlotte.home.sessionVariables;
|
||||||
};
|
};
|
||||||
root = { ... }: {
|
root = { ... }: {
|
||||||
home.stateVersion = config.chvp.stateVersion;
|
home.stateVersion = config.chvp.homeStateVersion;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [ git htop moreutils ncdu ripgrep unzip zip ];
|
|
||||||
|
|
||||||
boot.kernelParams = [ "mitigations=off" ];
|
boot.kernelParams = [ "mitigations=off" ];
|
||||||
|
|
||||||
console = {
|
console = {
|
||||||
|
@ -120,7 +96,6 @@
|
||||||
charlotte = {
|
charlotte = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
home = "/home/charlotte";
|
home = "/home/charlotte";
|
||||||
description = "Charlotte Van Petegem";
|
|
||||||
extraGroups = [ "systemd-journal" ];
|
extraGroups = [ "systemd-journal" ];
|
||||||
hashedPasswordFile = config.age.secrets."passwords/users/charlotte".path;
|
hashedPasswordFile = config.age.secrets."passwords/users/charlotte".path;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,39 +1,6 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
|
||||||
baseDirenv = {
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
baseNixIndex = {
|
|
||||||
programs.command-not-found.enable = false;
|
|
||||||
programs.nix-index = {
|
|
||||||
enable = true;
|
|
||||||
package = config.programs.nix-index.package;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
options.chvp.base.nix = {
|
|
||||||
enableDirenv = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
example = false;
|
|
||||||
};
|
|
||||||
slowGc = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
# Used in /flake.nix, since we have to use it at nixpkgs import time
|
|
||||||
unfreePackages = lib.mkOption {
|
|
||||||
default = [ ];
|
|
||||||
example = [ "teams" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
programs.command-not-found.enable = false;
|
|
||||||
chvp.base = {
|
chvp.base = {
|
||||||
emacs.extraConfig = [
|
emacs.extraConfig = [
|
||||||
''
|
''
|
||||||
|
@ -48,48 +15,9 @@ in
|
||||||
:config (direnv-mode)
|
:config (direnv-mode)
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
zfs = {
|
zfs.homeLinks = (lib.optional config.chvp.base.nix.enableDirenv { path = ".local/share/direnv"; type = "cache"; });
|
||||||
homeLinks =
|
|
||||||
(lib.optional config.chvp.base.nix.enableDirenv { path = ".local/share/direnv"; type = "cache"; });
|
|
||||||
systemLinks =
|
|
||||||
(lib.optional config.chvp.base.nix.enableDirenv { path = "/root/.local/share/direnv"; type = "cache"; });
|
|
||||||
};
|
};
|
||||||
};
|
nix.gc.dates = if config.chvp.base.nix.slowGc then "daily" else "hourly";
|
||||||
|
programs.command-not-found.enable = false;
|
||||||
nix = {
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = if config.chvp.base.nix.slowGc then "daily" else "hourly";
|
|
||||||
options = "--delete-older-than 7d";
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
auto-optimise-store = true;
|
|
||||||
substituters = [
|
|
||||||
"https://cache.nixos.org"
|
|
||||||
"https://accentor.cachix.org"
|
|
||||||
"https://chvp.cachix.org"
|
|
||||||
"https://lanzaboote.cachix.org"
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
"accentor.cachix.org-1:QP+oJwzmeq5Fsyp4Vk501UgUSbl5VIna/ard/XOePH8="
|
|
||||||
"chvp.cachix.org-1:eIG26KkeA+R3tCpvmaayA9i3KVVL06G+qB5ci4dHBT4="
|
|
||||||
"lanzaboote.cachix.org-1:Nt9//zGmqkg1k5iu+B3bkj3OmHKjSw9pvf3faffLLNk="
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
];
|
|
||||||
trusted-users = [ "@wheel" ];
|
|
||||||
};
|
|
||||||
extraOptions = lib.mkIf config.chvp.base.nix.enableDirenv ''
|
|
||||||
keep-outputs = true
|
|
||||||
keep-derivations = true
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.charlotte = { ... }:
|
|
||||||
lib.recursiveUpdate
|
|
||||||
(lib.optionalAttrs config.chvp.base.nix.enableDirenv baseDirenv)
|
|
||||||
baseNixIndex;
|
|
||||||
home-manager.users.root = { ... }: baseNixIndex;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,41 +2,8 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
base = (home: {
|
base = (home: {
|
||||||
home.packages = [ pkgs.autojump ];
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
autocd = true;
|
|
||||||
dotDir = ".config/zsh";
|
|
||||||
history = {
|
|
||||||
expireDuplicatesFirst = true;
|
|
||||||
path = "${config.chvp.cachePrefix}${home}/.local/share/zsh/history";
|
|
||||||
};
|
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
nshell() {
|
|
||||||
local -a drvs
|
|
||||||
for attr in "$@"; do
|
|
||||||
drvs+=(nixpkgs#$attr)
|
|
||||||
done
|
|
||||||
local paths="$(nix build --no-link --print-out-paths $drvs)"
|
|
||||||
for p in $paths; do
|
|
||||||
export PATH="$p/bin:$PATH"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
nrun() {
|
|
||||||
local drv="$1"
|
|
||||||
shift 1
|
|
||||||
nix run nixpkgs#$drv $@
|
|
||||||
}
|
|
||||||
|
|
||||||
nsrun() {
|
|
||||||
local drv="$1"
|
|
||||||
shift 1
|
|
||||||
nix shell nixpkgs#$drv -c $@
|
|
||||||
}
|
|
||||||
|
|
||||||
lightmode() {
|
lightmode() {
|
||||||
printf "\033]10;rgb:4c/4f/69\007"
|
printf "\033]10;rgb:4c/4f/69\007"
|
||||||
printf "\033]11;rgb:ef/f1/f5\007"
|
printf "\033]11;rgb:ef/f1/f5\007"
|
||||||
|
@ -101,27 +68,17 @@ let
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
sessionVariables = { DEFAULT_USER = "charlotte"; };
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [
|
|
||||||
"autojump"
|
|
||||||
"common-aliases"
|
|
||||||
"extract"
|
|
||||||
"history-substring-search"
|
|
||||||
"git"
|
|
||||||
"systemd"
|
|
||||||
"tmux"
|
|
||||||
];
|
|
||||||
theme = "robbyrussell";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
chvp.base.zsh.usersToConfigure = [ "charlotte" "root" ];
|
||||||
chvp.base.zfs.systemLinks = [{ path = "/root/.local/share/autojump"; type = "cache"; }];
|
chvp.base.zfs.systemLinks = [{ path = "/root/.local/share/autojump"; type = "cache"; }];
|
||||||
chvp.base.zfs.homeLinks = [{ path = ".local/share/autojump"; type = "cache"; }];
|
chvp.base.zfs.homeLinks = [{ path = ".local/share/autojump"; type = "cache"; }];
|
||||||
home-manager.users.charlotte = { ... }: (base "/home/charlotte");
|
} // {
|
||||||
home-manager.users.root = { ... }: (base "/root");
|
home-manager.users = builtins.foldl' (a: b: a // b) { } (
|
||||||
programs.zsh.enable = true;
|
builtins.map
|
||||||
|
(name: { "${name}" = { ... }: (base config.users.users.${name}.home); })
|
||||||
|
config.chvp.base.zsh.usersToConfigure
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
65
modules/shared/base/default.nix
Normal file
65
modules/shared/base/default.nix
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./nix
|
||||||
|
./zsh
|
||||||
|
];
|
||||||
|
|
||||||
|
options.chvp = {
|
||||||
|
cachePrefix = lib.mkOption {
|
||||||
|
default = "";
|
||||||
|
example = "/cache";
|
||||||
|
};
|
||||||
|
dataPrefix = lib.mkOption {
|
||||||
|
default = "";
|
||||||
|
example = "/data";
|
||||||
|
};
|
||||||
|
stateVersion = lib.mkOption {
|
||||||
|
example = "20.09";
|
||||||
|
};
|
||||||
|
homeStateVersion = lib.mkOption {
|
||||||
|
default = config.chvp.stateVersion;
|
||||||
|
};
|
||||||
|
systemStateVersion = lib.mkOption {
|
||||||
|
default = config.chvp.stateVersion;
|
||||||
|
};
|
||||||
|
username = lib.mkOption {
|
||||||
|
default = "charlotte";
|
||||||
|
example = "charlotte.vanpetegem";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config =
|
||||||
|
let
|
||||||
|
username = config.chvp.username;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
coreutils
|
||||||
|
git
|
||||||
|
htop
|
||||||
|
moreutils
|
||||||
|
ncdu
|
||||||
|
ripgrep
|
||||||
|
unzip
|
||||||
|
zip
|
||||||
|
];
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
users = {
|
||||||
|
"${username}" = { ... }: {
|
||||||
|
home.stateVersion = config.chvp.homeStateVersion;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = config.chvp.systemStateVersion;
|
||||||
|
|
||||||
|
users.users.${username} = {
|
||||||
|
description = "Charlotte Van Petegem";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
73
modules/shared/base/nix/default.nix
Normal file
73
modules/shared/base/nix/default.nix
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
baseDirenv = {
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
config.global.load_dotenv = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
baseNixIndex = {
|
||||||
|
programs.command-not-found.enable = false;
|
||||||
|
programs.nix-index = {
|
||||||
|
enable = true;
|
||||||
|
package = config.programs.nix-index.package;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
username = config.chvp.username;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.chvp.base.nix = {
|
||||||
|
enableDirenv = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
};
|
||||||
|
slowGc = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
# Used in /flake.nix, since we have to use it at nixpkgs import time
|
||||||
|
unfreePackages = lib.mkOption {
|
||||||
|
default = [ ];
|
||||||
|
example = [ "teams" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
substituters = [
|
||||||
|
"https://cache.nixos.org"
|
||||||
|
"https://accentor.cachix.org"
|
||||||
|
"https://chvp.cachix.org"
|
||||||
|
"https://lanzaboote.cachix.org"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
"accentor.cachix.org-1:QP+oJwzmeq5Fsyp4Vk501UgUSbl5VIna/ard/XOePH8="
|
||||||
|
"chvp.cachix.org-1:eIG26KkeA+R3tCpvmaayA9i3KVVL06G+qB5ci4dHBT4="
|
||||||
|
"lanzaboote.cachix.org-1:Nt9//zGmqkg1k5iu+B3bkj3OmHKjSw9pvf3faffLLNk="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
|
trusted-users = [ username ];
|
||||||
|
};
|
||||||
|
extraOptions = lib.mkIf config.chvp.base.nix.enableDirenv ''
|
||||||
|
keep-outputs = true
|
||||||
|
keep-derivations = true
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.${username} = { ... }:
|
||||||
|
lib.recursiveUpdate
|
||||||
|
(lib.optionalAttrs config.chvp.base.nix.enableDirenv baseDirenv)
|
||||||
|
baseNixIndex;
|
||||||
|
};
|
||||||
|
}
|
75
modules/shared/base/zsh/default.nix
Normal file
75
modules/shared/base/zsh/default.nix
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
username = config.chvp.username;
|
||||||
|
base = (home: {
|
||||||
|
home.packages = [ pkgs.autojump ];
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
autocd = true;
|
||||||
|
dotDir = ".config/zsh";
|
||||||
|
history = {
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
path = "${config.chvp.cachePrefix}${home}/.local/share/zsh/history";
|
||||||
|
};
|
||||||
|
initExtra = ''
|
||||||
|
nshell() {
|
||||||
|
local -a drvs
|
||||||
|
for attr in "$@"; do
|
||||||
|
drvs+=(nixpkgs#$attr)
|
||||||
|
done
|
||||||
|
local paths="$(nix build --no-link --print-out-paths $drvs)"
|
||||||
|
for p in $paths; do
|
||||||
|
export PATH="$p/bin:$PATH"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
nrun() {
|
||||||
|
local drv="$1"
|
||||||
|
shift 1
|
||||||
|
nix run nixpkgs#$drv $@
|
||||||
|
}
|
||||||
|
|
||||||
|
nsrun() {
|
||||||
|
local drv="$1"
|
||||||
|
shift 1
|
||||||
|
nix shell nixpkgs#$drv -c $@
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
shellAliases = {
|
||||||
|
gupd = "gfa && gprom";
|
||||||
|
};
|
||||||
|
sessionVariables = { DEFAULT_USER = "charlotte"; };
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [
|
||||||
|
"autojump"
|
||||||
|
"common-aliases"
|
||||||
|
"extract"
|
||||||
|
"history-substring-search"
|
||||||
|
"git"
|
||||||
|
"systemd"
|
||||||
|
"tmux"
|
||||||
|
];
|
||||||
|
theme = "robbyrussell";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.chvp.base.zsh.usersToConfigure = lib.mkOption {
|
||||||
|
default = [ username ];
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
} // {
|
||||||
|
home-manager.users = builtins.foldl' (a: b: a // b) { } (
|
||||||
|
builtins.map
|
||||||
|
(name: { "${name}" = { ... }: (base config.users.users.${name}.home); })
|
||||||
|
config.chvp.base.zsh.usersToConfigure
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
|
@ -1 +1,7 @@
|
||||||
{ ... }: { }
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./base
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue