Separate system from home-manager again

This commit is contained in:
Greg Hellings
2025-06-10 14:28:46 -05:00
parent 389a55d8bc
commit eecd6e6d5d
37 changed files with 277 additions and 284 deletions
+4 -4
View File
@@ -29,8 +29,8 @@ default:
- IMG:
- img-bitwarden
script:
- nix run "nixpkgs#podman" login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
- nix run "nixpkgs#podman" -- login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
- nix build ".#${IMG}"
- nix run "nixpkgs#podman" load -i result
- nix run "nixpkgs#podman" tag "localhost/${IMG}:latest" "$CI_REGISTRY/greg/ci-images/${IMG}:latest"
- nix run "nixpkgs#podman" push "$CI_REGISTRY/greg/ci-images/${IMG}:latest"
- nix run "nixpkgs#podman" -- load -i result
- nix run "nixpkgs#podman" -- tag "localhost/${IMG}:latest" "$CI_REGISTRY/greg/ci-images/${IMG}:latest"
- nix run "nixpkgs#podman" -- push "$CI_REGISTRY/greg/ci-images/${IMG}:latest"
@@ -1,17 +1,9 @@
{ config, pkgs, ... }:
{
imports = [ ../baseline.nix ];
home-manager = {
useGlobalPkgs = true;
users."${config.system.primaryUser}" = import ../../home/home.nix;
extraSpecialArgs = {
inherit (config.users.users."${config.system.primaryUser}") home;
gnome = false;
gui = false;
};
};
config,
pkgs,
...
}:
{
fonts.packages = with pkgs; [
dejavu_fonts
nerd-fonts.hack
@@ -57,7 +49,7 @@
};
screencapture = {
include-date = true;
location = "${config.home-manager.extraSpecialArgs.home}/Photos/Screeneries";
location = "~/Photos/Screeneries";
};
trackpad = {
Dragging = false;
+4 -2
View File
@@ -14,8 +14,8 @@ let
top.darwin.lib.darwinSystem {
inherit system;
specialArgs = {
inherit nixpkgs overlays top;
inherit (top) self;
inherit nixpkgs;
};
modules = [
{
@@ -28,7 +28,9 @@ let
};
}
hm.darwinModules.home-manager
top.self.modules.darwinModule
# Local changes
../modules/nix-conf.nix
./baseline.nix
] ++ lib.optionals (builtins.pathExists ./hosts/${name}) [ ./hosts/${name} ];
};
in
@@ -7,7 +7,7 @@
./direnv.nix
./git.nix
./ssh.nix
./vim.nix
./vim
./xonsh.nix
];
}
@@ -10,7 +10,7 @@
fonts.fontconfig.enable = true;
home.packages = with pkgs.nerd-fonts; [ hack ];
programs.nixvim = (import ./vim/config.nix { inherit config pkgs lib; }) // {
programs.nixvim = (import ./config.nix { inherit config pkgs lib; }) // {
enable = true;
};
}
+22 -22
View File
@@ -1,27 +1,26 @@
{ top, overlays, ... }:
rec {
greghellings =
{
overlays,
top,
...
}:
let
pkgs =
system:
(import top.nixunstable {
inherit system overlays;
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
};
});
ivr =
let
system = "x86_64-linux";
pkgs = (
import top.nixunstable {
inherit system overlays;
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
};
}
);
system = "aarch64-darwin";
in
top.hmunstable.lib.homeManagerConfiguration {
inherit pkgs;
pkgs = pkgs system;
modules = [
(import ../modules/nix-conf.nix {
inherit pkgs;
inherit (pkgs) lib;
cache = false;
})
../modules/nix-conf.nix
./home.nix
];
extraSpecialArgs = {
@@ -33,6 +32,7 @@ rec {
username = "gregory.hellings";
};
};
"gregory.hellings" = greghellings;
in
{
inherit ivr;
}
+11 -9
View File
@@ -9,18 +9,12 @@
{
imports = [
top.nixvimunstable.homeManagerModules.nixvim
./modules
top.self.modules.homeManagerModule
./baseline
] ++ lib.optionals (builtins.pathExists ./hosts/${host}) [ ./hosts/${host} ];
programs.tmux = {
enable = true;
keyMode = "vi";
terminal = "xterm-256color";
customPaneNavigationAndResize = true;
extraConfig = (lib.strings.concatStringsSep "\n" [ "bind P paste-buffer" ]);
};
home.stateVersion = "25.05";
home.packages = with pkgs; [
copier
diffutils
@@ -43,4 +37,12 @@
wget
zip
];
programs.tmux = {
enable = true;
keyMode = "vi";
terminal = "xterm-256color";
customPaneNavigationAndResize = true;
extraConfig = (lib.strings.concatStringsSep "\n" [ "bind P paste-buffer" ]);
};
}
+1
View File
@@ -22,6 +22,7 @@ in
greg = {
development = true;
gui = true;
nix.cache = false;
pypackage.enable = false;
vscodium = true;
};
+218
View File
@@ -0,0 +1,218 @@
{
config,
lib,
overlays,
pkgs,
self,
top,
...
}:
let
builderHosts =
if self != null then
(lib.attrNames (
lib.filterAttrs (_: v: v.config.greg.remote-builder.enable) self.nixosConfigurations
))
else
[ ];
in
{
imports = [
./nix-conf.nix
];
console = {
font = "Lat2-Terminus16";
keyMap = "us";
};
environment.systemPackages = with pkgs; [
agenix
bitwarden-cli
bmon
btop
btrfs-progs
coreutils-full
diffutils
efibootmgr
findutils
file
git
gnupatch
hms # My own home manager switcher
iperf
killall
nano
lshw
pciutils
psmisc
pwgen
unzip
usbutils
wget
xfsprogs
];
home-manager = {
backupFileExtension = "bkp";
useGlobalPkgs = true;
useUserPackages = true;
users.greg = import ../home/home.nix;
extraSpecialArgs = {
inherit top overlays;
home = "/home/greg";
host = config.networking.hostName;
};
};
i18n.defaultLocale = "en_US.UTF-8";
nix = {
gc.dates = "weekly";
settings.auto-optimise-store = true;
};
nixpkgs.overlays = overlays;
# Network Manager pulls in too many deps
networking = {
search = [
"thehellings.lan"
"home"
];
networkmanager.enable = false;
};
programs = {
xonsh = {
enable = true;
extraPackages = (
ps: with ps; [
xonsh-apipenv
pkgs.nur.repos.xonsh-xontribs.xonsh-direnv
pkgs.nur.repos.xonsh-xontribs.xontrib-vox
]
);
};
ssh = {
extraConfig = builtins.concatStringsSep "\n" (
lib.map (x: ''
Host ${x}-builder
Hostname ${x}.home
User remote-builder-user
'') builderHosts
);
knownHosts = {
chronicles = {
extraHostNames = [
"chronicles.thehellings.lan"
"chronicles.home"
"nas"
"nas.thehellings.lan"
"nas.home"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS";
};
dns = {
extraHostNames = [
"dns"
"dns.me.ts"
"dns.home"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKRCXdhXWHEvw84V9JC5bAGovvj12DLVphcEnsTHDjxW";
};
"genesis" = {
extraHostNames = [
"genesis.shire-zebra.ts.net"
"genesis.home"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEI9jbTPmEWQ0F2bLYmnIOLmBnag1fkKxHRjz3X8lB/k";
};
"git" = {
extraHostNames = [
"git.home"
"git.thehellings.lan"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC7hesFWwlmSbWPJWUiF8fIppy5a83yXw84O0Ytz+Zyq";
};
hosea = {
extraHostNames = [
"hosea.home"
"hosea.thehellings.lan"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKLIwkTTXA56sUlUjEulXXZRvZy5H4a5ZwgKWLlpkQDz";
};
isaiah = {
extraHostNames = [
"isaiah.home"
"isaiah.thehellings.lan"
"isaiah-builder"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHleYKtfV4W1Z63Ysu9w5Rbglqlz4F92YcZoMkucoTNf";
};
jeremiah = {
extraHostNames = [
"jeremiah.home"
"jeremiah.thehellings.lan"
"jeremiah-builder"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOjQjXq9WYU2Ki27BR9WwJ4ZruS/lJXbjC1b0Q42Adi0";
};
jude = {
extraHostNames = [
"jude.home"
"jude.thehellings.lan"
"jude-builder"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOos0zQePsa+T6Z2dsKbPOvEdrBQ8a6mx3s7pN6ysCI0";
};
linode = {
extraHostNames = [
"linode.home"
"linode.thehellings.lan"
"thehellings.com"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMv9Zud3kZOl86gtmkn+uj3D4kiXWDPtyUL02VVLNR4Q";
};
};
};
};
# Enable the OpenSSH daemon for remote control
services = {
openssh = {
enable = true;
settings.X11Forwarding = true;
};
};
security.sudo.extraRules = [
{
users = [ "greg" ];
commands = [
{
command = "ALL";
options = [ "NOPASSWD" ];
}
];
}
];
# Define a user account. Don't forget to set a password with passwd.
users.users.greg = {
isNormalUser = true;
createHome = true;
extraGroups = [
"wheel"
]; # Enable sudo for the user.
shell = config.programs.xonsh.package;
initialPassword = "password";
openssh.authorizedKeys.keys = lib.strings.splitString "\n" (
builtins.readFile ../../home/ssh/authorized_keys
);
};
system.stateVersion = "24.11";
}
+5 -17
View File
@@ -19,7 +19,6 @@ let
name,
system ? "x86_64-linux",
hm ? top.hm,
nixvim ? top.nixvimstable,
}:
let
nixpkgs = import channel { inherit system; };
@@ -32,29 +31,18 @@ let
inherit (top) self;
};
modules = [
{
nixpkgs.overlays = overlays;
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users.greg = import ../home/home.nix;
extraSpecialArgs = {
inherit top overlays;
home = "/home/greg";
host = name;
};
backupFileExtension = "bkp";
};
}
# Imported ones
top.agenix.nixosModules.default
hm.nixosModules.home-manager
top.self.modules.nixosModule
top.nurpkgs.modules.nixos.default
# Local ones
./baseline.nix
top.self.modules.nixosModule
./${name}
] ++ extraMods;
};
in
rec {
{
genesis = unstable { name = "genesis"; };
exodus = unstable { name = "exodus"; };
jude = unstable { name = "jude"; };
-50
View File
@@ -1,50 +0,0 @@
{
pkgs,
lib,
self,
...
}:
let
builderHosts =
if self != null then
(lib.attrNames (
lib.filterAttrs (_: v: v.config.greg.remote-builder.enable) self.nixosConfigurations
))
else
[ ];
in
{
imports = [
./nix-conf.nix
];
programs.ssh = {
extraConfig = builtins.concatStringsSep "\n" (
lib.map (x: ''
Host ${x}-builder
Hostname ${x}.home
User remote-builder-user
'') builderHosts
);
};
# Base packages that need to be in all my hosts
environment.systemPackages = with pkgs; [
agenix
bmon
diffutils
git
gnupatch
findutils
file
hms # My own home manager switcher
btop
iperf
killall
nano
pciutils
pwgen
unzip
wget
];
}
+2 -2
View File
@@ -1,8 +1,8 @@
let
nixos = (import ./nixos);
darwin = (import ./darwin);
hm = (import ./hm);
in
{
homeManagerModule = hm;
nixosModule = nixos;
darwinModule = darwin;
}
@@ -2,7 +2,6 @@
{
imports = [
./baseline
./development.nix
./gnome.nix
./gui.nix
@@ -39,7 +39,6 @@ in
njpwerner.autodocstring
rust-lang.rust-analyzer
tamasfe.even-better-toml
vadimcn.vscode-lldb
vscjava.vscode-java-test
vscjava.vscode-java-dependency
vscjava.vscode-java-debug
+2 -2
View File
@@ -1,7 +1,7 @@
{
pkgs,
lib,
config,
lib,
pkgs,
...
}:
-158
View File
@@ -1,13 +1,9 @@
{
config,
pkgs,
lib,
...
}:
{
imports = [
../baseline.nix
./backup.nix
./ceph.nix
./container.nix
@@ -29,158 +25,4 @@
./tailscale.nix
./vmdev.nix
];
environment.systemPackages = with pkgs; [
btrfs-progs
bitwarden-cli
coreutils-full
efibootmgr
psmisc
lshw
usbutils
xfsprogs
];
system.stateVersion = "24.11";
nix = {
gc.dates = "weekly";
settings.auto-optimise-store = true;
};
# Network Manager pulls in too many deps
networking = {
search = [
"thehellings.lan"
"home"
];
networkmanager.enable = false;
};
programs = {
xonsh = {
enable = true;
extraPackages = (
ps: with ps; [
xonsh-apipenv
pkgs.nur.repos.xonsh-xontribs.xonsh-direnv
pkgs.nur.repos.xonsh-xontribs.xontrib-vox
]
);
};
ssh.knownHosts = {
chronicles = {
extraHostNames = [
"chronicles.thehellings.lan"
"chronicles.home"
"nas"
"nas.thehellings.lan"
"nas.home"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEBecZUva9OnZuXLaBun6/1ITo5f9p0YMLPD+q0egLRS";
};
dns = {
extraHostNames = [
"dns"
"dns.me.ts"
"dns.home"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKRCXdhXWHEvw84V9JC5bAGovvj12DLVphcEnsTHDjxW";
};
"genesis" = {
extraHostNames = [
"genesis.shire-zebra.ts.net"
"genesis.home"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEI9jbTPmEWQ0F2bLYmnIOLmBnag1fkKxHRjz3X8lB/k";
};
"git" = {
extraHostNames = [
"git.home"
"git.thehellings.lan"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC7hesFWwlmSbWPJWUiF8fIppy5a83yXw84O0Ytz+Zyq";
};
hosea = {
extraHostNames = [
"hosea.home"
"hosea.thehellings.lan"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKLIwkTTXA56sUlUjEulXXZRvZy5H4a5ZwgKWLlpkQDz";
};
isaiah = {
extraHostNames = [
"isaiah.home"
"isaiah.thehellings.lan"
"isaiah-builder"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHleYKtfV4W1Z63Ysu9w5Rbglqlz4F92YcZoMkucoTNf";
};
jeremiah = {
extraHostNames = [
"jeremiah.home"
"jeremiah.thehellings.lan"
"jeremiah-builder"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOjQjXq9WYU2Ki27BR9WwJ4ZruS/lJXbjC1b0Q42Adi0";
};
jude = {
extraHostNames = [
"jude.home"
"jude.thehellings.lan"
"jude-builder"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOos0zQePsa+T6Z2dsKbPOvEdrBQ8a6mx3s7pN6ysCI0";
};
linode = {
extraHostNames = [
"linode.home"
"linode.thehellings.lan"
"thehellings.com"
];
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMv9Zud3kZOl86gtmkn+uj3D4kiXWDPtyUL02VVLNR4Q";
};
};
};
# Enable the OpenSSH daemon for remote control
services = {
openssh = {
enable = true;
settings.X11Forwarding = true;
};
};
# Define a user account. Don't forget to set a password with passwd.
users.users.greg = {
isNormalUser = true;
createHome = true;
extraGroups = [
"wheel"
]; # Enable sudo for the user.
shell = config.programs.xonsh.package;
initialPassword = "password";
openssh.authorizedKeys.keys = lib.strings.splitString "\n" (
builtins.readFile ../../home/ssh/authorized_keys
);
};
security.sudo.extraRules = [
{
users = [ "greg" ];
commands = [
{
command = "ALL";
options = [ "NOPASSWD" ];
}
];
}
];
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "us";
};
}