diff --git a/flake.lock b/flake.lock index b7ac493..00ffcb9 100644 --- a/flake.lock +++ b/flake.lock @@ -148,6 +148,22 @@ "type": "github" } }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1786862985, + "narHash": "sha256-FBJRXmbGXiSUDvYEbfLYRkckayyZ6SK1UEqhCrIZ2Cs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5bdc4a41d4c072fe1e3787eaa0320a384741d44", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1767892417, @@ -184,7 +200,8 @@ "disko": "disko", "home-manager": "home-manager", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_3", + "nixpkgs-unstable": "nixpkgs-unstable" } } }, diff --git a/flake.nix b/flake.nix index 7877f57..01fe4ce 100644 --- a/flake.nix +++ b/flake.nix @@ -3,6 +3,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; home-manager = { diff --git a/home/zsh.nix b/home/zsh.nix index a0e1286..a493f1b 100644 --- a/home/zsh.nix +++ b/home/zsh.nix @@ -107,8 +107,12 @@ setup = "source ./setup_env.sh"; gpuenv = "__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia"; digital = "$HOME/Tools/Digital/Digital.sh"; - nixos_test = "sudo nixos_rebuild test --flake $HOME/NixOS-Configs#hades"; - nixos_switch = "sudo nixos_rebuild switch --flake $HOME/NixOS-Configs#hades"; + nixos_test = "rebuild test"; + nixos_switch = "rebuild switch"; + "rebuild-switch" = "rebuild switch"; + "rebuild-test" = "rebuild test"; + "rebuild-boot" = "rebuild boot"; + "rebuild-build" = "rebuild build"; }; initContent = lib.mkMerge [ @@ -166,6 +170,42 @@ fi # Custom helper functions + rebuild () { + local action="''${1:-switch}" + shift 2>/dev/null || true + + local config_dir="''${FLAKE_CONFIG:-$HOME/NixOS-Configs}" + local host="hades" + local target="$config_dir#$host" + + case "$action" in + switch|test|boot) + echo "==> Running: sudo nixos-rebuild $action --flake $target $*" + sudo nixos-rebuild "$action" --flake "$target" "$@" + ;; + build|dry-build|dry-run|dry-activate) + local act="$action" + [[ "$action" == "dry-run" ]] && act="dry-build" + echo "==> Running: nixos-rebuild $act --flake $target $*" + nixos-rebuild "$act" --flake "$target" "$@" + ;; + help|-h|--help) + echo "Usage: rebuild [switch|test|boot|build|dry-build] [extra nixos-rebuild options]" + echo "" + echo "Commands:" + echo " switch Build, activate, and make default boot entry (default)" + echo " test Build and activate without creating a boot entry" + echo " boot Build and make default boot entry without activating" + echo " build Build system to ./result without activating or sudo" + echo " dry-build Show what would be built/fetched" + ;; + *) + echo "==> Running: sudo nixos-rebuild $action --flake $target $*" + sudo nixos-rebuild "$action" --flake "$target" "$@" + ;; + esac + } + perlmutter_pass () { echo -n 'bw master password: ' read -s MASTER_PASS diff --git a/modules/apps/default.nix b/modules/apps/default.nix index 7a70c73..e51edc3 100644 --- a/modules/apps/default.nix +++ b/modules/apps/default.nix @@ -1,10 +1,11 @@ { ... }: { - imports = [ - ./terminal.nix - ./browser.nix - ./communication.nix - ./dev.nix - ]; + imports = [ + ./terminal.nix + ./browser.nix + ./communication.nix + ./dev.nix + ./virt.nix + ]; } diff --git a/modules/apps/dev.nix b/modules/apps/dev.nix index 877a523..18dc9e9 100644 --- a/modules/apps/dev.nix +++ b/modules/apps/dev.nix @@ -1,25 +1,48 @@ { pkgs, ... }: { - environment.systemPackages = with pkgs; [ - neovim - uv - rustup - ghidra - antigravity-cli - pi-coding-agent + environment.systemPackages = with pkgs; [ + # Core Editors & AI Agents + neovim + antigravity-cli + pi-coding-agent - # Clang & LLVM Toolchain - llvmPackages_latest.clang - llvmPackages_latest.lld - llvmPackages_latest.lldb - llvmPackages_latest.llvm - llvmPackages_latest.clang-tools - llvmPackages_latest.libcxx + # Languages & Toolchains + uv + rustup - # Nix Tools - nil - nixfmt - statix - ]; + # Clang & LLVM Toolchain + llvmPackages_latest.clang + llvmPackages_latest.lld + llvmPackages_latest.lldb + llvmPackages_latest.llvm + llvmPackages_latest.clang-tools + llvmPackages_latest.libcxx + + # Debuggers, Tracing & Profiling + gdb + rr + strace + ltrace + lsof + valgrind + heaptrack + linuxPackages.perf + flamegraph + + # Decompilers, Disassemblers & Binary Analysis + ghidra + cutter + binwalk + binutils + elfutils + pahole + hexyl + imhex + + # Nix Tooling + nil + nixfmt + statix + ]; } diff --git a/modules/apps/local_ai.nix b/modules/apps/local_ai.nix index 229fec5..d466498 100644 --- a/modules/apps/local_ai.nix +++ b/modules/apps/local_ai.nix @@ -20,7 +20,7 @@ ollama = { enable = true; - package = pkgs.ollama-cuda; + package = pkgs.unstable.ollama-cuda; host = "0.0.0.0"; port = 11434; user = "ollama"; @@ -33,6 +33,6 @@ environment.systemPackages = with pkgs; [ comfy-ui-cuda - ollama-cuda + unstable.ollama-cuda ]; } diff --git a/modules/apps/virt.nix b/modules/apps/virt.nix new file mode 100644 index 0000000..377d79a --- /dev/null +++ b/modules/apps/virt.nix @@ -0,0 +1,64 @@ +{ pkgs, ... }: + +{ + virtualisation = { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + libvirtd = { + enable = true; + qemu = { + package = pkgs.qemu_kvm; + runAsRoot = true; + swtpm.enable = true; + }; + }; + incus = { + enable = true; + ui.enable = true; + }; + spiceUSBRedirection.enable = true; + }; + + networking.nftables.enable = true; + + programs.virt-manager.enable = true; + + users.users.anish.extraGroups = [ + "libvirtd" + "kvm" + "incus-admin" + ]; + + environment.systemPackages = with pkgs; [ + # Container management & inspection + dive + podman-tui + docker-compose + podman-compose + lazydocker + ctop + skopeo + buildah + + # Distro isolation & integration + distrobox + boxbuddy + + # Virtual machines & tools + qemu_kvm + virt-manager + virt-viewer + spice + spice-gtk + spice-protocol + virtio-win + win-spice + quickemu + quickgui + vagrant + ]; +} diff --git a/modules/core/nix.nix b/modules/core/nix.nix index 8b39515..b41d0d2 100644 --- a/modules/core/nix.nix +++ b/modules/core/nix.nix @@ -1,4 +1,4 @@ -{ ... }: +{ inputs, ... }: { nix = { @@ -20,4 +20,13 @@ }; nixpkgs.config.allowUnfree = true; + + nixpkgs.overlays = [ + (final: prev: { + unstable = import inputs.nixpkgs-unstable { + inherit (prev) system; + inherit (prev) config; + }; + }) + ]; }