Compare commits

...

5 commits

Author SHA1 Message Date
bc4321a3cc
refactor(desktop): remove discord import
Remove discord from desktop feature imports.
2025-10-05 16:45:25 +08:00
dda958a8fd
chore: update flake inputs
Updates agenix-rekey, claude-code-nix, nix-jetbrains-plugins,
and nixpkgs (stable/unstable) to latest versions.
2025-10-05 16:42:05 +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
94221dbb56
chore: update flake inputs
Update xmonad-config to latest revision (48) which includes resize functionality and directional window management improvements.
2025-10-05 10:57:00 +08:00
ee7141e74e
refactor(wezterm): remove unused pane rotation keybinds
Remove PageUp/PageDown pane rotation keybinds that don't align with wezterm workflow. The static pane layout approach (fixed splits + zoom toggle) doesn't benefit from rotation like dynamic window managers do.

Also update CLAUDE.md to clarify that Home Manager is a NixOS module, so just build/switch commands handle both system and user configurations together.
2025-10-05 10:53:54 +08:00
7 changed files with 68 additions and 74 deletions

View file

@ -9,16 +9,16 @@ This is a NixOS and Home Manager configuration using flakes architecture, managi
## Common Development Commands
### System Management
- `just build <hostname>` - Build system configuration without switching
- `just switch <hostname>` - Build and switch to new system configuration (requires sudo)
- `just build <hostname>` - Build system and home-manager configuration without switching
- `just switch <hostname>` - Build and switch to new system and home-manager configuration (requires sudo)
- `just deploy <hostname>` - Deploy configuration to remote host
**Note**: Home Manager is configured as a NixOS module, so `just build/switch` commands handle both system and user configurations together.
### Nix Operations
- `nix build` - Build packages defined in flake
- `nix fmt` - Format Nix files using alejandra formatter
- `nix flake update` - Update all flake inputs
- `nixos-rebuild build --flake .#<hostname>` - Build specific host configuration
- `home-manager switch --flake .#sajenim@<hostname>` - Switch Home Manager configuration
### Development Environment
- `nix develop` - Enter development shell with `just` available

52
flake.lock generated
View file

@ -32,11 +32,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1757800857,
"narHash": "sha256-VajxFp0rgP1vec4+Y4WVgovjVx236pR67gQadvEtx7Q=",
"lastModified": 1759255832,
"narHash": "sha256-+8RmfVC7+9bYwUnodGSbRaSGyvkGB/lkFe03xvyvu38=",
"owner": "oddlama",
"repo": "agenix-rekey",
"rev": "c1a7e59cd9ba915fcc03b82d3d7721dfa3d40ded",
"rev": "cdf62e6ee25c0bba7bf391dace328346a7c27609",
"type": "github"
},
"original": {
@ -51,11 +51,11 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1759201958,
"narHash": "sha256-+vm2LR3c38rjy+nZMtmxjJEsItH5coIqa1mHjSnIB8M=",
"lastModified": 1759622618,
"narHash": "sha256-Q46aXz+Vqb1rOUVA2MO46j+KWeR7AL9qPEMU5nnHX0g=",
"owner": "sadjow",
"repo": "claude-code-nix",
"rev": "a9151e71771a1c2d1874cffe549749c5c27642ed",
"rev": "730bcc4254f1c72fea59500ab8b25570de757090",
"type": "github"
},
"original": {
@ -552,11 +552,11 @@
"systems": "systems_4"
},
"locked": {
"lastModified": 1758367636,
"narHash": "sha256-j5Rj9KAhuoTCQhtD5N2oJYHuEukTmJe8aPgOetWjG7w=",
"lastModified": 1759560900,
"narHash": "sha256-wQiannciIXFWVzoVUpP7TOB3Ajo+EYbrWje2EBfFRhU=",
"owner": "theCapypara",
"repo": "nix-jetbrains-plugins",
"rev": "5b97e4a2f1729b89de1ea46b578eccf242ddbe17",
"rev": "58500142f3281d6dcfd503ad108705b54f1d0e3c",
"type": "github"
},
"original": {
@ -633,11 +633,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1758690382,
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
"lastModified": 1759381078,
"narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "e643668fd71b949c53f8626614b21ff71a07379d",
"rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee",
"type": "github"
},
"original": {
@ -681,11 +681,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1759070547,
"narHash": "sha256-JVZl8NaVRYb0+381nl7LvPE+A774/dRpif01FKLrYFQ=",
"lastModified": 1759536663,
"narHash": "sha256-hhM8SUI6kQMei5TImFdNQy9EDT8g2hAD161DUtbfAy0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "647e5c14cbd5067f44ac86b74f014962df460840",
"rev": "27ac93958969b5f3dccd654b402599cf3de633ac",
"type": "github"
},
"original": {
@ -744,11 +744,11 @@
},
"nixpkgs_6": {
"locked": {
"lastModified": 1758589230,
"narHash": "sha256-zMTCFGe8aVGTEr2RqUi/QzC1nOIQ0N1HRsbqB4f646k=",
"lastModified": 1759580034,
"narHash": "sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d1d883129b193f0b495d75c148c2c3a7d95789a0",
"rev": "3bcc93c5f7a4b30335d31f21e2f1281cba68c318",
"type": "github"
},
"original": {
@ -813,11 +813,11 @@
"nixvim": "nixvim_2"
},
"locked": {
"lastModified": 1759139016,
"narHash": "sha256-KGIh9sZn4nzUL/tisAY/L25/tV9P9T9JFQCAsPFqCMk=",
"lastModified": 1759480992,
"narHash": "sha256-Dmoyou7/ksb1+5tnzKzc0ebZZNu1mFIHj4wFig0xL6s=",
"ref": "refs/heads/master",
"rev": "e9e5bb07fb8514444f7da0b14cfadf22743a186a",
"revCount": 106,
"rev": "ac16609e1f3f3cfcab660b476fdb10b46eeb15f4",
"revCount": 108,
"type": "git",
"url": "https://git.sajenim.dev/jasmine/nixvim-config.git"
},
@ -1156,11 +1156,11 @@
"nixpkgs": "nixpkgs_11"
},
"locked": {
"lastModified": 1756741389,
"narHash": "sha256-3evhLo2SkA6ZfqSZpupjirgPb0YMAXk97UHvCS5RECU=",
"lastModified": 1759632947,
"narHash": "sha256-FWt4bglCX/xa6QDBjSm+7iSYSK54gae2uXEyI97CyIo=",
"ref": "refs/heads/master",
"rev": "3063b4e06a6fb8ec286cfe15e89be88c5f2e5e89",
"revCount": 42,
"rev": "22abfee37ec1f24fcd9974e41f6468785188a860",
"revCount": 48,
"type": "git",
"url": "https://git.sajenim.dev/jasmine/xmonad-config.git"
},

