write out chloe config, modularize stuff more

This commit is contained in:
chloe caruso 2025-05-05 23:56:54 -07:00
parent 24d8eeb413
commit c0cfb69f27
26 changed files with 488 additions and 370 deletions

2
.gitignore vendored
View file

@ -1 +1,3 @@
flake.lock flake.lock
result
result-*

View file

@ -95,32 +95,18 @@
timeZone = "America/Los_Angeles"; timeZone = "America/Los_Angeles";
sexuality = "bisexual"; sexuality = "bisexual";
}; };
users.paper_clover = rec {
#enable if you want to use a tiling wm on macos
darwinTiling = true;
username = "clo"; # username
name = "chloe caruso"; # name/identifier
email = "account@paperclover.net"; # email (used for certain configurations)
dotfilesDir = "~/config"; # absolute path of the local repo
theme = "catppuccin-mocha"; #name of theme that stylix will use
browser = "firefox"; # Default browser; must select one from ./user/app/browser/
term = "ghostty"; # Default terminal command;
font = "iosevka"; # Selected font
editor = "neovim"; # Default editor;
spawnEditor = "exec" + term + " -e " + editor;
timeZone = "America/Los_Angeles";
sexuality = "lesbian";
};
mkSystem = import ./lib/mkSystem.nix { mkSystem = import ./lib/mkSystem.nix {
inherit overlays nixpkgs inputs; inherit overlays nixpkgs inputs;
}; };
in { in {
packages.aarch64-darwin.darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild;
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.alejandra;
# natalie's desktop computer # natalie's desktop computer
nixosConfigurations.nixos = mkSystem "nixos" { nixosConfigurations.nixos = mkSystem "nixos" {
userSettings = users.nmarks; user = "nmarks";
configDir = ./hosts/natalie/desktop; host = "desktop";
system = "x86_64-linux"; system = "x86_64-linux";
extraModules = [ extraModules = [
nixos-cosmic.nixosModules.default nixos-cosmic.nixosModules.default
@ -128,21 +114,21 @@
}; };
# natalie's laptop # natalie's laptop
darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" { darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" {
userSettings = users.nmarks; user = "nmarks";
configDir = ./hosts/natalie/laptop; host = "laptop";
system = "aarch64-darwin"; system = "aarch64-darwin";
}; };
# chloe's mac studio "sandwich" # chloe's mac studio "sandwich"
darwinConfigurations.sandwich = mkSystem "sandwich" { darwinConfigurations.sandwich = mkSystem "sandwich" {
userSettings = users.paper_clover; user = "chloe";
configDir = ./hosts/chloe; host = "sandwich";
system = "aarch64-darwin"; system = "aarch64-darwin";
}; };
# chloe's macbook air "paperback" # chloe's macbook air "paperback"
darwinConfigurations.paperback = mkSystem "paperback" { darwinConfigurations.paperback = mkSystem "paperback" {
userSettings = users.paper_clover; user = "chloe";
configDir = ./hosts/chloe; host = "paperback";
system = "aarch64-darwin"; system = "aarch64-darwin";
}; };
}; };

View file

@ -5,111 +5,147 @@
overlays, overlays,
inputs, inputs,
}: name: { }: name: {
userSettings, user, # ./users/{name}
system, host ? null, # ./users/{name}/{host} (optional)
configDir, # base host config system, # arch-os
extraModules ? [], extraModules ? [],
}: let }: let
inherit (builtins) pathExists;
darwin = nixpkgs.lib.strings.hasSuffix "-darwin" system; darwin = nixpkgs.lib.strings.hasSuffix "-darwin" system;
getInputModule = a: b:
nixindex = inputs.${
if darwin a
then inputs.nix-index-database.darwinModules.nix-index }.${
else inputs.nix-index-database.nixosModules.nix-index;
stylix =
if darwin
then inputs.stylix.darwinModules.stylix
else inputs.stylix.nixosModules.stylix;
systemModuleDir =
if darwin
then "macos"
else "nixos";
# NixOS vs nix-darwin functions
systemFunc =
if darwin if darwin
then inputs.darwin.lib.darwinSystem then "darwinModules"
else nixpkgs.lib.nixosSystem; else "nixosModules"
}.${
b
};
# NixOS vs nix-darwin functions
systemFunc =
if darwin
then inputs.darwin.lib.darwinSystem
else nixpkgs.lib.nixosSystem;
# The config files for this system. userDir = ../users + "/${user}";
hostConfig = configDir + "/configuration.nix"; userConfig = import (userDir + "/user.nix");
homeConfig = configDir + "/home.nix"; hostDir = userDir + "/${host}";
hmModules = hostConfigPath = hostDir + "/configuration.nix";
if darwin userConfigPath = userDir + "/configuration.nix";
then inputs.home-manager.darwinModules hostHomePath = hostDir + "/home.nix";
else inputs.home-manager.nixosModules; userHomePath = userDir + "/home.nix";
# Arguments passed to all module files
args = {
inherit inputs;
currentSystem = system;
# Details about the host machine
host = {
inherit darwin;
};
user = ({
# This acts as formal documentation for what is allowed in user.nix
username, # unix username
name, # your display name
email, # for identity in programs such as git
dotfilesDir, # location to `../.`
timeZone ? "America/Los_Angeles",
# Stylix/Theming
theme ? null, # theme name for stylix
sexuality ? null, # pride flag for hyfetch
term, # preferred $TERM
editor, # preferred $EDITOR
browser ? null, # preferred $BROWSER
}@user: user) userConfig;
};
systemSettings = rec { systemSettings = rec {
inherit darwin; inherit darwin;
homeDir = "/${
homeDir =
if darwin if darwin
then "/Users/" + userSettings.username + "/" then "Users"
else "/home/" + userSettings.username + "/"; else "home"
}/${userConfig.username}";
}; };
in in
systemFunc { systemFunc {
inherit system; inherit system;
# TODO: gross and ugly hack do NOT like modules =
specialArgs = { builtins.filter (f: f != null)
inherit (userSettings) darwinTiling; [
}; # Apply our overlays. Overlays are keyed by system type so we have
# to go through and apply our system type. We do this first so
# the overlays are available globally.
{nixpkgs.overlays = overlays;}
modules = # Modules shared between nix-darwin and NixOS
[ ../modules/shared
# Apply our overlays. Overlays are keyed by system type so we have # Modules for the specific OS
# to go through and apply our system type. We do this first so (
# the overlays are available globally. if darwin
{nixpkgs.overlays = overlays;} then ../modules/macos
else ../modules/nixos
)
# Shared modules # The user-wide configuration.nix
../modules/shared (
if pathExists userConfigPath
then userConfigPath
else null
)
# The host-wide configuration.nix
(
if host != null && pathExists hostConfigPath
then hostConfigPath
else null
)
# System specific modules # Set up nix-index and enable comma for easy one-shot command use
../modules/${systemModuleDir} # https://github.com/nix-community/comma
(getInputModule "nix-index-database" "nix-index")
{programs.nix-index-database.comma.enable = true;}
# Link to configuration.nix # Themes for all programs
hostConfig (getInputModule "stylix" "stylix")
# Set up nix-index and enable comma for easy one-shot command use # Home manager
# https://github.com/nix-community/comma (getInputModule "home-manager" "home-manager")
nixindex {
{programs.nix-index-database.comma.enable = true;} home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "hm-backup";
# Arguments passed to all module files
extraSpecialArgs =
args
// {
mainHomeImports = builtins.filter (f: f != null) [
(
if pathExists userHomePath
then userHomePath
else null
)
(
if host != null && pathExists hostHomePath
then hostHomePath
else null
)
];
};
# can't find how to make this an array without the param
users.${userConfig.username} = ../modules/home-manager.nix;
};
users.users.${userConfig.username}.home = systemSettings.homeDir;
}
# Themes for all programs # Arguments passed to all module files
stylix {config._module.args = args;}
]
hmModules.home-manager # Add extra modules specified from config
{ ++ extraModules;
home-manager = { }
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "hm-backup";
extraSpecialArgs = {inherit inputs userSettings systemSettings;};
users.${userSettings.username} = homeConfig;
};
users.users.${userSettings.username}.home = systemSettings.homeDir;
}
# We expose some extra arguments so that our modules can parameterize
# better based on these values.
{
config._module.args = {
currentSystem = system;
# currentSystemName = name;
# currentSystemUser = userSettings.username;
inherit inputs userSettings systemSettings;
};
}
]
# Add extra modules specified from config
++ extraModules;
}

