feat(nixos): add multi-arch support and refactor system configs

- add aarch64-linux to supported systems (flake + pkgs)
- refactor host definitions into tty/desktop/laptop configurations
- introduce sharedModules to reduce duplication
- split system modules into base, gui, and laptop groups
- add headless (tty) configuration

feat(fish): add Ctrl+Delete and Alt+Delete bindings
- Ctrl+Delete → kill-word
- Alt+Delete → kill-token

chore(hosts): remove explicit hostname from aesthetic

chore(services): remove forced disable of speechd
This commit is contained in:
2026-04-14 18:47:19 +02:00
parent cd1d6de848
commit 89022e0d50
9 changed files with 3552 additions and 44 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
outputs = inputs: outputs = inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} { inputs.flake-parts.lib.mkFlake {inherit inputs;} {
systems = ["x86_64-linux"]; systems = ["x86_64-linux" "aarch64-linux"];
imports = [./hosts ./pkgs]; imports = [./hosts ./pkgs];
+2 -2
View File
@@ -37,7 +37,9 @@
# Custom bindings # Custom bindings
for mode in insert default for mode in insert default
bind -M $mode ctrl-backspace backward-kill-word bind -M $mode ctrl-backspace backward-kill-word
bind -M $mode ctrl-delete kill-word
bind -M $mode alt-backspace backward-kill-token bind -M $mode alt-backspace backward-kill-token
bind -M $mode alt-delete kill-token
bind -M $mode ctrl-z undo bind -M $mode ctrl-z undo
end end
bind -M insert \cx\ce edit_command_buffer bind -M insert \cx\ce edit_command_buffer
@@ -173,8 +175,6 @@ end
alias cleanram="sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'" alias cleanram="sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'"
alias trimall="sudo fstrim -va" alias trimall="sudo fstrim -va"
alias c="clear" alias c="clear"
alias test-build="sudo nixos-rebuild test --flake /etc/nixos#aesthetic"
alias switch-build="sudo nixos-rebuild switch --flake /etc/nixos#aesthetic"
alias add="git add ." alias add="git add ."
alias commit="git commit" alias commit="git commit"
alias push="git push" alias push="git push"
-2
View File
@@ -132,8 +132,6 @@
''; '';
}; };
networking.hostName = "aesthetic";
security.tpm2.enable = true; security.tpm2.enable = true;
# Additional security hardening for HSI compliance # Additional security hardening for HSI compliance
+23 -11
View File
@@ -2,32 +2,44 @@
self, self,
inputs, inputs,
... ...
}: { }: let
flake.nixosConfigurations = let
# shorten paths # shorten paths
inherit (inputs.nixpkgs.lib) nixosSystem; inherit (inputs.nixpkgs.lib) nixosSystem;
mod = "${self}/system"; mod = "${self}/system";
home = "${self}/home"; home = "${self}/home";
# get the basic config to build on top of # get the basic config to build on top of
inherit (import "${self}/system") desktop laptop; inherit (import "${self}/system") tty desktop laptop;
# get these into the module system # get these into the module system
specialArgs = {inherit inputs self;}; specialArgs = {inherit inputs self;};
in {
aesthetic = nixosSystem { # shared modules for all configurations
inherit specialArgs; sharedModules = [
modules =
desktop
++ laptop
++ [
./aesthetic ./aesthetic
"${mod}/services/gnome-services.nix" "${mod}/services/gnome-services.nix"
"${mod}/core/limine.nix" "${mod}/core/limine.nix"
"${home}" "${home}"
inputs.agenix.nixosModules.default inputs.agenix.nixosModules.default
]; ];
in {
flake.nixosConfigurations = {
# TTY: desktop headless (no GUI)
tty = nixosSystem {
inherit specialArgs;
modules = tty ++ sharedModules;
};
# Desktop: desktop with GUI
desktop = nixosSystem {
inherit specialArgs;
modules = desktop ++ sharedModules;
};
# Laptop: laptop with GUI + battery + bluetooth
laptop = nixosSystem {
inherit specialArgs;
modules = laptop ++ sharedModules;
}; };
}; };
} }
+3490
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
systems = ["x86_64-linux"]; systems = ["x86_64-linux" "aarch64-linux"];
perSystem = {pkgs, ...}: { perSystem = {pkgs, ...}: {
packages = { packages = {
+1 -1
View File
@@ -1,5 +1,5 @@
let let
host = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICL0B9moxOPY4XYim8826M+Tf0sWErwWljz1gkDZPwuF root@aesthetic"; host = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICL0B9moxOPY4XYim8826M+Tf0sWErwWljz1gkDZPwuF";
in { in {
"gitea_laptop.age".publicKeys = [ "gitea_laptop.age".publicKeys = [
host host
+20 -11
View File
@@ -1,28 +1,37 @@
let let
desktop = [ # Base system - common for all configurations
./core/boot.nix base = [
./core/default.nix ./core/default.nix
./hardware/graphics.nix
./hardware/fwupd.nix ./hardware/fwupd.nix
./network/default.nix ./network/default.nix
./programs ./programs
./services
./services/docker.nix ./services/docker.nix
./services/greetd.nix
./services/pipewire.nix
./services/xdg-portal-fix.nix ./services/xdg-portal-fix.nix
]; ];
laptop = # GUI-specific modules (display manager, GPU, pipewire)
desktop gui = [
++ [ ./core/boot.nix # plymouth boot splash
./hardware/graphics.nix # GPU drivers
./services/greetd.nix # display manager
./services/pipewire.nix # audio
];
# Laptop-specific modules (battery, bluetooth)
laptop = [
./hardware/bluetooth.nix ./hardware/bluetooth.nix
./services/power.nix ./services/power.nix
]; ];
in { in {
inherit desktop laptop; # TTY: desktop headless (no GUI)
tty = base;
# Desktop: desktop with GUI
desktop = base ++ gui;
# Laptop: laptop with GUI + battery + bluetooth
laptop = base ++ gui ++ laptop;
} }
-1
View File
@@ -11,7 +11,6 @@
irqbalance.enable = true; irqbalance.enable = true;
thermald.enable = true; thermald.enable = true;
speechd.enable = lib.mkForce false;
}; };
# Use in place of hypridle's before_sleep_cmd, since systemd does not wait for # Use in place of hypridle's before_sleep_cmd, since systemd does not wait for