View file

@ -5,7 +5,6 @@
}: {
imports = [
./cava
./discord
./dunst
./mpv
./obs

View file

@ -1,15 +0,0 @@
{
pkgs,
...
}: {
nixpkgs.overlays = [
(final: prev: {
discord = prev.discord.override {withOpenASAR = true;};
})
];
home.packages = with pkgs; [
discord
betterdiscordctl
];
}

View file

@ -138,18 +138,6 @@ config.keys = {
action = wezterm.action.ActivatePaneDirection("Next"),
},
{ -- Rotate panes counter-clockwise
key = "PageUp",
mods = "ALT",
action = wezterm.action.RotatePanes("CounterClockwise"),
},
{ -- Rotate panes clockwise
key = "PageDown",
mods = "ALT",
action = wezterm.action.RotatePanes("Clockwise"),
},
{ -- Focus largest (master) pane
key = "Delete",
mods = "ALT",

View file

@ -1,42 +1,53 @@
# Global Home Manager configuration for user sajenim.
# This module provides base user settings, nixpkgs configuration, and core imports
# that are inherited across all hosts where this user is configured.
{outputs, lib, ...}: {
imports = [
./zsh.nix
./zsh.nix # Shell configuration and plugins
];
# Nixpkgs configuration - applies overlays and sets package acceptance policy
nixpkgs = {
# Apply custom overlays to extend/modify the package set
overlays = [
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
outputs.overlays.additions # Custom packages from pkgs/
outputs.overlays.modifications # Package patches and modifications
outputs.overlays.unstable-packages # Unstable channel packages
];
config = {
# Default to free software only - unfree packages must be explicitly allowed
allowUnfree = false;
# Centralized unfree package allowlist.
# Centralized unfree package allowlist for Home Manager user configuration.
# Note: nixpkgs.config.allowUnfreePredicate doesn't merge across modules - only the
# last definition wins. To maintain explicit control over unfree packages, we list
# all allowed packages here rather than scattering predicates across feature modules.
allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
# Editors
# Development tools
"claude-code"
"idea-ultimate"
"idea-ultimate-with-plugins"
# Desktop
"discord"
];
};
};
# Enable Home Manager to manage itself
programs.home-manager.enable = true;
# User identity and base configuration
home = {
username = "sajenim";
homeDirectory = "/home/sajenim";
sessionVariables = {
EDITOR = "nvim";
EDITOR = "nvim"; # Default text editor for CLI operations
};
};
# Automatically restart systemd user services on configuration changes
systemd.user.startServices = "sd-switch";
# Home Manager state version - don't change this after initial setup
home.stateVersion = "22.11";
}

View file

@ -1,20 +1,28 @@
# Global NixOS configuration shared across all hosts.
# This module provides base system settings, nixpkgs configuration, and core imports
# that every host in this configuration inherits.
{outputs, lib, ...}: {
imports = [
./age.nix
./env.nix
./nix.nix
./ssh.nix
./age.nix # Secret management with agenix
./env.nix # Environment variables and shell configuration
./nix.nix # Nix daemon settings, features, and garbage collection
./ssh.nix # SSH server configuration and authorized keys
];
# Nixpkgs configuration - applies overlays and sets package acceptance policy
nixpkgs = {
# Apply custom overlays to extend/modify the package set
overlays = [
# Overlays our own flake exports
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
outputs.overlays.additions # Custom packages from pkgs/
outputs.overlays.modifications # Package patches and modifications
outputs.overlays.unstable-packages # Unstable channel packages
];
config = {
# Default to free software only - unfree packages must be explicitly allowed
allowUnfree = false;
# Centralized unfree package allowlist for NixOS system configuration.
# Note: nixpkgs.config.allowUnfreePredicate doesn't merge across modules - only the
# last definition wins. To maintain explicit control over unfree packages, we list
@ -30,10 +38,13 @@
};
};
# Localization settings - Australian English locale and Perth timezone
i18n.defaultLocale = "en_AU.UTF-8";
time.timeZone = "Australia/Perth";
# Network configuration - default domain for host FQDNs
networking.domain = "kanto.dev";
# Enable non-free firmware for hardware compatibility (WiFi, GPU drivers, etc.)
hardware.enableRedistributableFirmware = true;
}