81
modules/home-manager.nix Normal file
View file

@ -0,0 +1,81 @@
# This contains default configurations for set of programs
# and configuration, but does not enable many things on it's own.
{
pkgs,
lib,
config,
user,
host,
mainHomeImports,
...
}: let
cfg = config.programs;
in {
imports = mainHomeImports;
programs = {
home-manager.enable = true;
nix-index.enable = true;
direnv = {
enableZshIntegration = true;
nix-direnv.enable = config.programs.direnv.enable;
};
git = {
enable = true;
userName = lib.mkDefault user.name;
userEmail = lib.mkDefault user.email;
ignores = [
(lib.mkIf host.darwin ".DS_Store") # When using Finder
(lib.mkIf host.darwin "._*") # When using non-APFS drives
# ViM and Neovim
".*.swp"
".nvimlog"
];
};
atuin = {
enableBashIntegration = true;
enableFishIntegration = true;
daemon.enable = cfg.atuin.enable;
};
bat = {
extraPackages = with pkgs.bat-extras; [batdiff batman batgrep batwatch batpipe prettybat];
};
hyfetch = {
settings = {
backend = "fastfetch";
preset = user.sexuality;
mode = "rgb";
light_dark = "dark";
lightness = {
};
color_align = {
mode = "horizontal";
};
};
};
fastfetch.enable = cfg.hyfetch.enable;
fish = {
plugins = [
{
name = "tide";
inherit (pkgs.fishPlugins.tide) src;
}
{
name = "!!";
inherit (pkgs.fishPlugins.bang-bang) src;
}
];
shellAliases =
{ } // lib.optionalAttrs (!host.darwin) {
reboot-windows = "sudo efibootmgr --bootnext 0000; sudo reboot -h now";
};
shellInit = ''
batman --export-env | source
'';
##test -r '/Users/${user.username}/.opam/opam-init/init.fish' && source '/Users/${user.username}/.opam/opam-init/init.fish' > /dev/null 2> /dev/null; or true
};
};
}

