Compare commits
5 commits
2e0a288a1a
...
bc4321a3cc
Author | SHA1 | Date | |
---|---|---|---|
bc4321a3cc | |||
dda958a8fd | |||
341d8ecf45 | |||
94221dbb56 | |||
ee7141e74e |
7 changed files with 68 additions and 74 deletions
|
@ -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
52
flake.lock
generated
|
@ -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"
|
||||
},
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
}: {
|
||||
imports = [
|
||||
./cava
|
||||
./discord
|
||||
./dunst
|
||||
./mpv
|
||||
./obs
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
discord = prev.discord.override {withOpenASAR = true;};
|
||||
})
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
discord
|
||||
betterdiscordctl
|
||||
];
|
||||
}
|
|
@ -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",
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue