more cleanup
This commit is contained in:
57
modules/home/shell-aliases/default.nix
Normal file
57
modules/home/shell-aliases/default.nix
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.mjallen.shell-aliases;
|
||||
in
|
||||
{
|
||||
options.mjallen.shell-aliases = {
|
||||
enable = lib.mkEnableOption "Common shell aliases";
|
||||
|
||||
buildHost = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "admin@10.0.1.3";
|
||||
description = "Build host for nixos-rebuild commands";
|
||||
};
|
||||
|
||||
flakeInputs = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = "List of flake inputs to update";
|
||||
};
|
||||
|
||||
extraAliases = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
default = { };
|
||||
description = "Additional host-specific aliases";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.zsh.shellAliases = {
|
||||
# Common file operations
|
||||
ll = "ls -alh";
|
||||
ducks = "du -cksh * | sort -hr | head -n 15";
|
||||
|
||||
# NixOS rebuild commands
|
||||
update-boot =
|
||||
"sudo nixos-rebuild boot --max-jobs 10"
|
||||
+ lib.optionalString (cfg.buildHost != "") " --build-host ${cfg.buildHost}";
|
||||
update-switch =
|
||||
"sudo nixos-rebuild switch --max-jobs 10"
|
||||
+ lib.optionalString (cfg.buildHost != "") " --build-host ${cfg.buildHost}";
|
||||
|
||||
# Flake update command
|
||||
update-flake = lib.mkIf (
|
||||
cfg.flakeInputs != [ ]
|
||||
) "nix flake update ${lib.concatStringsSep " " cfg.flakeInputs} --flake /etc/nixos";
|
||||
|
||||
# NAS management
|
||||
update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.3 --build-host admin@10.0.1.3 --flake ~/nix-config#jallen-nas";
|
||||
nas-ssh = "kitten ssh admin@10.0.1.3";
|
||||
}
|
||||
// cfg.extraAliases;
|
||||
};
|
||||
}
|
||||
92
modules/nixos/development/default.nix
Normal file
92
modules/nixos/development/default.nix
Normal file
@@ -0,0 +1,92 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.development;
|
||||
in
|
||||
{
|
||||
options.${namespace}.development = {
|
||||
enable = lib.mkEnableOption "Common development tools and packages";
|
||||
|
||||
includeLanguages = lib.mkOption {
|
||||
type = lib.types.listOf (
|
||||
lib.types.enum [
|
||||
"python"
|
||||
"c"
|
||||
"rust"
|
||||
"nodejs"
|
||||
]
|
||||
);
|
||||
default = [
|
||||
"python"
|
||||
"c"
|
||||
];
|
||||
description = "Programming languages to include tools for";
|
||||
};
|
||||
|
||||
includeContainers = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Include container development tools";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages =
|
||||
with pkgs;
|
||||
[
|
||||
# Version control
|
||||
git
|
||||
|
||||
# Build tools
|
||||
cmake
|
||||
ninja
|
||||
binutils
|
||||
|
||||
# System utilities
|
||||
jq
|
||||
|
||||
# Text processing
|
||||
|
||||
]
|
||||
++ lib.optionals (builtins.elem "python" cfg.includeLanguages) [
|
||||
python3
|
||||
python3Packages.pip
|
||||
]
|
||||
++ lib.optionals (builtins.elem "c" cfg.includeLanguages) [
|
||||
gcc
|
||||
gdb
|
||||
]
|
||||
++ lib.optionals (builtins.elem "rust" cfg.includeLanguages) [
|
||||
rustc
|
||||
cargo
|
||||
]
|
||||
++ lib.optionals (builtins.elem "nodejs" cfg.includeLanguages) [
|
||||
nodejs
|
||||
npm
|
||||
]
|
||||
++ lib.optionals cfg.includeContainers [
|
||||
docker-compose
|
||||
podman-compose
|
||||
];
|
||||
|
||||
# Enable container support if requested
|
||||
virtualisation.podman = lib.mkIf cfg.includeContainers {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
autoPrune.enable = true;
|
||||
defaultNetwork.settings = {
|
||||
dns_enabled = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Common development programs
|
||||
programs = {
|
||||
nix-ld.enable = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
}
|
||||
53
modules/nixos/monitoring/default.nix
Normal file
53
modules/nixos/monitoring/default.nix
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.monitoring;
|
||||
in
|
||||
{
|
||||
options.${namespace}.monitoring = {
|
||||
enable = lib.mkEnableOption "Common monitoring and system tools";
|
||||
|
||||
includeNetworkTools = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Include network monitoring tools";
|
||||
};
|
||||
|
||||
includePerformanceTools = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Include performance monitoring tools";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages =
|
||||
with pkgs;
|
||||
[
|
||||
# Basic system monitoring
|
||||
htop
|
||||
|
||||
]
|
||||
++ lib.optionals cfg.includePerformanceTools [
|
||||
glances
|
||||
nmon
|
||||
iotop
|
||||
|
||||
]
|
||||
++ lib.optionals cfg.includeNetworkTools [
|
||||
speedtest-cli
|
||||
iftop
|
||||
nethogs
|
||||
tcpdump
|
||||
wireshark-cli
|
||||
];
|
||||
|
||||
# Enable common system services for monitoring
|
||||
programs.screen.enable = lib.mkDefault true;
|
||||
};
|
||||
}
|
||||
92
modules/nixos/raspberry-pi/default.nix
Normal file
92
modules/nixos/raspberry-pi/default.nix
Normal file
@@ -0,0 +1,92 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.hardware.raspberry-pi;
|
||||
in
|
||||
{
|
||||
options.${namespace}.hardware.raspberry-pi = {
|
||||
enable = lib.mkEnableOption "Raspberry Pi common configuration";
|
||||
|
||||
variant = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"4"
|
||||
"5"
|
||||
];
|
||||
description = "Raspberry Pi variant (4 or 5)";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Common Raspberry Pi packages
|
||||
environment.systemPackages =
|
||||
with pkgs;
|
||||
[
|
||||
libraspberrypi
|
||||
raspberrypi-eeprom
|
||||
raspberrypifw
|
||||
raspberrypiWirelessFirmware
|
||||
raspberrypi-armstubs
|
||||
]
|
||||
++ lib.optionals (cfg.variant == "4") [
|
||||
i2c-tools
|
||||
]
|
||||
++ lib.optionals (cfg.variant == "5") [
|
||||
erofs-utils
|
||||
fex
|
||||
squashfuse
|
||||
squashfsTools
|
||||
];
|
||||
|
||||
# Common nixpkgs overlays for Raspberry Pi
|
||||
nixpkgs.overlays = lib.mkAfter [
|
||||
(_self: super: {
|
||||
# This is used in (modulesPath + "/hardware/all-firmware.nix") when at least
|
||||
# enableRedistributableFirmware is enabled
|
||||
inherit (super) raspberrypiWirelessFirmware;
|
||||
# Some derivations want to use it as an input,
|
||||
# e.g. raspberrypi-dtbs, omxplayer, sd-image-* modules
|
||||
inherit (super) raspberrypifw;
|
||||
})
|
||||
];
|
||||
|
||||
# Common Bluetooth configuration
|
||||
systemd.services.btattach = {
|
||||
before = [ "bluetooth.service" ];
|
||||
after = [ "dev-ttyAMA0.device" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.bluez}/bin/btattach -B /dev/ttyAMA0 -P bcm -S 3000000";
|
||||
};
|
||||
};
|
||||
|
||||
# Common hardware settings
|
||||
hardware.i2c.enable = lib.mkIf (cfg.variant == "4") true;
|
||||
|
||||
# Pi 5 specific settings
|
||||
hardware.graphics.enable32Bit = lib.mkIf (cfg.variant == "5") (lib.mkForce false);
|
||||
zramSwap.enable = lib.mkIf (cfg.variant == "5") true;
|
||||
|
||||
# Pi 5 specific system tags
|
||||
system.nixos.tags = lib.mkIf (cfg.variant == "5") (
|
||||
let
|
||||
bootCfg = config.boot.loader.raspberry-pi;
|
||||
in
|
||||
[
|
||||
"raspberry-pi-${bootCfg.variant}"
|
||||
bootCfg.bootloader
|
||||
config.boot.kernelPackages.kernel.version
|
||||
]
|
||||
);
|
||||
|
||||
# Common programs
|
||||
programs.kdeconnect.enable = lib.mkDefault false;
|
||||
|
||||
# Root user shell configuration
|
||||
users.users.root.shell = pkgs.zsh;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user