View file

@ -1,13 +1,13 @@
{ {
pkgs, pkgs,
lib, lib,
darwinTiling,
... ...
}: { }: {
imports = imports = [
[ # sort-lines: start
./homebrew.nix ./mac-app-store.nix
./system.nix ./system.nix
] ./icons.nix
++ lib.optionals darwinTiling [./tiling]; # sort-lines: end
];
} }

View file

@ -1,31 +0,0 @@
_: {
# Use homebrew to install casks and Mac App Store apps
homebrew = {
enable = true;
onActivation = {
autoUpdate = true;
cleanup = "none";
upgrade = true;
};
brews = [
"imagemagick"
"opam"
];
casks = [
"battle-net"
"stremio"
"alt-tab"
"legcord"
"zulip"
"zen-browser"
"supertuxkart"
];
masApps = {
"wireguard" = 1451685025;
};
};
}

View file

@ -0,0 +1,44 @@
{
config,
lib,
pkgs,
...
}: let
types = lib.types;
# Mapping of Mac App Store applications.
# Add new entries to this list via the App Store's share button
# https://apps.apple.com/us/app/logic-pro/id634148309?mt=12
# --------- ID HERE
allMasApps = {
# sort-lines:start
adguard = 1440147259;
final-cut-pro = 424389933;
logic-pro = 634148309;
magnet = 441258766;
motion = 434290957;
wireguard = 1451685025;
# sort-lines:end
};
# the resolved configuration from the user
masApps = config.shared.darwin.macAppStoreApps;
in {
options = {
# Installs Mac Applications via name using homebrew.
shared.darwin.macAppStoreApps = lib.mkOption {
type = types.listOf types.str;
default = [];
};
};
config = lib.mkIf (builtins.length masApps > 0) {
homebrew.enable = true;
homebrew.masApps = builtins.listToAttrs (
builtins.map (name: {
inherit name;
value = allMasApps.${name};
})
masApps
);
};
}

View file

