initial dendritic migration

This commit is contained in:
Semere Meharena Mebrahtom 2026-07-18 19:21:16 +02:00
parent 86fe70288b
commit 168633cf07
Signed by: semere
GPG key ID: 7FC937214DF30488
12 changed files with 254 additions and 147 deletions

View file

@ -18,24 +18,23 @@
in in
{ {
nixosConfigurations = { nixosConfigurations = {
sys = lib.nixosSystem { nabro = lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
./hosts/sys/configuration.nix ./hosts/nabro/configuration.nix
./hosts/sys/hardware-configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
users.him = import ./home/him.nix;
backupFileExtension = "backup";
}; backupFileExtension = "backup";
} };
]; }
];
}; };
}; };
}; };

View file

@ -1,41 +0,0 @@
{ config, pkgs, ... }:
{
home.username = "him";
home.homeDirectory = "/home/him";
home.stateVersion = "26.05";
programs.git = {
enable = true;
settings = {
user = {
name = "Semere M. Mebrahtom";
email = "semere.meharena1@gmail.com";
};
commit.gpgsign = true;
gpg.program = "gpg";
};
signing = {
key = "451054EEC0D2AFD1741D4E6A7FC937214DF30488";
signByDefault = true;
};
};
services.gpg-agent = {
enable = true;
defaultCacheTtl = 1800;
enableSshSupport = true;
pinentry.package = pkgs.pinentry-curses;
};
programs.bash = {
enable = true;
shellAliases = {
ll = "ls -lha";
};
};
programs.fzf = {
enable = true;
enableBashIntegration = true;
};
}

View file

@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
../../modules
];
networking.hostName = "nabro";
# Enable host-specific feature branches (dendrites)
dotfiles = {
core.enable = true;
user.enable = true;
desktop.enable = true;
dev.enable = true;
shell.enable = true;
};
}

View file

@ -1,93 +0,0 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./hardware-configuration.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.hostName = "sys";
networking.networkmanager.enable = true;
services.power-profiles-daemon.enable = true;
services.pipewire = {
enable = true;
pulse.enable = true;
alsa.enable = true;
jack.enable = true;
};
time.timeZone = "Europe/Berlin";
users.users.him = {
isNormalUser = true;
extraGroups = [
"wheel"
"networkmanager"
];
};
environment.systemPackages = with pkgs; [
pamixer
brightnessctl
wl-clipboard
gcc
gnumake
clang-tools
lldb
python3
uv
ruff
ty
nil
nixd
git
wget
tree
tealdeer
gnupg
pass
p7zip
wmenu
fnott
btop
helix
foot
firefox
tor-browser
];
fonts.packages = with pkgs; [
nerd-fonts.jetbrains-mono
];
programs.dwl.enable = true;
programs.dwl.package = pkgs.dwl.override {
configH = ./dwl-config.h;
};
hardware.graphics.enable = true;
security.polkit.enable = true;
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
system.stateVersion = "26.05";
}

36
modules/core.nix Normal file
View file

@ -0,0 +1,36 @@
{ config, lib, pkgs, ... }:
let
cfg = config.dotfiles.core;
in
{
options.dotfiles.core = {
enable = lib.mkEnableOption "Core system configuration";
};
config = lib.mkIf cfg.enable {
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
time.timeZone = "Europe/Berlin";
networking.networkmanager.enable = true;
services.power-profiles-daemon.enable = true;
nix = {
settings = {
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
system.stateVersion = "26.05";
};
}

11
modules/default.nix Normal file
View file

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
imports = [
./core.nix
./user.nix
./desktop.nix
./dev.nix
./shell.nix
];
}

53
modules/desktop.nix Normal file
View file

@ -0,0 +1,53 @@
{ config, lib, pkgs, ... }:
let
cfg = config.dotfiles.desktop;
in
{
options.dotfiles.desktop = {
enable = lib.mkEnableOption "Graphical desktop environment (DWL)";
};
config = lib.mkIf cfg.enable {
programs.dwl.enable = true;
programs.dwl.package = pkgs.dwl.override {
configH = ../hosts/nabro/dwl-config.h;
};
services.pipewire = {
enable = true;
pulse.enable = true;
alsa.enable = true;
jack.enable = true;
};
fonts.packages = with pkgs; [
nerd-fonts.jetbrains-mono
];
hardware.graphics.enable = true;
security.polkit.enable = true;
environment.systemPackages = with pkgs; [
pamixer
brightnessctl
wl-clipboard
wmenu
fnott
foot
firefox
tor-browser
];
home-manager.users.semere = {
programs.foot = {
enable = true;
settings = {
main = {
font = "JetBrainsMono Nerd Font:size=11";
};
};
};
};
};
}

25
modules/dev.nix Normal file
View file

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
let
cfg = config.dotfiles.dev;
in
{
options.dotfiles.dev = {
enable = lib.mkEnableOption "Development tools and language servers";
};
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
gcc
gnumake
clang-tools
lldb
python3
uv
ruff
ty
nil
nixd
];
};
}

72
modules/shell.nix Normal file
View file

@ -0,0 +1,72 @@
{ config, lib, pkgs, ... }:
let
cfg = config.dotfiles.shell;
in
{
options.dotfiles.shell = {
enable = lib.mkEnableOption "Shell, Git, GPG, and CLI environment";
};
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
git
wget
tree
tealdeer
gnupg
pass
p7zip
btop
helix
opencode
];
home-manager.users.semere = {
programs.git = {
enable = true;
settings = {
user = {
name = "Semere M. Mebrahtom";
email = "semere.meharena1@gmail.com";
};
commit.gpgsign = true;
gpg.program = "gpg";
};
signing = {
key = "451054EEC0D2AFD1741D4E6A7FC937214DF30488";
signByDefault = true;
};
};
services.gpg-agent = {
enable = true;
defaultCacheTtl = 1800;
enableSshSupport = true;
pinentry.package = pkgs.pinentry-curses;
};
programs.bash = {
enable = true;
shellAliases = {
ll = "ls -lha";
};
};
programs.fzf = {
enable = true;
enableBashIntegration = true;
};
programs.helix = {
enable = true;
settings = {
editor = {
line-numbers = "relative";
lsp.display-messages = true;
};
};
};
};
};
}

26
modules/user.nix Normal file
View file

@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
let
cfg = config.dotfiles.user;
in
{
options.dotfiles.user = {
enable = lib.mkEnableOption "User configuration";
};
config = lib.mkIf cfg.enable {
users.users.semere = {
isNormalUser = true;
extraGroups = [
"wheel"
"networkmanager"
];
};
home-manager.users.semere = {
home.username = "semere";
home.homeDirectory = "/home/semere";
home.stateVersion = "26.05";
};
};
}