no flake error
This commit is contained in:
parent
c48f9a1fd5
commit
95c05ba9e4
11 changed files with 133 additions and 158 deletions
66
flake.nix
66
flake.nix
|
|
@ -93,38 +93,38 @@
|
||||||
};
|
};
|
||||||
lib = import ./lib { inherit (nixpkgs) lib; };
|
lib = import ./lib { inherit (nixpkgs) lib; };
|
||||||
formatter = forAllSystems (system: (makePkgs system).nixfmt-tree);
|
formatter = forAllSystems (system: (makePkgs system).nixfmt-tree);
|
||||||
deploy.nodes.harmonica = {
|
# deploy.nodes.harmonica = {
|
||||||
hostname = "192.168.0.11";
|
# hostname = "192.168.0.11";
|
||||||
profiles.system = {
|
# profiles.system = {
|
||||||
user = "osbm";
|
# user = "osbm";
|
||||||
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.harmonica;
|
# path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.harmonica;
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
packages = forAllSystems (
|
# packages = forAllSystems (
|
||||||
system:
|
# system:
|
||||||
let
|
# let
|
||||||
makeNixosConfigWithSystemOverride =
|
# makeNixosConfigWithSystemOverride =
|
||||||
configName:
|
# configName:
|
||||||
nixpkgs.lib.nixosSystem {
|
# nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = { inherit inputs outputs; };
|
# specialArgs = { inherit inputs outputs; };
|
||||||
modules = [
|
# modules = [
|
||||||
./hosts/nixos/${configName}/configuration.nix
|
# ./hosts/nixos/${configName}/configuration.nix
|
||||||
{ nixpkgs.hostPlatform = nixpkgs.lib.mkForce system; }
|
# { nixpkgs.hostPlatform = nixpkgs.lib.mkForce system; }
|
||||||
];
|
# ];
|
||||||
};
|
# };
|
||||||
dotfilesMachineNames = [
|
# dotfilesMachineNames = [
|
||||||
"ymir"
|
# "ymir"
|
||||||
"pochita"
|
# "pochita"
|
||||||
"tartarus"
|
# "tartarus"
|
||||||
"wallfacer"
|
# "wallfacer"
|
||||||
];
|
# ];
|
||||||
in
|
# in
|
||||||
builtins.listToAttrs (
|
# builtins.listToAttrs (
|
||||||
map (name: {
|
# map (name: {
|
||||||
name = "${name}-dotfiles";
|
# name = "${name}-dotfiles";
|
||||||
value = (makeNixosConfigWithSystemOverride name).config.home-manager.users.osbm.home-files;
|
# value = (makeNixosConfigWithSystemOverride name).config.home-manager.users.osbm.home-files;
|
||||||
}) dotfilesMachineNames
|
# }) dotfilesMachineNames
|
||||||
)
|
# )
|
||||||
);
|
# );
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,106 +6,68 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../../modules/common-packages.nix
|
../../../modules/nixos
|
||||||
# ../../modules/services/tailscale.nix
|
|
||||||
# ../../modules/services/openssh.nix
|
|
||||||
../../../modules/nix-settings.nix
|
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
inputs.impermanence.nixosModules.impermanence
|
inputs.impermanence.nixosModules.impermanence
|
||||||
];
|
];
|
||||||
|
|
||||||
# osbmModules = {
|
osbmModules = {
|
||||||
# enableKDE = false;
|
desktopEnvironment = "none";
|
||||||
# enableFonts = false;
|
machineType = "server";
|
||||||
# blockYoutube = false;
|
users = [ "osbm" ];
|
||||||
# blockTwitter = false;
|
defaultUser = "osbm";
|
||||||
# };
|
|
||||||
|
|
||||||
i18n.inputMethod.enable = lib.mkForce false; # no need for japanese input method
|
nixSettings.enable = true;
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
commandLine.enable = true;
|
||||||
|
neovim.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
openssh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
sound.enable = false;
|
||||||
|
hibernation.enable = false;
|
||||||
|
|
||||||
|
# Disable disko module since we have manual disko config in hardware-configuration.nix
|
||||||
|
disko.enable = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
i18n.inputMethod.enable = lib.mkForce false;
|
||||||
system.stateVersion = "25.11";
|
system.stateVersion = "25.11";
|
||||||
networking.hostName = "apollo";
|
networking.hostName = "apollo";
|
||||||
|
networking.hostId = "0f7de22e"; # Required for ZFS
|
||||||
|
|
||||||
networking.hostId = "0f7de22e"; # Generate your own with: head -c 8 /etc/machine-id
|
# ZFS configuration
|
||||||
|
boot.zfs.requestEncryptionCredentials = true;
|
||||||
|
|
||||||
|
# Initrd SSH for remote unlocking
|
||||||
|
boot.initrd.network.enable = true;
|
||||||
|
boot.initrd.availableKernelModules = [ "virtio_pci" ];
|
||||||
|
boot.initrd.network.ssh = {
|
||||||
|
enable = true;
|
||||||
|
port = 22;
|
||||||
|
shell = "/bin/cryptsetup-askpass";
|
||||||
|
authorizedKeys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPfnV+qqUCJf92npNW4Jy0hIiepCJFBDJHXBHnUlNX0k"
|
||||||
|
];
|
||||||
|
hostKeys = [ "/etc/ssh/initrd" ];
|
||||||
|
};
|
||||||
|
boot.initrd.secrets = {
|
||||||
|
"/etc/ssh/initrd" = "/etc/ssh/initrd";
|
||||||
|
};
|
||||||
|
|
||||||
# Enable zram swap
|
# Enable zram swap
|
||||||
zramSwap.enable = true;
|
zramSwap.enable = true;
|
||||||
|
|
||||||
users.users.root.initialPassword = "changeme";
|
users.users.osbm.initialPassword = "changeme";
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
|
|
||||||
# Persistence configuration
|
# Network configuration
|
||||||
environment.persistence."/persist" = {
|
|
||||||
hideMounts = true;
|
|
||||||
files = [
|
|
||||||
"/etc/machine-id"
|
|
||||||
];
|
|
||||||
directories = [
|
|
||||||
"/var/log"
|
|
||||||
"/var/lib/tailscale"
|
|
||||||
"/var/lib/borg"
|
|
||||||
"/var/lib/nixos"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Remote ZFS unlocking in initrd
|
|
||||||
boot = {
|
|
||||||
# Static IP in initrd - adjust these values for your network
|
|
||||||
kernelParams = [ "ip=152.53.152.129::152.53.152.1:255.255.252.0::ens3:none" ];
|
|
||||||
|
|
||||||
initrd = {
|
|
||||||
# Network driver for initrd - change to match your hardware
|
|
||||||
# Common options: "virtio_pci" (VMs), "e1000e", "igb", "r8169"
|
|
||||||
availableKernelModules = [ "virtio_pci" ];
|
|
||||||
|
|
||||||
network = {
|
|
||||||
enable = true;
|
|
||||||
ssh = {
|
|
||||||
enable = true;
|
|
||||||
port = 2222;
|
|
||||||
# Generate with: ssh-keygen -t ed25519 -N "" -f /persist/etc/ssh/ssh_host_ed25519_key_initrd
|
|
||||||
hostKeys = [ "/persist/etc/ssh/ssh_host_ed25519_key_initrd" ];
|
|
||||||
# Add your SSH public key here
|
|
||||||
authorizedKeys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPfnV+qqUCJf92npNW4Jy0hIiepCJFBDJHXBHnUlNX0k"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# Auto-prompt for ZFS password on SSH login
|
|
||||||
postCommands = ''
|
|
||||||
cat <<EOF > /root/.profile
|
|
||||||
if pgrep -x "zfs" > /dev/null
|
|
||||||
then
|
|
||||||
zfs load-key -a
|
|
||||||
killall zfs
|
|
||||||
else
|
|
||||||
echo "zfs not running -- maybe the pool is taking some time to load for some unforseen reason."
|
|
||||||
fi
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# SSH host keys on persistent storage
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
settings = {
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
KbdInteractiveAuthentication = false;
|
|
||||||
};
|
|
||||||
hostKeys = [
|
|
||||||
{
|
|
||||||
bits = 4096;
|
|
||||||
path = "/persist/etc/ssh/ssh_host_rsa_key";
|
|
||||||
type = "rsa";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
path = "/persist/etc/ssh/ssh_host_ed25519_key";
|
|
||||||
type = "ed25519";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
useDHCP = false;
|
useDHCP = false;
|
||||||
interfaces.ens3 = {
|
interfaces.ens3 = {
|
||||||
|
|
@ -122,4 +84,7 @@
|
||||||
defaultGateway = "152.53.152.1";
|
defaultGateway = "152.53.152.1";
|
||||||
defaultGateway6 = { address = "fe80::1"; interface = "ens3"; };
|
defaultGateway6 = { address = "fe80::1"; interface = "ens3"; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Override initrd kernel params for static IP
|
||||||
|
boot.kernelParams = [ "ip=152.53.152.129::152.53.152.1:255.255.252.0::ens3:none" ];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
osbmModules = {
|
osbmModules = {
|
||||||
enableKDE = false;
|
desktopEnvironment = "none";
|
||||||
enableFonts = false;
|
fonts.enable = false;
|
||||||
enableTailscale = true;
|
services.tailscale.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
i18n.inputMethod.enable = lib.mkForce false; # no need for japanese input method
|
i18n.inputMethod.enable = lib.mkForce false; # no need for japanese input method
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
osbmModules = {
|
osbmModules = {
|
||||||
enableKDE = false;
|
desktopEnvironment = "none";
|
||||||
enableFonts = false;
|
fonts.enable = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
i18n.inputMethod.enable = lib.mkForce false; # no need for japanese input method
|
i18n.inputMethod.enable = lib.mkForce false; # no need for japanese input method
|
||||||
|
|
|
||||||
|
|
@ -13,14 +13,14 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
osbmModules = {
|
osbmModules = {
|
||||||
enableKDE = false;
|
desktopEnvironment = "none";
|
||||||
enableFonts = false;
|
fonts.enable = false;
|
||||||
enableForgejo = true;
|
services.forgejo.enable = true;
|
||||||
# enableCaddy = true;
|
# services.caddy.enable = true;
|
||||||
# enableCloudflareDyndns = true;
|
# services.cloudflare-dyndns.enable = true;
|
||||||
enableCloudflared = true;
|
services.cloudflared.enable = true;
|
||||||
enableVaultwarden = true;
|
services.vaultwarden.enable = true;
|
||||||
enableGlance = true;
|
services.glance.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.wanikani-bypass-lessons.enable = true;
|
services.wanikani-bypass-lessons.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,9 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
osbmModules = {
|
osbmModules = {
|
||||||
enableKDE = true;
|
desktopEnvironment = "plasma";
|
||||||
enableAarch64Emulation = true;
|
emulation.aarch64.enable = true;
|
||||||
enableSound = true;
|
hardware.sound.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@
|
||||||
../../../modules/nixos
|
../../../modules/nixos
|
||||||
];
|
];
|
||||||
osbmModules = {
|
osbmModules = {
|
||||||
enableKDE = false;
|
desktopEnvironment = "none";
|
||||||
enableFonts = false;
|
fonts.enable = false;
|
||||||
enableNextcloud = true;
|
services.nextcloud.enable = true;
|
||||||
enableHydra = true;
|
services.hydra.enable = true;
|
||||||
# enableCaddy = true;
|
# services.caddy.enable = true;
|
||||||
enableAttic = true;
|
services.attic.enable = true;
|
||||||
enableCloudflared = true;
|
services.cloudflared.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -10,15 +10,14 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
osbmModules = {
|
osbmModules = {
|
||||||
enableKDE = true;
|
desktopEnvironment = "plasma";
|
||||||
enableJellyfin = true;
|
services.jellyfin.enable = true;
|
||||||
enableAarch64Emulation = true;
|
emulation.aarch64.enable = true;
|
||||||
disableHibernation = true;
|
hardware.hibernation.enable = false;
|
||||||
enableWakeOnLan = true;
|
hardware.wakeOnLan.enable = true;
|
||||||
enableSound = true;
|
hardware.sound.enable = true;
|
||||||
enableADB = true;
|
programs.adbFastboot.enable = true;
|
||||||
enableOllama = true;
|
services.ollama.enable = true;
|
||||||
# enableMinegrubTheme = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
|
|
|
||||||
|
|
@ -332,7 +332,16 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Emulation
|
||||||
|
emulation = {
|
||||||
|
aarch64 = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Enable aarch64 emulation via binfmt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# Internationalization
|
# Internationalization
|
||||||
i18n = {
|
i18n = {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ lib, config, inputs, ... }:
|
{ lib, config, inputs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = lib.optionals (inputs ? home-manager) [
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -13,8 +13,8 @@
|
||||||
# Pass inputs and outputs to home-manager modules
|
# Pass inputs and outputs to home-manager modules
|
||||||
extraSpecialArgs = { inherit inputs; };
|
extraSpecialArgs = { inherit inputs; };
|
||||||
|
|
||||||
# Configure home-manager for each user
|
# Configure home-manager for each user (excluding root)
|
||||||
users = lib.genAttrs config.osbmModules.users (username: {
|
users = lib.genAttrs (builtins.filter (u: u != "root") config.osbmModules.users) (username: {
|
||||||
home.stateVersion = lib.mkDefault "24.05";
|
home.stateVersion = lib.mkDefault "24.05";
|
||||||
imports = [ ../../home-manager ];
|
imports = [ ../../home-manager ];
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.osbmModules;
|
cfg = config.osbmModules;
|
||||||
|
# Filter out 'root' from the users list since it's a special system user
|
||||||
|
regularUsers = builtins.filter (u: u != "root") cfg.users;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config = lib.mkIf (cfg.users != []) {
|
config = lib.mkIf (cfg.users != []) {
|
||||||
users.users = lib.mkMerge [
|
users.users = lib.mkMerge [
|
||||||
# Create users based on the list
|
# Create users based on the list (excluding root)
|
||||||
(lib.genAttrs cfg.users (username: {
|
(lib.genAttrs regularUsers (username: {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = username;
|
description = username;
|
||||||
extraGroups = [ "networkmanager" ]
|
extraGroups = [ "networkmanager" ]
|
||||||
|
|
@ -15,7 +17,7 @@ in
|
||||||
++ lib.optional config.osbmModules.programs.adbFastboot.enable "adbusers";
|
++ lib.optional config.osbmModules.programs.adbFastboot.enable "adbusers";
|
||||||
}))
|
}))
|
||||||
|
|
||||||
# Additional configuration for default user
|
# Additional configuration for default user (including root if it's default)
|
||||||
{
|
{
|
||||||
${cfg.defaultUser} = {
|
${cfg.defaultUser} = {
|
||||||
openssh.authorizedKeys.keys = lib.mkDefault [
|
openssh.authorizedKeys.keys = lib.mkDefault [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue