aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nix/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix/flake.nix')
-rw-r--r--nix/flake.nix44
1 files changed, 44 insertions, 0 deletions
diff --git a/nix/flake.nix b/nix/flake.nix
new file mode 100644
index 0000000..8896f2f
--- /dev/null
+++ b/nix/flake.nix
@@ -0,0 +1,44 @@
+{
+ description = "Home-Manager profiles for the Arch host and the Ubuntu remote-dev VM.";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+ home-manager = {
+ url = "github:nix-community/home-manager/master";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ outputs = { self, nixpkgs, home-manager, ... }:
+ let
+ system = "x86_64-linux";
+ pkgs = import nixpkgs {
+ inherit system;
+ # Whitelist specific unfree packages (claude-code,
+ # github-copilot-cli) instead of globally setting allowUnfree,
+ # so a typo elsewhere can't silently pull in additional unfree
+ # deps.
+ config.allowUnfreePredicate = pkg:
+ builtins.elem (nixpkgs.lib.getName pkg) [
+ "claude-code"
+ "github-copilot-cli"
+ ];
+ };
+
+ mkProfile = module: home-manager.lib.homeManagerConfiguration {
+ inherit pkgs;
+ modules = [ module ];
+ # Path to the cloned dotfiles checkout — passed in so the
+ # modules can symlink shared configs from the same repo.
+ extraSpecialArgs = {
+ dotfilesRoot = ../.;
+ };
+ };
+ in
+ {
+ homeConfigurations = {
+ vm = mkProfile ./vm.nix;
+ host = mkProfile ./host.nix;
+ };
+ };
+}