99 Commits

Author SHA1 Message Date
cc44e68a2e feature(users): add docker group to the main user 2026-02-21 21:17:19 +01:00
b97d6cc47d feature(neon): add docker to neon 2026-02-21 21:16:42 +01:00
0d495039ee feature(docker): add docker daemon config for nixos 2026-02-21 21:16:17 +01:00
64b76ad7fd Merge pull request 'feature(ssh): add more security to the ssh config' (#22) from feature/openssh into main
Reviewed-on: #22
2026-02-21 18:09:31 +01:00
aea7ba5c97 feature(ssh): add more security to the ssh config 2026-02-21 18:04:47 +01:00
135f2bdac9 Merge pull request 'refactor(installguide): unify device naming, add notes and correct typos' (#21) from feature/installguide into main
Reviewed-on: #21
2026-02-21 17:56:00 +01:00
d288f6828f refactor(installguide): unify device naming, add notes and correct typos 2026-02-21 17:55:32 +01:00
159cd6f2f2 Merge pull request 'feature(update): update flake' (#20) from feature/update into main
Reviewed-on: #20
2026-02-19 21:01:57 +01:00
763a69bf09 feature(update): update flake 2026-02-19 20:53:18 +01:00
9b6ed91d37 Merge pull request 'feature(update): update flake' (#19) from feature/update into main
Reviewed-on: #19
2026-02-14 13:20:12 +00:00
39f7658a34 feature(update): update flake 2026-02-14 14:18:32 +01:00
50b2aaae60 Merge pull request 'refactor(readme): separate installation doc from main readme' (#18) from feature/documentation into main
Reviewed-on: #18
2026-02-08 10:17:27 +00:00
920b128ed7 refactor(readme): separate installation doc from main readme 2026-02-08 11:16:13 +01:00
978bd0e12b Merge pull request 'feature(update): update flake' (#17) from feature/update into main
Reviewed-on: #17
2026-02-08 10:01:27 +00:00
2ab6ccb7a0 feature(update): update flake 2026-02-08 11:00:01 +01:00
b8e7708b59 Merge pull request 'feature/update_flake' (#16) from feature/update_flake into main
Reviewed-on: #16
2026-02-01 12:13:28 +00:00
0783fc03b3 feature(flake): update flake file and update all packages 2026-02-01 13:11:28 +01:00
f9327d9e14 feature(networking): add update-resolved for vpn 2026-02-01 13:11:27 +01:00
e84c99e6b2 Merge pull request 'feature(networking): add update-resolved for vpn' (#15) from feature/add_update_resolved into main
Reviewed-on: #15
2026-02-01 11:59:10 +00:00
efec8e6def feature(networking): add update-resolved for vpn 2026-02-01 12:44:53 +01:00
a23e167014 feature(flake): update flake file and update all packages 2026-01-31 17:21:43 +01:00
7f078d2452 Merge pull request 'feature(ghostty): add home-manager module for ghostty' (#14) from feature/add_ghostty_hm into main
Reviewed-on: #14
2026-01-27 12:47:02 +00:00
53bf108799 feature(ghostty): add home-manager module for ghostty 2026-01-27 13:34:47 +01:00
853cfba840 Merge pull request 'feature(fonts): add fonts user module and add 0xProto font' (#13) from feature/add_fonts into main
Reviewed-on: #13
2026-01-26 10:45:11 +00:00
e0626a3644 fix(fonts): fix typo 2026-01-26 11:34:57 +01:00
b7ee91cf1a fix(fonts): add fonts to user 2026-01-26 11:33:50 +01:00
4f7ea84a8b feature(fonts): add fonts user module and add 0xProto font 2026-01-26 11:25:45 +01:00
a8468bf13f Merge pull request 'feature(ssl/tls): add my homelab pki root ca to the trust store' (#12) from feature/add_homelab_ca into main
Reviewed-on: #12
2026-01-23 19:20:42 +00:00
35319f58de feature(ssl/tls): add my homelab pki root ca to the trust store 2026-01-23 20:20:12 +01:00
4b6bdf0c86 Merge pull request 'chore(flake): update flake lock to the latest version' (#11) from feature/update_flake into main
Reviewed-on: #11
2026-01-23 18:37:39 +00:00
427b5315b7 chore(flake): update flake lock to the latest version 2026-01-23 19:36:34 +01:00
cfa9aa2e14 Merge pull request 'feature(vpn): enable tailscaled on the system at startup' (#10) from feature/tailscale into main
Reviewed-on: #10
2026-01-16 19:25:43 +00:00
98617c4099 feature(vpn): enable tailscaled on the system at startup 2026-01-16 20:22:48 +01:00
61cebd469b Merge pull request 'chore(flake): update flake lock to the latest commits' (#9) from feature/update_flake into main
Reviewed-on: #9
2026-01-15 20:45:49 +00:00
86729827e8 chore(flake): update flake lock to the latest commits 2026-01-15 21:30:55 +01:00
60bf6173c7 Merge pull request 'feature/fix_boot_errors' (#8) from feature/fix_boot_errors into main
Reviewed-on: #8
2026-01-10 22:51:49 +00:00
90df3e5ed9 feature(bootloader): add terminus-font to the bootloader dependencies 2026-01-10 23:51:29 +01:00
22df1df1d7 feature(terminal-font): add terminus terminal font for eye candy 2026-01-10 23:47:01 +01:00
f5d629d5f5 chore(bootloader): lets just not look at those acpi errors during boot 2026-01-10 23:46:12 +01:00
9885867cc2 Merge pull request 'feature(fwupd): install and enable fwupd for firmware upgrades' (#7) from feature/firmwareupdates into main
Reviewed-on: #7
2026-01-09 20:14:11 +00:00
2cb495848f feature(fwupd): install and enable fwupd for firmware upgrades 2026-01-09 21:12:55 +01:00
7e84ba21dc Merge pull request 'chore(update): upgrade flake' (#6) from feature/nix_upgrade into main
Reviewed-on: #6
2026-01-09 06:47:44 +00:00
54dc51eec4 chore(update): upgrade flake 2026-01-09 07:44:13 +01:00
3c3dd262ae Merge pull request 'feature(steam): add proton-ge compatibility layer to steam' (#5) from feature/proton-ge into main
Reviewed-on: #5
2026-01-04 12:04:53 +00:00
cd683bfa94 feature(steam): add proton-ge compatibility layer to steam 2026-01-04 13:02:44 +01:00
10a4b462b3 Merge pull request 'optimize build time' (#4) from feature/optimize into main
Reviewed-on: #4
2025-12-31 10:20:21 +00:00
5111de5278 refactor(settings): remove redundant options 2025-12-31 11:17:31 +01:00
3a6b6091d6 feature(settings): add cache, use more cores, auto optimize the nix store 2025-12-31 11:09:09 +01:00
382cb2b096 refactor(flake): remove home-manager options from flake, since they are already defined in settings 2025-12-31 11:08:26 +01:00
05245ea56b refactor(niri): rename the module to niri.nix for clarity 2025-12-31 11:07:37 +01:00
3ee5cfac97 Merge pull request 'feature(modules): split configuration into nix modules and home-manager modules' (#2) from feature/modularize into main
Reviewed-on: #2
2025-12-30 17:51:29 +00:00
2e1c2524fc refactor(readme): update the readme with a nix-helper section. 2025-12-30 18:50:30 +01:00
b87d881258 feature(flake): update flake file and update all packages 2025-12-30 18:49:25 +01:00
8fa948b0be fix(home): set correct name for nixvim config 2025-12-30 14:27:17 +01:00
859d524f4a fix(styling): fix syntax error 2025-12-30 14:26:40 +01:00
989f676ce7 refactor: cleanup old configuration 2025-12-30 14:26:12 +01:00
55bb23cf07 feature(home): cleanup home-manager imports 2025-12-30 14:20:59 +01:00
894c113607 feature(programs): add a hm-module to specify user programs 2025-12-30 14:20:24 +01:00
724db8a252 feature(style): move qt and gtk settings to their own hm-module 2025-12-30 14:19:55 +01:00
d0eb6f614d feature(tmux): add tmux home-manager module 2025-12-30 14:19:24 +01:00
c419f052a3 feature(shell): add zsh home-manager module 2025-12-30 14:19:05 +01:00
1f7e9f6eef feature(nixvim): add nixvim home-manager module 2025-12-30 14:18:43 +01:00
656dfe4b93 feature(git): add git home-manager module 2025-12-30 14:18:14 +01:00
d913c6cc02 fix(home): set correct namespace for environment variable 2025-12-28 20:19:37 +01:00
a535f00e54 fix(home): fix folder naming 2025-12-28 20:15:13 +01:00
0509b11c00 fix(gnupg): fix typo and add pinentry-ncurses 2025-12-28 19:58:22 +01:00
0fccd2d54b feature(packages): add system packages module 2025-12-28 19:28:28 +01:00
3a95182d3a feature(settings): add settings module 2025-12-28 19:28:10 +01:00
c125409336 refactor(home): move home settings to user namespace 2025-12-28 19:27:47 +01:00
f3678a13c5 feature(services): add services to module files 2025-12-28 19:27:14 +01:00
520eadd6fb feature(compositor): add a module for the wayland compositor 2025-12-28 19:26:44 +01:00
01f6137eed refactor(noctalia): move noctalia configs to modules 2025-12-28 19:26:13 +01:00
edd73ddf53 refactor(configuration): remove everything unnecessary from configuration.nix 2025-12-28 19:25:37 +01:00
31c4834a2d feature(niri): add module for niri wayland compositor 2025-12-28 19:21:16 +01:00
6d437c290f feature(locales): add keymap and console font to locales module 2025-12-28 18:53:31 +01:00
2cdd02b024 feature(users): add module that handles users and their shell 2025-12-28 18:49:10 +01:00
7f57f89a77 feature(steam): add steam module for all things around steam on wayland 2025-12-28 18:48:43 +01:00
9cde74486a feature(serivces): add services module that handles various enabled services 2025-12-28 18:48:11 +01:00
a045ca7d94 feature(sddm): add sddm module for theming and session management 2025-12-28 18:47:40 +01:00
3c18029b95 feature(openssh): add modules for openssh and openpgp 2025-12-28 18:47:12 +01:00
d06ab6d54b feature(networking): add networking module for firewall and network settings 2025-12-28 18:46:27 +01:00
6a9ba7082b feature(localization): add locales module that handles timezone and locale settings 2025-12-28 18:45:54 +01:00
64dee7a59f feature(audio): add audio module that handles pipewire 2025-12-28 18:44:56 +01:00
b4c3ddd300 feature(bootloader): add bootloader module with systemd-boot and plymouth 2025-12-28 18:44:21 +01:00
4360fbed68 feature(flake): simplyfi the flake and add a module system 2025-12-28 18:40:36 +01:00
f8964775af chore(update): update flake file 2025-12-21 13:54:38 +01:00
a696c2ff1d chore: remove xwayland since it is not used by niri anyway 2025-12-17 17:56:15 +01:00
a537daccbf feature(packages): add nix-helper tool 2025-12-16 22:57:33 +01:00
581c5dea90 feature(displaymanager): exchange gdm for sddm and configure astronaut theme 2025-12-15 21:47:39 +01:00
e84503f755 chore(readme): update bootloader instructions 2025-12-13 13:32:42 +01:00
f139e7b72f chore(updates): update all flakes 2025-12-13 13:04:06 +01:00
512f21bd3e feat: add indent-blankline to vim and tweak kernel loglevel 2025-12-12 19:27:20 +01:00
030f3b8e39 feat(boot): add quiet option to the kernel parameters 2025-12-12 17:49:34 +01:00
e8b8a1c84f refactor(packages): move some userpackages to system 2025-12-12 17:15:34 +01:00
3c737ac07f feat(tmux): nixify my tmux config 2025-12-12 17:06:13 +01:00
5c6639f429 feat(nixvim): add nvim-tree as plugin 2025-12-12 16:29:44 +01:00
9e167f82d3 feat(nixvim): base my vim config upon nixvim 2025-12-12 16:11:13 +01:00
68843be871 refactor(README): add more content concerning the installation 2025-12-12 14:30:14 +01:00
e5d25d27a9 refactor(home-manager): separate configuration.nix and home.nix by adding home-manager as a module 2025-12-12 14:23:51 +01:00
31 changed files with 823 additions and 414 deletions

118
INSTALLATION.md Normal file
View File

@@ -0,0 +1,118 @@
# basic system installation
- The installations presented in this repository are always luks encrypted
- For simplicity I'm using device labels rather than uuids
1. the partitioning layout should look somewhat like this after the installation
```bash
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 2G 0 part /boot
└─nvme0n1p2 259:2 0 474.9G 0 part
└─cryptroot 254:0 0 474.9G 0 crypt
├─lvmroot-swap 254:1 0 20G 0 lvm [SWAP]
├─lvmroot-home 254:2 0 250G 0 lvm /home
└─lvmroot-root 254:3 0 204.9G 0 lvm /
```
> Note: `lsblk` may additionally show `/nix/store` as a mountpoint on `lvmroot-root`. This is not a separate partition. NixOS mounts the root device a second time at `/nix/store` with `ro,nosuid,nodev` flags to enforce store immutability at runtime.
2. prepare the installation
```bash
# format the boot partition
mkfs.fat -F 32 /dev/nvme0n1p1 -n "nixboot"
# create an encrypted partition
cryptsetup luksFormat -y --label="nixcrypt" /dev/nvme0n1p2
# open the encrypted partition and map it to /dev/mapper/cryptroot
cryptsetup luksOpen /dev/nvme0n1p2 cryptroot
# create the physical volume
pvcreate /dev/mapper/cryptroot
# create a volume group inside
vgcreate lvmroot /dev/mapper/cryptroot
# create the swap volume
lvcreate --size 8G lvmroot --name swap
# if you desire, create a home volume
lvcreate --size 150G lvmroot --name home
# create the root volume
lvcreate -l 100%FREE lvmroot --name root
# format as usual for root partition
mkfs.ext4 -L "nixroot" /dev/mapper/lvmroot-root
# if you previously made the home partition, do it too
mkfs.ext4 -L "nixhome" /dev/mapper/lvmroot-home
# format the swap partition
mkswap -L "nixswap" /dev/mapper/lvmroot-swap
# mount root
mount /dev/disk/by-label/nixroot /mnt
# mount boot
mount --mkdir /dev/nvme0n1p1 /mnt/boot
# again, if you did the home volume
mount --mkdir /dev/disk/by-label/nixhome /mnt/home
# turn on swap
swapon /dev/disk/by-label/nixswap
```
3. prepare nixos
```bash
# generate templates and update the hardware-configuration.nix
nixos-generate-config --root /mnt
# add dm-crypt and dm-mod to the kernelModules
boot.initrd.kernelModules = [ "dm-crypt" "dm-mod" ];
# add file systems using labels
fileSystems."/" =
{ device = "/dev/disk/by-label/nixroot";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-label/nixboot";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-label/nixhome";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/disk/by-label/nixswap"; }
];
# point the bootloader to the luks device
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-label/nixcrypt";
```
4. install nixos
```bash
nixos-install
```
## how to deploy the initial config
- Don't forget to install the bootloader, if you changed it since `nixos-install`
```bash
$ sudo nixos-rebuild --install-bootloader switch --flake .#host_name
```
## how to upgrade the system
```bash
$ cd /path/to/repo
$ nix flake update
$ sudo nixos-rebuild switch --flake .#host_name
$ sudo nix-collect-garbage
```
## how to use nix-helper
The tool nix-helper is installed by this configuration. It simplifies administrating nixos and adds more output to the rebuild command. It also features a diff after a successful build. The command uses the `NH_FLAKE` environment variable to be able to run from whatever directory.
Basic commands with a set `NH_FLAKE` variable are:
```bash
$ nh os switch
$ nh os build
$ nh os test
$ nh clean all --keep 5
```
There is also the option to interface with home-manager by using `nh home switch` but this isn't necessary since home-manager is imported as a module in this config.

132
README.md
View File

@@ -1,122 +1,30 @@
# 0x29a nixos config # NixOS config
personal nixos configuration files My personal NixOS configurations.
## how to deploy the config ## config structure
```bash ```bash
$ sudo nixos-rebuild switch --flake path:/home/aaron/git/nixconfig#default .
├── flake.lock
├── flake.nix # flake definition
├── hosts
│   └── neon
│   ├── configuration.nix # import nix-modules for specific host
│   └── hardware-configuration.nix # hardware configs for specific host
├── modules
│   ├── home-manager
│   │   ├── xyz_module.nix
│   └── nixos
│   └── xyz_module.nix
└── users
└── aaron
└── home.nix # import home-manager modules for specific user
``` ```
## how to upgrade the system ## installation
```bash For more details about the installation procedure see: [INSTALLATION.md](INSTALLATION.md)
$ sudo nixos-rebuild switch --flake --upgrade path:/home/aaron/git/nixconfig#default
```
## basic system installation
1. the partitioning layout will look like this.
```bash
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 233.8G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 233.3G 0 part
└─root 254:0 0 233.3G 0 crypt
├─vg-swap 254:1 0 8G 0 lvm [SWAP]
└─vg-root 254:2 0 225.3G 0 lvm /
```
2. prepare the installation
```bash
# format the boot partition
mkfs.fat -F 32 /dev/sda1 -n "nixboot"
# create an encrypted partition
cryptsetup luksFormat -y --label="nixcrypt" /dev/sda2
# open the encrypted partition and map it to /dev/mapper/cryptroot
cryptsetup luksOpen /dev/sda2 cryptroot
# create the physical volume
pvcreate /dev/mapper/cryptroot
# create a volume group inside
vgcreate lvmroot /dev/mapper/cryptroot
# create the swap volume
lvcreate --size 8G lvmroot --name nwap
# if you desire, create a home volume
lvcreate --size 150G lvmroot --name home
# create the root volume
lvcreate -l 100%FREE lvmroot --name root
# format as usual for root partition
mkfs.ext4 -L "nixroot" /dev/mapper/lvmroot-root
# if you previously made the home partition, do it too
mkfs.ext4 -L "nixhome" /dev/mapper/lvmroot-home
# format the swap partition
mkswap -L "nixswap" /dev/mapper/lvmroot-swap
# mount root
mount /dev/disk/by-label/nixroot /mnt
# mount boot
mount --mkdir /dev/sda1 /mnt/boot
# again, if you did the home volume
mount --mkdir /dev/disk/by-label/nixhome /mnt/home
# turn on swap
swapon /dev/disk/by-label/nixswap
```
3. prepare nixos
```bash
# generate templates and update the hardware-configuration.nix
sudo nixos-generate-config --root /mnt
# add cryptd to the kernelModules
boot.initrd.kernelModules = [ "dm-snapshot" "cryptd" ];
# add file systems using labels
fileSystems."/" =
{ device = "/dev/disk/by-label/nixroot";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-label/nixboot";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-label/nixhome";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/disk/by-label/nixswap"; }
];
# point the bootloader to the luks device
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-label/nixcrypt";
```
4. install nixos
```bash
cd /mnt
sudo nixos-install
```
## how to install updates
```bash
# update flakes
nix flake update
# rebuild system
sudo nixos-rebuild switch --flake ~/git/nixconfig#default
# update home-manager files
home-manager switch --flake ~/git/nixconfig#aaron
```
## author ## author

77
flake.lock generated
View File

@@ -1,5 +1,26 @@
{ {
"nodes": { "nodes": {
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1769996383,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -7,11 +28,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765337252, "lastModified": 1771519029,
"narHash": "sha256-HuWQp8fM25fyWflbuunQkQI62Hg0ecJxWD52FAgmxqY=", "narHash": "sha256-H59Qf82wv5kBXVoyXsmUKW+9J3o8FqgY4uKaLdsLdLg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "13cc1efd78b943b98c08d74c9060a5b59bf86921", "rev": "167e0b6837115e672ec5f58e2b0ea39093abe807",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -22,11 +43,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1765186076, "lastModified": 1771369470,
"narHash": "sha256-hM20uyap1a0M9d344I692r+ik4gTMyj60cQWO+hAYP8=", "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "addf7cf5f383a3101ecfba091b98d0a1263dc9b8", "rev": "0182a361324364ae3f436a63005877674cf45efb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -36,6 +57,28 @@
"type": "github" "type": "github"
} }
}, },
"nixvim": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1771135771,
"narHash": "sha256-wyvBIhDuyCRyjB3yPg77qoyxrlgQtBR1rVW3c9knV3E=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "ed0424f0b08d303a7348f52f7850ad1b2704f9ba",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"noctalia": { "noctalia": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -43,11 +86,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765420707, "lastModified": 1771513929,
"narHash": "sha256-lX0WxWosQbm3DrZhscVTiLLpJcoZvaQaZoP+eNt75wE=", "narHash": "sha256-dPeHevAT1Cb2w/Wrfz/d5i6RfO8bvbGl/KrTPxU2l3w=",
"owner": "noctalia-dev", "owner": "noctalia-dev",
"repo": "noctalia-shell", "repo": "noctalia-shell",
"rev": "298b2f5c794d4641cde21cf20422224bf8a60f99", "rev": "9c47ce03f200e0b8fc515d973440d5bc3e359785",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -60,8 +103,24 @@
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixvim": "nixvim",
"noctalia": "noctalia" "noctalia": "noctalia"
} }
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@@ -1,65 +1,58 @@
{ {
description = "0x29a NixOS flake config"; description = "0x29a NixOS flake";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
# the main nix package collection
nixpkgs = {
url = "github:nixos/nixpkgs/nixos-unstable";
};
# home manager for dotfiles
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# noctalia shell
noctalia = { noctalia = {
url = "github:noctalia-dev/noctalia-shell"; url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = inputs@{ self, nixpkgs, home-manager, ... }: outputs = { self, nixpkgs, home-manager, nixvim, ... }@inputs: {
let
lib = nixpkgs.lib;
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
nixosConfigurations = { nixosConfigurations = {
# default config
default = nixpkgs.lib.nixosSystem { default = nixpkgs.lib.nixosSystem {
inherit system; system = "x86_64-linux";
specialArgs = { specialArgs = { inherit inputs; };
inherit inputs;
};
modules = [ modules = [
# import host specific configs
./hosts/default/configuration.nix
# import host specific hardware configs
./hosts/default/hardware-configuration.nix ./hosts/default/hardware-configuration.nix
./hosts/default/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.aaron.imports = [
nixvim.homeModules.nixvim
./users/aaron/home.nix
];
}
]; ];
}; };
# laptop neon
neon = nixpkgs.lib.nixosSystem { neon = nixpkgs.lib.nixosSystem {
inherit system; system = "x86_64-linux";
specialArgs = { specialArgs = { inherit inputs; };
inherit inputs;
};
modules = [ modules = [
# import host specific configs
./hosts/neon/configuration.nix
# import host specific hardware configs
./hosts/neon/hardware-configuration.nix ./hosts/neon/hardware-configuration.nix
# import noctalia shell configs ./hosts/neon/configuration.nix
./hosts/neon/noctalia.nix home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.aaron.imports = [
nixvim.homeModules.nixvim
./users/aaron/home.nix
];
}
]; ];
}; };
}; };
}; };
} }

View File

@@ -1,157 +1,25 @@
# 0x29a nixos conifg { config, pkgs, inputs, ... }:
{ pkgs, lib, inputs, ... }:
{ {
imports = imports = [
[ ../../modules/nixos/audio.nix
./hardware-configuration.nix ../../modules/nixos/bootloader.nix
inputs.home-manager.nixosModules.home-manager ../../modules/nixos/certificates.nix
]; ../../modules/nixos/docker.nix
../../modules/nixos/gnupg.nix
# use flakes ../../modules/nixos/locales.nix
nix.settings.experimental-features = [ "nix-command" "flakes" ]; ../../modules/nixos/networking.nix
../../modules/nixos/niri.nix
# configure bootloader ../../modules/nixos/noctalia.nix
boot.loader.systemd-boot.enable = true; ../../modules/nixos/openssh.nix
boot.loader.efi.canTouchEfiVariables = true; ../../modules/nixos/packages.nix
../../modules/nixos/sddm.nix
# plymouth boot eye candy ../../modules/nixos/services.nix
boot.initrd.systemd.enable = true; ../../modules/nixos/settings.nix
boot.plymouth.enable = true; ../../modules/nixos/steam.nix
boot.plymouth.theme = "spinner"; ../../modules/nixos/users.nix
# use latest kernel
boot.kernelPackages = pkgs.linuxPackages_latest;
# networking
networking.hostName = "neon";
networking.networkmanager.enable = true;
# bluetooth
hardware.bluetooth.enable = true;
# time zone.
time.timeZone = "Europe/Amsterdam";
# select internationalisation properties
i18n.defaultLocale = "en_US.UTF-8";
i18n.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";
};
console = {
font = "Lat2-Terminus16";
keyMap = "de_CH-latin1";
};
# window manager configs
programs.niri.enable = true;
programs.xwayland.enable = true;
services.displayManager.gdm = {
enable = true;
wayland = true;
};
services.tuned.enable = true;
services.upower.enable = true;
environment.pathsToLink = [ "/libexec" ];
environment.variables.EDITOR = "vim";
# enable sound
services.pipewire = {
enable = true;
pulse.enable = true;
};
# define a user account
users.users.aaron = {
isNormalUser = true;
group = "users";
extraGroups = [ "wheel" ];
shell = pkgs.zsh;
packages = with pkgs; [
tree
fastfetch
];
};
# browser
programs.firefox.enable = true;
# zsh config
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestions.enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "sudo" ];
theme = "gentoo";
};
};
# system packages
environment.systemPackages = with pkgs; [
efibootmgr
neovim
vim
git
alacritty
ghostty
kitty
gnupg
xwayland
xwayland-satellite
wget
]; ];
# Some programs need SUID wrappers
programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# enable steam on this machine
nixpkgs.config.allowUnfree = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
# fix black screen in steam on intel gpu
programs.steam.package = pkgs.steam.override {
extraArgs = "-system-composer";
};
# enable the OpenSSH daemon
services.openssh = {
enable = true;
openFirewall = true;
};
# firewall configs
networking.firewall.allowedTCPPorts = [ ];
networking.firewall.allowedUDPPorts = [ ];
# enable home-manager globally
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
# Add the user's home-manager configuration
home-manager.users.aaron = import ./home.nix;
# install state version # install state version
system.stateVersion = "25.11"; # Don't change system.stateVersion = "25.11"; # Don't change
} }

View File

@@ -1,101 +0,0 @@
{ config, pkgs, ... }:
{
# user config
home.username = "aaron";
home.homeDirectory = "/home/aaron";
# user packages
home.packages = with pkgs; [
discord
#teamspeak3 # unmaintained qtwebkit
fastfetch
screenfetch
zip
xz
unzip
p7zip
jq
mtr
iperf3
imagemagick
imv
dnsutils
ldns
socat
nmap
keepassxc
cowsay
file
which
tree
zstd
gnupg
btop
iotop
iftop
strace
ltrace
lsof
sysstat
lm_sensors
ethtool
pciutils
usbutils
powerline-fonts
powerline-symbols
];
# configure git
programs.git.settings = {
enable = true;
userName = "aaron";
userEmail = "aaron@0x29a.ch";
};
# configure zsh theme
programs.zsh = {
enable = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh = {
enable = true;
theme = "agnoster";
};
};
# set gtk theme
gtk = {
enable = true;
theme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
};
# set qt theme
qt = {
enable = true;
platformTheme.name = "qt6";
style = {
name = "adwaita-dark";
package = pkgs.adwaita-qt;
};
};
# set env vars
home.sessionVariables = {
EDITOR = "vim";
};
# enable syncthing for user
services.syncthing.enable = true;
# enable home manager
programs.home-manager.enable = true;
# don't change
home.stateVersion = "25.11";
}

View File

@@ -0,0 +1,11 @@
{ config, pkgs, inputs, ... }:
{
# user fonts
home.packages = with pkgs; [
nerd-fonts._0xproto
nerd-fonts.sauce-code-pro
powerline-fonts
powerline-symbols
];
}

View File

@@ -0,0 +1,20 @@
{ config, pkgs, inputs, ... }:
{
programs.ghostty = {
enable = true;
settings = {
clipboard-paste-protection = false;
clipboard-read = "allow";
font-family = "0xProto Nerd Font Mono";
font-size = 9;
gtk-titlebar = false;
scrollback-limit = 10000;
shell-integration = "zsh";
theme = "noctalia"; # generated by noctalia-shell
window-decoration = "auto";
window-padding-x = 10;
window-padding-y = 10;
};
};
}

View File

@@ -0,0 +1,18 @@
{ config, pkgs, inputs, ... }:
{
programs.git = {
enable = true;
settings = {
push = { autoSetupRemote = true; };
user = {
name = "aaron";
email = "aaron@0x29a.ch";
};
};
signing = {
key = "7A830180A05DAC59CDE43B0677D2F5DB48184456";
signByDefault = true;
};
};
}

View File

@@ -0,0 +1,26 @@
{ config, pkgs, inputs, ... }:
{
programs.nixvim = {
globals.mapleader = " ";
enable = true;
viAlias = false;
vimAlias = true;
opts = {
number = true;
relativenumber = true;
shiftwidth = 2;
tabstop = 2;
expandtab = true;
incsearch = true;
};
colorschemes.nord.enable = true;
plugins.lualine.enable = true;
plugins.nix.enable = true;
plugins.nvim-tree.enable = true;
plugins.treesitter.enable = true;
plugins.telescope.enable = true;
plugins.web-devicons.enable = true;
plugins.indent-blankline.enable = true;
};
}

View File

@@ -0,0 +1,15 @@
{ config, pkgs, inputs, ... }:
{
# user packages
home.packages = with pkgs; [
discord
fastfetch
keepassxc
screenfetch
];
# services and other software
services.syncthing.enable = true;
programs.home-manager.enable = true;
}

View File

@@ -0,0 +1,20 @@
{ config, pkgs, inputs, ... }:
{
programs.zsh = {
enable = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh = {
enable = true;
theme = "agnoster";
#plugins = [ "git" "ssh-agent" ];
};
};
# set important env vars
home.sessionVariables = {
EDITOR = "vim";
NH_FLAKE = "/home/aaron/git/nixconfig";
};
}

View File

@@ -0,0 +1,30 @@
{ config, pkgs, inputs, ... }:
{
# set gtk theme
gtk = {
enable = true;
theme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
};
# set qt theme
qt = {
enable = true;
platformTheme.name = "qt6";
style = {
name = "adwaita-dark";
package = pkgs.adwaita-qt;
};
};
# ensure packages are installed
home.packages = with pkgs; [
gnome-themes-extra
adwaita-qt
];
}

View File

@@ -0,0 +1,56 @@
{ config, pkgs, inputs, ... }:
{
programs.tmux = {
enable = true;
prefix = "C-a";
keyMode = "vi";
mouse = true;
terminal = "screen-256color";
extraConfig = ''
# Status keys
set -g status-keys vi
# Status bar options
set -g status-interval 1
set -g status on
set -g status-justify left
# Clock mode
setw -g clock-mode-colour cyan
# Colors
set -g status-bg black
set -g status-fg white
# Key bindings
# Reload configuration
bind r source-file ~/.config/tmux/tmux.conf
# Panel split and selection
unbind %
unbind '"'
bind v split-window -v
bind c split-window -h
bind i new-window
bind b previous-window
bind n next-window
# Move around panes with hjkl
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Resize panes
bind H resize-pane -L 5
bind J resize-pane -D 5
bind K resize-pane -U 5
bind L resize-pane -R 5
# Kill commands
bind q kill-window
bind Q kill-session
# Bars
set -g status-left "#[fg=black,bg=blue,bold] #S#[fg=blue,bg=black,nobold,noitalics,nounderscore]"
set -g status-left "#[fg=black,bg=blue,bold] #S #[fg=blue,bg=black,nobold,noitalics,nounderscore]"
set -g status-right "#{prefix_highlight}#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %Y-%m-%d #[fg=white,bg=brightblack,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] %H:%M #[fg=cyan,bg=brightblack,nobold,noitalics,nounderscore]#[fg=black,bg=cyan,bold] #H "
# Windows
set -g window-status-format "#[fg=black,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#I #[fg=white,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#W #F #[fg=brightblack,bg=black,nobold,noitalics,nounderscore]"
set -g window-status-current-format "#[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#I #[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#W #F #[fg=cyan,bg=black,nobold,noitalics,nounderscore]"
set -g window-status-separator ""
'';
};
}

9
modules/nixos/audio.nix Normal file
View File

@@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
# enable sound through pipewire
services.pipewire = {
enable = true;
pulse.enable = true;
};
}

View File

@@ -0,0 +1,29 @@
{ config, lib, pkgs, ... }:
{
# set bootloader to systemd
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
# enable systemd initrd
boot.initrd.systemd.enable = true;
# plymouth
boot.plymouth = {
enable = true;
theme = "spinner";
};
# kernel options
boot.kernelParams = [ "quiet" "acpi.debug_level=0"];
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.consoleLogLevel = 2;
# Add boot-related packages
environment.systemPackages = with pkgs; [
efibootmgr
terminus_font
];
}

View File

@@ -0,0 +1,22 @@
{ config, lib, pkgs, ... }:
let
caddyRootCA = ''
-----BEGIN CERTIFICATE-----
MIIBozCCAUmgAwIBAgIQf2N1DGp2HVOoPaGuGDEnwjAKBggqhkjOPQQDAjAwMS4w
LAYDVQQDEyVDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSAyMDI1IEVDQyBSb290MB4X
DTI1MTEwNjE5NDA1OFoXDTM1MDkxNTE5NDA1OFowMDEuMCwGA1UEAxMlQ2FkZHkg
TG9jYWwgQXV0aG9yaXR5IC0gMjAyNSBFQ0MgUm9vdDBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABGR9mSgKCSjvcv7LvvIcO84Wpf/KtC/aexT5shSKXd1R97kIyMI5
SUYz0MzbRZHJ4QMpIeALirOK9Eoy2zht0dKjRTBDMA4GA1UdDwEB/wQEAwIBBjAS
BgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBRHKfIfJrrA2DACFrunVSmdnJHO
1zAKBggqhkjOPQQDAgNIADBFAiAoqc0+cHeq/8SQN16CKjVvXpZuMkg7NLDoWYMw
KgmzowIhAJlkxzBdVngwnJu8uPrVizTGF6XtmUHdJ0NDeccEqUCr
-----END CERTIFICATE-----
'';
in
{
security.pki.certificates = [
caddyRootCA # self-signed pki ca for my home-lab
];
}

23
modules/nixos/docker.nix Normal file
View File

@@ -0,0 +1,23 @@
{ config, lib, pkgs, ...}:
{
virtualisation.docker = {
enable = true;
# Customize Docker daemon settings
daemon.settings = {
dns = [ "1.1.1.1" "8.8.8.8" ];
log-driver = "journald";
registry-mirrors = [ "https://mirror.gcr.io" ];
storage-driver = "overlay2";
};
# Use the rootless mode
rootless = {
enable = true;
setSocketVariable = true;
};
# Install docker-compose
extraPackages = with pkgs; [
docker-compose
];
};
}

15
modules/nixos/gnupg.nix Normal file
View File

@@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
{
# enable gnupg agent
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = pkgs.pinentry-curses;
};
environment.systemPackages = with pkgs; [
gnupg
pinentry-curses
];
}

26
modules/nixos/locales.nix Normal file
View File

@@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
{
# set the time zone
time.timeZone = "Europe/Zurich";
# set internationalisation properties
i18n.defaultLocale = "en_US.UTF-8";
i18n.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";
};
# set console font and keymap
console = {
font = "Lat2-Terminus16";
keyMap = "de_CH-latin1";
};
}

View File

@@ -0,0 +1,22 @@
{ config, lib, pkgs, ... }:
{
# set hostnname
networking.hostName = "neon";
# user networkmanager
networking.networkmanager.enable = true;
# firewall default configs
networking.firewall.allowedTCPPorts = [ ];
networking.firewall.allowedUDPPorts = [ ];
# enable bluetooth
hardware.bluetooth.enable = true;
# Add network-related packages
environment.systemPackages = with pkgs; [
wireguard-tools
update-systemd-resolved
];
}

11
modules/nixos/niri.nix Normal file
View File

@@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
# just enable and install niri
programs.niri.enable = true;
# Add compositor-related packages
environment.systemPackages = with pkgs; [
xwayland-satellite
];
}

View File

@@ -1,10 +1,8 @@
{ pkgs, inputs, ... }: { config, lib, pkgs, inputs, ... }:
{ {
# install noctalia and helper packages # install noctalia and helper packages
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
#kdePackages.qt6ct
#nwg-look
adw-gtk3 adw-gtk3
adwaita-qt adwaita-qt
adwaita-qt6 adwaita-qt6

19
modules/nixos/openssh.nix Normal file
View File

@@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
{
# enable the openssh daemon
services.openssh = {
enable = true;
openFirewall = true;
ports = [ 666 ];
settings = {
AuthenticationMethods = "publickey";
KbdInteractiveAuthentication = false;
MaxAuthTries = 5;
PasswordAuthentication = false;
PermitRootLogin = "no";
X11Forwarding = false;
};
};
}

View File

@@ -0,0 +1,53 @@
{ config, lib, pkgs, ... }:
{
# system packges
environment.systemPackages = with pkgs; [
alacritty
btop
cowsay
dnsutils
ethtool
file
fwupd
fwupd-efi
ghostty
git
imagemagick
imv
iperf3
jq
kdePackages.qtmultimedia
kitty
ldns
lm_sensors
lsof
ltrace
mtr
neovim
nh
nix-output-monitor
nmap
nvd
p7zip
pciutils
sddm-astronaut
socat
sof-firmware
strace
sysstat
terminus_font
tree
unzip
usbutils
vim
wget
which
xz
zip
zstd
];
# browser
programs.firefox.enable = true;
}

20
modules/nixos/sddm.nix Normal file
View File

@@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
{
# enable sddm and use astronaut theme
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
autoNumlock = true;
enableHidpi = true;
theme = "sddm-astronaut-theme";
settings = {
Theme = {
Current = "sddm-astronaut-theme";
};
};
extraPackages = with pkgs; [
sddm-astronaut
];
};
}

View File

@@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
# list of enabled services on the system
services = {
tuned.enable = true;
upower.enable = true;
fwupd.enable = true;
tailscale.enable = true;
};
}

View File

@@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
{
nix = {
# nix settings
settings = {
# enable flakes and nix-command
experimental-features = [ "nix-command" "flakes" ];
# auto-optimize my nix-store
auto-optimise-store = true;
# use all cores
max-jobs = "auto";
# use all available cores per job
cores = 0;
# add trusted substituters (binary caches)
substituters = [
"https://cache.nixos.org"
"https://nix-community.cachix.org"
];
# add keys
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
# enable automatic garbage collection
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
# links /libexec from derivations to /run/current-system/sw
environment.pathsToLink = [ "/libexec" ];
# set the default editor to vim
environment.variables.EDITOR = "vim";
# enable home-manager globally
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
}

23
modules/nixos/steam.nix Normal file
View File

@@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
# allow unfree to install steam
nixpkgs.config.allowUnfree = true;
# enable steam and open firewall
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
# add proton-glorious-eggroll
extraCompatPackages = with pkgs; [
proton-ge-bin
];
};
# fix black screen in steam when using xwayland-satellite
programs.steam.package = pkgs.steam.override {
extraArgs = "-system-composer";
};
}

23
modules/nixos/users.nix Normal file
View File

@@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
# create users
users.users.aaron = {
isNormalUser = true;
group = "users";
extraGroups = [ "wheel" "networkmanager" "docker" ];
shell = pkgs.zsh;
};
# add default zsh config
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestions.enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "sudo" ];
theme = "gentoo";
};
};
}

20
users/aaron/home.nix Normal file
View File

@@ -0,0 +1,20 @@
{ config, pkgs, ... }:
{
imports = [
../../modules/home-manager/fonts.nix
../../modules/home-manager/git.nix
../../modules/home-manager/ghostty.nix
../../modules/home-manager/nixvim.nix
../../modules/home-manager/programs.nix
../../modules/home-manager/shell.nix
../../modules/home-manager/styling.nix
../../modules/home-manager/tmux.nix
];
home = {
username = "aaron";
homeDirectory = "/home/aaron";
stateVersion = "25.11";
};
}