130 lines
3.2 KiB
Nix
130 lines
3.2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}:
|
|
# The shared foundation for every host and guest.
|
|
let
|
|
inherit (lib) mkOption types;
|
|
user = config.user;
|
|
|
|
pinArgs = prev: {
|
|
inherit (prev.stdenv.hostPlatform) system;
|
|
config.allowUnfree = true;
|
|
};
|
|
in
|
|
{
|
|
imports = [ inputs.home-manager.nixosModules.home-manager ];
|
|
|
|
options.user = {
|
|
name = mkOption {
|
|
type = types.str;
|
|
default = "alexion";
|
|
description = ''
|
|
Primary interactive user for this system.
|
|
This drives the system account and Home Manager user together.
|
|
'';
|
|
};
|
|
description = mkOption {
|
|
type = types.str;
|
|
default = "Alexion";
|
|
description = "Human-readable description for the primary user.";
|
|
};
|
|
};
|
|
|
|
config = {
|
|
nixpkgs.overlays = [
|
|
(_final: prev: {
|
|
unstable = import inputs.nixpkgs-unstable (pinArgs prev);
|
|
stable = import inputs.nixpkgs-stable (pinArgs prev);
|
|
})
|
|
];
|
|
nixpkgs.config.allowUnfree = true;
|
|
|
|
nix.settings.experimental-features = [
|
|
"nix-command"
|
|
"flakes"
|
|
];
|
|
|
|
system.stateVersion = "26.05";
|
|
time.timeZone = "America/New_York";
|
|
i18n.defaultLocale = "en_GB.UTF-8";
|
|
|
|
users.users.${user.name} = {
|
|
isNormalUser = true;
|
|
description = user.description;
|
|
extraGroups = [
|
|
"wheel"
|
|
"storage"
|
|
];
|
|
};
|
|
|
|
users.groups.storage.gid = 10000;
|
|
|
|
home-manager = {
|
|
useGlobalPkgs = true;
|
|
useUserPackages = true;
|
|
extraSpecialArgs = {
|
|
inherit inputs;
|
|
};
|
|
users.${user.name} = {
|
|
home.username = user.name;
|
|
home.homeDirectory = "/home/${user.name}";
|
|
home.stateVersion = "26.05";
|
|
home.packages = with pkgs; [
|
|
eza
|
|
wget
|
|
];
|
|
};
|
|
};
|
|
|
|
registry.shell-shortcut.${config.networking.hostName} = {
|
|
ls = {
|
|
command = "eza -alg --color=always --group-directories-first --icons=always";
|
|
abbreviation = false;
|
|
};
|
|
la = {
|
|
command = "eza -a --color=always --group-directories-first --icons=always";
|
|
abbreviation = false;
|
|
};
|
|
ll = {
|
|
command = "eza -lg --color=always --group-directories-first --icons=always";
|
|
abbreviation = false;
|
|
};
|
|
lt = {
|
|
command = "eza -aT -I '.git' --color=always --group-directories-first --icons=always";
|
|
abbreviation = false;
|
|
};
|
|
"l." = {
|
|
command = "eza -a | grep -e '^\\.'";
|
|
abbreviation = false;
|
|
};
|
|
|
|
".." = "cd ..";
|
|
"..." = "cd ../..";
|
|
"...." = "cd ../../..";
|
|
|
|
cp = "cp -v";
|
|
tarnow = "tar -acf ";
|
|
untar = "tar -zxvf ";
|
|
wget = "wget -c ";
|
|
grep = "grep --color=auto";
|
|
fgrep = "fgrep --color=auto";
|
|
egrep = "egrep --color=auto";
|
|
jctl = "journalctl -p 3 -xb";
|
|
|
|
update = "sudo nixos-rebuild switch --flake .#${config.networking.hostName}";
|
|
cleanup = "sudo nix-collect-garbage -d";
|
|
};
|
|
|
|
modules.shell.fish.enable = lib.mkDefault true;
|
|
modules.shell.fish.defaultShell = lib.mkDefault true;
|
|
modules.shell.tmux.enable = lib.mkDefault true;
|
|
modules.shell.nvim.enable = lib.mkDefault true;
|
|
modules.shell.git.enable = lib.mkDefault true;
|
|
modules.shell.yazi.enable = lib.mkDefault true;
|
|
};
|
|
}
|