Commit graph

87 commits

Author SHA1 Message Date
c0aecc7f02
refactor(jade): install wallpaper to system and separate xinitrc sections
- Install gruvbox wallpaper to /run/current-system/sw/share/backgrounds/jade/
- Split xinitrc into "Personal Configuration" and "jade Desktop Environment"
- Move wallpaper into jade/assets/ for flake extraction readiness

This makes jade fully repo-independent - the wallpaper is now part of jade's
system packages rather than referencing the nix-config repo. When extracted
as a flake, jade will be completely self-contained.
2025-12-21 13:00:44 +08:00
0e7f2ada72
fix(jade): resolve Thunar 20s startup delay
Import DISPLAY and XAUTHORITY into systemd user environment and restart
xdg-desktop-portal-gtk service in xinitrc. This fixes the issue where
portal backends fail to start with "cannot open display" error when using
startx instead of a display manager.

Without this, Thunar waits 25 seconds for org.freedesktop.portal.Desktop
to respond before timing out and displaying.
2025-12-21 12:51:17 +08:00
4169045fa4
feat(jade): create modular desktop environment
Rename xmonad/ to jade/ and restructure as a complete desktop environment
with hybrid NixOS and home-manager modules. This establishes jade as a
self-contained, gruvbox-themed DE that can eventually be extracted as a flake.

Changes:
- Create jade/ with NixOS module (WM, system packages, GTK theme)
- Create jade/home.nix for home-manager services (wezterm, picom, dunst)
- Move dmenu with gruvbox patches into jade/dmenu/
- Convert wezterm to pure Lua config with gruvbox-material colors
- Move xinitrc into jade/ directory
- Remove feh/scrot from global env (now in jade)
- Remove dmenu overlay from global overlays
- Simplify home-manager desktop features to just user apps

This follows the pattern of real DEs (GNOME, KDE) where system and user
configs are split across NixOS and home-manager modules.
2025-12-21 12:36:11 +08:00
6f64840eb1
feat: upgrade to NixOS 25.11
- Update nixpkgs and home-manager to 25.11 release
- Update flake dependencies
- Migrate git config to settings attribute
- Replace deprecated packages (mpc-cli -> mpc, vaapiIntel -> intel-vaapi-driver)
- Fix system references to use stdenv.hostPlatform.system
- Add crowdsec module overrides
- Remove android-udev-rules from fuchsia
- Configure SSH with enableDefaultConfig = false
- Update zsh dotDir to use config.xdg.configHome
2025-12-20 16:53:59 +08:00
c1d4fa5255
refactor(fuchsia): reorganize audio and bluetooth configuration
Separated PipeWire audio configuration from bluetooth hardware settings for
better logical organization. Moved bluetooth config to hardware-configuration.nix
alongside kernel module workarounds (disable_ertm, iwlwifi power_save).

Also added documentation for permittedInsecurePackages in global config and
updated flake dependencies.
2025-11-12 14:40:49 +08:00
9fb72e762b
docs(age): improve readability with structured comments
Add section headers and explanatory comments to clarify the purpose of each configuration block, with emphasis on the critical persistent path requirement for early boot secret decryption.
2025-10-12 10:19:42 +08:00
8874c88fbc
fix(ssh): enable key-based root login and use FQDNs for system services
Fixes backup system authentication and hostname resolution issues.

Changes:
- Change PermitRootLogin from "no" to "prohibit-password" in global SSH config
  (allows key-based root login for host-to-host backups while blocking passwords)
- Update fuchsia onsite backup to use viridian.home.arpa FQDN instead of shortname
- Update SSH knownHosts to use FQDNs (fuchsia.home.arpa, viridian.home.arpa)
  (system-level config uses FQDNs, user shortcuts remain in home-manager)

This enables the complete 3-2-1 backup strategy with automated backups working
correctly between fuchsia and viridian, and fuchsia to BorgBase.
2025-10-07 23:11:31 +08:00
6723c0e0b6
chore(secrets): rekey agenix secrets for new configuration
- Add rekeyed borgbackup passphrase for fuchsia offsite backups
- Remove unused projectsend secret from viridian
2025-10-07 22:37:26 +08:00
85dc419349
refactor(ssh): decentralize SSH configuration to per-host services
Restructures SSH trust relationships from global to host-specific configuration
for better locality of concern and principle of least privilege.

Changes:
- Collapse nixos/common/global/ssh/ back to ssh.nix (single-file module)
- Move internal host trust (fuchsia/viridian) to per-host services/ssh/
- Split BorgBase known hosts by repository (li9kg944 for fuchsia, r7ag7x1w for viridian)
- Add viridian SSH server config to accept backup connections from fuchsia
- Add fuchsia borgbackup passphrase for offsite backups
- Configure viridian to create /srv/borg-repo/fuchsia for remote backups

