Compare commits

...

2 commits

Author SHA1 Message Date
92e04a0924
Initial nix-darwin revision 2024-04-11 09:01:03 -05:00
9a0750c0bf
Use inputs directly
Slightly less hectic for the outputs part. :)
2024-04-11 00:16:58 -05:00
3 changed files with 85 additions and 10 deletions

37
darwin/darwin.nix Normal file
View file

@ -0,0 +1,37 @@
{ pkgs, system, ... }: {
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages = [
pkgs.vim
];
# Auto upgrade nix package and the daemon service.
services.nix-daemon.enable = true;
nix.package = pkgs.nix;
# Necessary for using flakes on this system.
nix.settings.experimental-features = "nix-command flakes";
# Create /etc/zshrc that loads the nix-darwin environment.
programs.zsh.enable = true;
# Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog
system.stateVersion = 4;
nixpkgs = {
# TODO(spotlightishere): Make this configurable beyond a singular device.
hostPlatform = "aarch64-darwin";
# Custom packages.
# TODO(spotlightishere): Why does this need to be specified in both home-manager and globally?
overlays = [ (import ../pkgs/default.nix) ];
};
# Our singular user!
users.users.spot = {
description = "Spotlight Deveaux";
home = "/Users/spot";
shell = pkgs.zsh;
};
}

21
flake.lock generated
View file

@ -65,6 +65,26 @@
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1711763326,
"narHash": "sha256-sXcesZWKXFlEQ8oyGHnfk4xc9f2Ip0X/+YZOq3sKviI=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "36524adc31566655f2f4d55ad6b875fb5c1a4083",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1712608508,
@ -87,6 +107,7 @@
"darwin-systems": "darwin-systems",
"home-manager": "home-manager",
"linux-systems": "linux-systems",
"nix-darwin": "nix-darwin",
"nixpkgs": "nixpkgs"
}
}

View file

@ -12,17 +12,21 @@
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-darwin = {
url = "github:LnL7/nix-darwin";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, home-manager, linux-systems, darwin-systems, all-systems, ... }:
outputs = inputs@{ nixpkgs, home-manager, nix-darwin, ... }:
let
# TODO(spotlightishere): Is there a better way to approach this that doesn't
# involve importing so many separate flakes?
#
# (We could manually merge Darwin and Linux themselves, but this is primarily for readability.)
allSystems = nixpkgs.lib.genAttrs (import all-systems);
darwinSystems = nixpkgs.lib.genAttrs (import darwin-systems);
linuxSystems = nixpkgs.lib.genAttrs (import linux-systems);
allSystems = nixpkgs.lib.genAttrs (import inputs.all-systems);
darwinSystems = nixpkgs.lib.genAttrs (import inputs.darwin-systems);
linuxSystems = nixpkgs.lib.genAttrs (import inputs.linux-systems);
homeManager = { system, specialArgs ? { } }:
home-manager.lib.homeManagerConfiguration {
@ -49,10 +53,6 @@
# For now, this is effectively true, sans a few specific configurations :)
spotlight = homeManager {
system = system;
specialArgs = {
desktop = false;
gpg = false;
};
};
# For a special case: with the Steam Deck, we have to assume the user
@ -88,12 +88,29 @@
# (Again, we assume a default name of `spotlight` under Linux.)
nixosModules.default = {
imports = [
home-manager.nixosModules.home-manager {
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users.spotlight = import ./home/home.nix;
extraSpecialArgs = { desktop = false; gpg = false; };
};
}
];
};
# We define a default Darwin configuration via nix-darwin.
darwinConfigurations."spotlights-macbook-air" = nix-darwin.lib.darwinSystem {
modules = [
# System-wide configuration
./darwin/darwin.nix
# Our provided home-manager configuration
home-manager.darwinModules.home-manager {
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users.spot = import ./home/home.nix;
extraSpecialArgs = { desktop = true; gpg = true; };
};
}
];