Restructure modules/shared and update all imports

- Delete 2024-12-rework/ folder
- Rename modules/hosts/common to modules/shared, then split into:
  - modules/shared/home/general
  - modules/shared/home/linux
  - modules/shared/nixos
- Update all import paths throughout the codebase
- Update lib/*.nix to use new paths
- Fix hardcoded /Users/${username} to use config.home.homeDirectory
- Update README and examples/flake-structure.nix
This commit is contained in:
Gene Liverman 2026-03-22 18:32:08 -04:00
parent 14fbadd9aa
commit 582f93d9ed
No known key found for this signature in database
78 changed files with 88 additions and 406 deletions

View file

@ -0,0 +1,20 @@
{ ... }: {
services = {
flatpak = {
enable = true;
packages = [
"im.riot.Riot"
"com.cassidyjames.butler"
"com.logseq.Logseq"
"com.vivaldi.Vivaldi"
"org.signal.Signal"
"org.telegram.desktop"
];
update.auto = {
enable = true;
onCalendar = "daily";
};
};
};
}

View file

@ -0,0 +1,17 @@
{ ... }: {
# Select internationalisation properties.
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
};
}

View file

@ -0,0 +1,25 @@
{ config, username, ... }: {
##########################################################################
# #
# This module sets up Let's Encrypt certs via a DNS challenge to Gandi #
# #
##########################################################################
security.acme = {
acceptTerms = true;
defaults = {
email = "lets-encrypt@technicalissues.us";
credentialFiles = { "GANDIV5_PERSONAL_ACCESS_TOKEN_FILE" = "${config.sops.secrets.gandi_dns_pat.path}"; };
dnsProvider = "gandiv5";
dnsResolver = "ns1.gandi.net";
# uncomment below for testing
#server = "https://acme-staging-v02.api.letsencrypt.org/directory";
};
};
sops = {
age.keyFile = "${config.users.users.${username}.home}/.config/sops/age/keys.txt";
secrets.gandi_dns_pat.sopsFile = ../secrets.yaml;
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, ... }:
let
hostName = config.networking.hostName;
in {
programs.zsh.shellAliases.nixroutes =
"cd ~/repos/dots && echo '=== Current Routes ===' && ip route show && ip -6 route show && echo '' && echo '=== New Build Routes ===' && nix eval --json '.#nixosConfigurations.${hostName}.config.systemd.network.networks.\"10-wan\".routes'";
}

View file

@ -0,0 +1,32 @@
{ config, pkgs, ... }: {
environment.systemPackages = with pkgs; [
restic
];
sops.secrets = {
restic_env.sopsFile = ../secrets.yaml;
restic_repo.sopsFile = ../secrets.yaml;
restic_password.sopsFile = ../secrets.yaml;
};
services.restic.backups = {
daily = {
initialize = true;
environmentFile = config.sops.secrets.restic_env.path;
repositoryFile = config.sops.secrets.restic_repo.path;
passwordFile = config.sops.secrets.restic_password.path;
extraBackupArgs = [
"--retry-lock 2h"
];
pruneOpts = [
"--keep-daily 7"
"--keep-weekly 5"
"--keep-monthly 6"
];
};
};
}

View file

@ -0,0 +1,23 @@
{ pkgs, ... }: {
# Be sure this is added if on NixOS
# boot.kernelModules = [ "sg" ];
# Also, get KEYDB.cfg per https://wiki.archlinux.org/title/Blu-ray
environment.systemPackages = with pkgs; [
abcde
asunder
handbrake
lame
libaacs
libbdplus
libbluray
libdvdcss
libdvdnav
libdvdread
makemkv
mkvtoolnix
mkvtoolnix-cli
];
}