This enables the 3-2-1 backup strategy with fuchsia backing up to both viridian
(onsite) and BorgBase (offsite) with proper SSH authentication.
2025-10-07 22:33:20 +08:00
acab920858
WIP: SSH configuration restructure
Backup of SSH reorganization changes for future reference.
2025-10-07 20:58:09 +08:00
b0bfb37d3c
refactor(viridian): migrate service data to dedicated BTRFS subvolumes
Migrate from path-based persistence (/persist/var/lib/*) to dedicated
BTRFS subvolumes for better data isolation and snapshot capabilities.

- Move valuable user-facing services to /srv/* with srv-* subvolumes:
  - forgejo: git repositories and database
  - opengist: paste data
  - minecraft: game world data
  - lighttpd: static web content
  - containers: OCI container volumes

- Update home directory to use hm-sajenim subvolume on viridian disk
- Remove jupyterhub service (no longer in use)
- Update borgbackup paths to match new service locations
- Follow upstream service defaults where possible for maintainability

Services kept on /persist (disposable state):
- traefik, crowdsec, murmur
2025-10-06 13:07:46 +08:00
28ba8186bb
refactor(global): reorganize system packages by category
Restructured systemPackages list with alphabetically sorted categories to improve
maintainability and reduce vertical space. Added descriptive comments for all
environment configuration sections.
2025-10-05 22:37:48 +08:00
341d8ecf45
docs: add explanatory comments to global configurations
Add comprehensive inline documentation to both NixOS and Home Manager
global configuration files, explaining the purpose of each section,
overlay usage, unfree package policy, and configuration settings.
2025-10-05 16:40:48 +08:00
591346600f
refactor: centralize unfree package allowlists
Move all allowUnfreePredicate declarations to global configs to prevent
the "last definition wins" merging issue. Unfree packages are now managed
in two central locations:
- NixOS system packages: nixos/common/global/default.nix
- Home Manager packages: home-manager/sajenim/global/default.nix
2025-10-01 10:23:20 +08:00
b0be0f9042
refactor 2025-09-26 19:04:48 +08:00
dc87a6ebe0
persiste /var/lib/private 2025-09-26 18:06:42 +08:00
1b857236ee
reduce time to keep garbage 2025-09-26 18:06:08 +08:00
03a597ae6d
feat: setup projectsend docker containers 2025-08-07 21:41:33 +08:00
f2d9cfc350
remove redundant secrets 2025-06-30 11:28:53 +08:00
92f35bf09d
refactor 2025-06-23 23:16:41 +08:00
0535f68752
fix unused imports, install dmenu 2025-05-12 09:58:09 +08:00
82231ab120
move direnv to nvim, install devenv 2025-05-04 20:53:55 +08:00
e73e614016
chore: refactor 2025-05-01 19:13:56 +08:00
c38f58067a
opt in unfree 2025-04-30 12:18:32 +08:00
8a6878a034
chore: we no longer need this 2025-03-23 23:14:46 +08:00
0c4507616f
enable ssh support in gnupg agent 2025-03-17 23:43:07 +08:00
413d6aa28b
install lmodern font 2025-03-17 23:41:47 +08:00
d7e2a0ce40
chore: fix dconf for xfce/gtk 2025-03-14 21:45:41 +08:00
abacbb57d7
chore: fix pinentry 2025-03-14 21:41:17 +08:00
f06011e890
chore: refactor 2025-03-08 12:02:30 +08:00
3dcfac6d31
delete older 28d 2025-03-07 21:01:58 +08:00
9ff256061a
chore: refactor 2025-02-26 00:23:03 +08:00
fe95e44a07
feat: add support for flatpak in NixOS configuration
Added the necessary configurations and dependencies to enable Flatpak in the Fuchsia module.
This includes enabling the xdg portal for default settings and adding the flatpak service.
2025-02-23 18:26:58 +08:00
9cf14b2a8c
Remove deprecated protonup-ng and add missing proton-ge-bin compatibility
- Removed `protonup-ng` from home-manager configuration for games, as it is no longer used.
- Added `unstable.proton-ge-bin` to Steam's compatibility packages in the NixOS user configuration.
2025-02-18 14:13:01 +08:00
b777814ff4
update ssh 2025-02-16 23:23:19 +08:00
9d447646b7
remove flatpaks 2025-02-16 09:34:00 +08:00
2e37cefe3e
persist /var/private globally 2024-12-21 21:55:23 +08:00
d348fb8032
setup scanner 2024-11-30 21:38:35 +08:00
cd7f0eb21d
install p7zip 2024-11-28 22:21:16 +08:00
3df22f9eb0
fix crowdsec/traefik 2024-11-24 09:36:36 +08:00
9b13797b9b
install wiki-js 2024-10-16 04:59:02 +08:00
2e7fefa7b9
migrate backups to borgbase 2024-10-15 06:46:10 +08:00
253cdf8ede
remove some unused services/refactor 2024-10-15 06:27:48 +08:00
d5c0320eee
install sshfs + add zsh alias 2024-10-01 11:58:33 +08:00
7efce0a4ee
add biometric key 2024-10-01 11:57:53 +08:00
0423359e16
remove samba shares 2024-09-30 21:00:01 +08:00
a98bb5989d
setup immich 2024-09-30 09:22:07 +08:00
7203fc1ed9
refactor 2024-09-20 20:24:55 +08:00
482462c8ba
fix: samba 2024-09-07 18:44:01 +08:00
c1a5ed1d4f
migrate impermanent home to subvolumes 2024-09-07 15:48:27 +08:00