@ -1,21 +1,23 @@
{ {
config,
pkgs, pkgs,
userSettings, lib,
... ...
}: { }: {
#Use touchid or watch to activate sudo # Use touchid or watch to activate sudo
security.pam.services.sudo_local = { security.pam.services.sudo_local = {
enable = true; enable = true;
reattach = true; reattach = true;
touchIdAuth = true; touchIdAuth = true;
}; };
# set some OSX preferences that I always end up hunting down and changing.
# Set some OSX preferences that I always end up hunting down and changing.
system = { system = {
# Used for backwards compatibility, please read the changelog before changing. # Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog # $ darwin-rebuild changelog
stateVersion = 6; stateVersion = 6;
defaults = { defaults = lib.mkDefault {
# Turn quarantine off # Turn quarantine off
LaunchServices = { LaunchServices = {
LSQuarantine = false; LSQuarantine = false;
@ -50,13 +52,13 @@
AppleICUForce24HourTime = true; AppleICUForce24HourTime = true;
#Autohide menu bar #Autohide menu bar
_HIHideMenuBar = userSettings.darwinTiling; #_HIHideMenuBar = config.shared.darwin.tiling;
}; };
# minimal dock # minimal dock
dock = { dock = {
autohide = true; autohide = true;
#instant hide and show autohide-time-modifier = 0.0; # make animation instant
autohide-time-modifier = 0.0; autohide-delay = 0.0; # remove delay when touching bottom of screen
show-process-indicators = true; show-process-indicators = true;
expose-group-apps = true; expose-group-apps = true;
@ -76,13 +78,12 @@
AppleShowAllExtensions = true; AppleShowAllExtensions = true;
ShowPathbar = true; ShowPathbar = true;
FXEnableExtensionChangeWarning = false; FXEnableExtensionChangeWarning = false;
# TODO: default to list view and not saving .DS_Store
}; };
CustomSystemPreferences = { CustomSystemPreferences = {
"com.apple.universalaccess" = { "com.apple.universalaccess" = {
closeViewTrackpadGestureZoomEnabled = 1; closeViewTrackpadGestureZoomEnabled = 1;
}; };
"com.apple.symbolichotkeys" = { "com.apple.symbolichotkeys" = {
AppleSymbolicHotKeys = { AppleSymbolicHotKeys = {
"64" = { "64" = {
@ -92,7 +93,6 @@
}; };
}; };
}; };
# Bind caps to escape for better normal mode stuff # Bind caps to escape for better normal mode stuff
keyboard = { keyboard = {
enableKeyMapping = true; enableKeyMapping = true;

View file

@ -1,6 +1,2 @@
{pkgs, ...}: { {pkgs, ...}: {
imports = [
./aerospace.nix
./sketchybar.nix
];
} }

View file

@ -1,6 +1,9 @@
# shared is used by nixos-rebuild and darwin-rebuild
{pkgs, ...}: { {pkgs, ...}: {
imports = [ imports = [
./extras.nix # sort-lines:start
./user-system-settings.nix
./nix.nix ./nix.nix
# sort-lines:end
]; ];
} }

View file

@ -1,51 +0,0 @@
{
pkgs,
userSettings,
...
}: {
services.tailscale.enable = true;
networking = {
};
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.iosevka
iosevka
nerd-fonts.symbols-only
nerd-fonts.iosevka
];
# Set your time zone.
time.timeZone = userSettings.timeZone;
home-manager.users.${userSettings.username}.home.sessionVariables = {
EDITOR = userSettings.editor;
VISUAL = userSettings.editor;
TERMINAL = userSettings.term;
BROWSER = userSettings.browser;
};
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/${userSettings.theme}.yaml";
fonts = {
serif = {
package = pkgs.nerd-fonts.${userSettings.font};
name = "${userSettings.font} Nerd Font";
};
sansSerif = {
package = pkgs.nerd-fonts.${userSettings.font};
name = "${userSettings.font} Nerd Font";
};
monospace = {
package = pkgs.nerd-fonts.${userSettings.font};
name = "${userSettings.font} Nerd Font";
};
emoji = {
package = pkgs.twemoji-color-font;
name = "Twemoji Color";
};
};
};
}

View file

@ -1,67 +0,0 @@
{
pkgs,
lib,
userSettings,
systemSettings,
...
}: {
nix-index.enable = true;
atuin = {
enable = true;
enableBashIntegration = true;
enableFishIntegration = true;
daemon.enable = true;
};
direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
bat = {
enable = true;
extraPackages = with pkgs.bat-extras; [batdiff batman batgrep batwatch batpipe prettybat];
};
hyfetch = {
enable = true;
settings = {
backend = "fastfetch";
preset = userSettings.sexuality;
mode = "rgb";
light_dark = "dark";
lightness = {
};
color_align = {
mode = "horizontal";
};
};
};
fish = {
enable = true;
plugins = [
{
name = "tide";
inherit (pkgs.fishPlugins.tide) src;
}
{
name = "!!";
inherit (pkgs.fishPlugins.bang-bang) src;
}
];
shellAliases =
{
}
// lib.optionalAttrs (!systemSettings.darwin) {
reboot-windows = "sudo efibootmgr --bootnext 0000; sudo reboot -h now";
};
shellInit = ''
batman --export-env | source
'';
##test -r '/Users/${userSettings.username}/.opam/opam-init/init.fish' && source '/Users/${userSettings.username}/.opam/opam-init/init.fish' > /dev/null 2> /dev/null; or true
};
home-manager.enable = true;
}

View file

@ -0,0 +1,36 @@
# applies user settings for the system
{ pkgs, user, lib, ... }: {
# Set your time zone.
time.timeZone = user.timeZone;
home-manager.users.${user.username}.home.sessionVariables = {
EDITOR = user.editor;
TERMINAL = user.term;
} // lib.optionalAttrs (user ? "browser") {
BROWSER = user.browser;
};
stylix = {
enable = false;
base16Scheme = "${pkgs.base16-schemes}/share/themes/${user.theme}.yaml";
fonts = {
serif = {
package = pkgs.nerd-fonts.${user.font};
name = "${user.font} Nerd Font";
};
sansSerif = {
package = pkgs.nerd-fonts.${user.font};
name = "${user.font} Nerd Font";
};
monospace = {
package = pkgs.nerd-fonts.${user.font};
name = "${user.font} Nerd Font";
};
emoji = {
package = pkgs.twemoji-color-font;
name = "Twemoji Color";
};
};
};
}

View file

@ -1,47 +0,0 @@
{
description = "My first flake!";
inputs = {
nixpkgs.url = "nixpkgs/nixos-23.11";
home-manager = {
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs";
};
# nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=<0.2.0>";
# hyprland.url = "github:hyprwm/Hyprland";
# hyprland-plugins = {
# url = "github:hyprwm/hyprland-plugins";
# inputs.hyprland.follows = "hyprland";
# };
# use the following for unstable:
# nixpkgs.url = "nixpkgs/nixos-unstable";
# or any branch you want:
# nixpkgs.url = "nixpkgs/{BRANCH-NAME}"
};
outputs = {
self,
home-manager,
nixpkgs,
...
}: let
system = "x86_64-linux";
lib = nixpkgs.lib;
pkgs = nixpkgs.legacyPackages.${system};
in {
nixosConfigurations = {
nmarks = lib.nixosSystem {
inherit system;
modules = [./configuration.nix];
};
};
homeConfigurations = {
nmarks = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [./home.nix];
};
};
};
}

40
readme.md Normal file
View file

@ -0,0 +1,40 @@
# nix config
meow.
## macOS installation instructions
Install Nix using the upstream nix (Pick "no" then "yes):
```
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | \
sh -s -- install
```
Open a new shell and clone the repository:
```
# Install git + other command tools. (Used by many programs)
xcode-select --install
# Clone via HTTPs
git clone https://git.paperclover.net/clo/config.git
# With SSH Authentication
git clone git@git.paperclover.net:clo/config
```
Setup `nix-darwin`
```
# Tell nix-darwin where the flake is at.
sudo mkdir /etc/nix-darwin
sudo ln -s $(realpath flake.nix) /etc/nix-darwin/
# Enable configuration.
nix run .#darwin-rebuild switch
```
Additionally, it may be helpful to disable the unsigned app popup.
```
sudo spctl --master-disable
# then, go to System Settings -> Privacy to allow unsigned apps.
```

12
switch Executable file
View file

@ -0,0 +1,12 @@
#!/bin/sh
nh_subcommand="os"
fallback_command="nixos-rebuild"
if [ "$(uname -o)" ]; then
nh_subcommand="darwin"
fallback_command="nix run .#darwin-rebuild"
fi;
if command -v nh > /dev/null; then
nh $nh_subcommand switch .
else
$fallback_command switch
fi

View file

@ -1,3 +1,4 @@
# Configuration applied to all of chloe's machines
{ {
pkgs, pkgs,
userSettings, userSettings,
@ -5,24 +6,23 @@
}: { }: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
neovim neovim
pinentry_mac
signal-desktop-bin
]; ];
shared.darwin = {
# Create /etc/zshrc that loads the nix-darwin environment. macAppStoreApps = [
programs = { "adguard"
gnupg.agent.enable = true; "magnet"
zsh.enable = true; # default shell on catalina ];
}; };
system.defaults = {
# When opening an interactive shell that isnt fish move into fish NSGlobalDomain = {
programs.zsh = { KeyRepeat = 1;
interactiveShellInit = '' InitialKeyRepeat = 10;
if [[ $(${pkgs.procps}/bin/ps -p $PPID -o comm) != "fish" && -z ''${ZSH_EXUCTION_STRING} ]] };
then CustomUserPreferences = {
[[ -o login ]] && LOGIN_OPTION='--login' || LOGIN_OPTION="" NSGlobalDomain = {
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION # TODO: how to change system accent color
fi AppleHighlightColor = "1.000000 0.874510 0.701961 Orange";
''; };
};
}; };
} }

View file

@ -1,29 +1,24 @@
{ {
inputs, inputs,
config,
pkgs, pkgs,
lib, lib,
userSettings,
systemSettings,
... ...
}: { }: {
imports = [
inputs.nixvim.homeManagerModules.nixvim
#set up nixvim
# ../../modules/nixvim
];
programs = import ../../modules/shared/homeManagerPrograms.nix {inherit inputs config pkgs lib userSettings systemSettings;};
home = { home = {
inherit (userSettings) username;
# homeDirectory = systemSettings.homeConfig;
# shell = pkgs.fish;
stateVersion = "23.05"; # Please read the comment before changing. stateVersion = "23.05"; # Please read the comment before changing.
packages = [
packages = pkgs.callPackage ../../modules/shared/packages.nix {inherit systemSettings;}; pkgs.neovim
pkgs.nh
sessionPath = [ pkgs.ffmpeg
"$HOME/.emacs.d/bin"
]; ];
}; };
programs = {
# sort-lines:start
hyfetch.enable = true;
zsh.enable = true;
# sort-lines:end
# use a git-specific email
git.userEmail = "git@paperclover.net";
};
} }

View file

@ -0,0 +1,14 @@
# Configuration applied to all of chloe's machines
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
ffmpeg
ripgrep
];
shared.darwin = {
macAppStoreApps = [
"final-cut-pro"
"logic-pro"
"motion"
];
};
}

18
users/chloe/user.nix Normal file
View file

@ -0,0 +1,18 @@
# This definition is used by modules to customize as needed.
{
username = "clo"; # username
name = "chloe caruso";
email = "account@paperclover.net";
timeZone = "America/Los_Angeles";
dotfilesDir = "~/config"; # absolute path of the local repo
# Stylix/Theming
theme = "catppuccin-mocha";
#font
sexuality = "lesbian"; # hyfetch
# Default terminal command. NOTE: ghostty is not installed for you
term = "ghostty"; # preferred $TERMINAL
editor = "nvim"; # preferred $EDITOR
}

View file

@ -0,0 +1 @@
services.tailscale.enable = true;

19
users/natalie/home.nix Normal file
View file

@ -0,0 +1,19 @@
{
pkgs,
lib,
}: {
# sort-lines:start
atuin.enable = true;
bat.enable = true;
hyfetch.enable = true;
direnv.enable = true;
# sort-lines:end
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.iosevka
iosevka
nerd-fonts.symbols-only
nerd-fonts.iosevka
];
}

View file

@ -9,6 +9,12 @@
signal-desktop-bin signal-desktop-bin
]; ];
# Custom configuration modules in "modules" are shared between users,
# and can be configured in this "shared" namespace
shared.darwin = {
macAppStoreApps = ["wireguard"];
};
# Create /etc/zshrc that loads the nix-darwin environment. # Create /etc/zshrc that loads the nix-darwin environment.
programs = { programs = {
gnupg.agent.enable = true; gnupg.agent.enable = true;
@ -25,4 +31,30 @@
fi fi
''; '';
}; };
# Use homebrew to install casks
homebrew = {
enable = true;
onActivation = {
autoUpdate = true;
cleanup = "none";
upgrade = true;
};
brews = [
"imagemagick"
"opam"
];
casks = [
"battle-net"
"stremio"
"alt-tab"
"legcord"
"zulip"
"zen-browser"
"supertuxkart"
];
};
} }

View file

@ -6,17 +6,16 @@
userSettings, userSettings,
systemSettings, systemSettings,
... ...
}: { } @ args: {
imports = [ imports = [
inputs.nixvim.homeManagerModules.nixvim inputs.nixvim.homeManagerModules.nixvim
#set up nixvim #set up nixvim
# ../../modules/nixvim # ../../modules/nixvim
]; ];
programs = import ../../modules/shared/homeManagerPrograms.nix {inherit inputs config pkgs lib userSettings systemSettings;}; programs = import ./home-programs.nix args;
home = { home = {
inherit (userSettings) username; inherit (userSettings) username;
# homeDirectory = systemSettings.homeConfig;
# shell = pkgs.fish; # shell = pkgs.fish;
stateVersion = "23.05"; # Please read the comment before changing. stateVersion = "23.05"; # Please read the comment before changing.