fix natalie config so it builds successfully

This commit is contained in:
chloe caruso 2025-05-06 17:20:37 -07:00
parent c0cfb69f27
commit 8bd9e070d0
21 changed files with 210 additions and 152 deletions

View file

@ -2,7 +2,6 @@
description = "New Modular flake!"; description = "New Modular flake!";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs.url = "nixpkgs/nixos-unstable";
# nixpkgs.url = "github:NixOS/nixpkgs/master";
nixpkgs-stable.url = "nixpkgs/nixos-23.11"; nixpkgs-stable.url = "nixpkgs/nixos-23.11";
home-manager.url = "github:nix-community/home-manager/master"; home-manager.url = "github:nix-community/home-manager/master";
@ -77,35 +76,19 @@
) )
]; ];
# ----- USER SETTINGS ----- #
users.nmarks = rec {
#enable if you want to use a tiling wm on macos
darwinTiling = true;
username = "nmarks"; # username
name = "Natalie"; # name/identifier
email = "nmarks413@gmail.com"; # email (used for certain configurations)
dotfilesDir = "~/.dotfiles"; # 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 = "bisexual";
};
mkSystem = import ./lib/mkSystem.nix { mkSystem = import ./lib/mkSystem.nix {
inherit overlays nixpkgs inputs; inherit overlays nixpkgs inputs;
}; };
in { in rec {
# "nix run .#darwin-rebuild"
packages.aarch64-darwin.darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild; packages.aarch64-darwin.darwin-rebuild = darwin.packages.aarch64-darwin.darwin-rebuild;
# "nix fmt ."
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra; formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.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" {
user = "nmarks"; user = "natalie";
host = "desktop"; host = "desktop";
system = "x86_64-linux"; system = "x86_64-linux";
extraModules = [ extraModules = [
@ -114,7 +97,7 @@
}; };
# natalie's laptop # natalie's laptop
darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" { darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" {
user = "nmarks"; user = "natalie";
host = "laptop"; host = "laptop";
system = "aarch64-darwin"; system = "aarch64-darwin";
}; };
@ -131,5 +114,13 @@
host = "paperback"; host = "paperback";
system = "aarch64-darwin"; system = "aarch64-darwin";
}; };
# generate checks for "nix flake check --all-systems --no-build"
checks.aarch64-darwin = builtins.listToAttrs (builtins.map (name: let
d = darwinConfigurations.${name}.system;
in {
name = "darwinConfiguration-" + d.name;
value = d;
}) (builtins.attrNames darwinConfigurations));
}; };
} }

View file

@ -44,24 +44,25 @@
currentSystem = system; currentSystem = system;
# Details about the host machine # Details about the host machine
host = { host = {
inherit darwin; inherit darwin name;
}; };
user = ({ user = ({
# This acts as formal documentation for what is allowed in user.nix # This acts as formal documentation for what is allowed in user.nix
username, # unix username username, # unix username
name, # your display name name, # your display name
email, # for identity in programs such as git email, # for identity in programs such as git
dotfilesDir, # location to `../.` dotfilesDir, # location to `../.`
timeZone ? "America/Los_Angeles", timeZone ? "America/Los_Angeles",
# Stylix/Theming
# Stylix/Theming theme ? null, # theme name for stylix
theme ? null, # theme name for stylix sexuality ? null, # pride flag for hyfetch
sexuality ? null, # pride flag for hyfetch font ? null, # font to use
term, # preferred $TERM
term, # preferred $TERM editor, # preferred $EDITOR
editor, # preferred $EDITOR browser ? null, # preferred $BROWSER
browser ? null, # preferred $BROWSER } @ user:
}@user: user) userConfig; user)
userConfig;
}; };
systemSettings = rec { systemSettings = rec {
inherit darwin; inherit darwin;

View file

@ -69,7 +69,8 @@ in {
} }
]; ];
shellAliases = shellAliases =
{ } // lib.optionalAttrs (!host.darwin) { {}
// lib.optionalAttrs (!host.darwin) {
reboot-windows = "sudo efibootmgr --bootnext 0000; sudo reboot -h now"; reboot-windows = "sudo efibootmgr --bootnext 0000; sudo reboot -h now";
}; };
shellInit = '' shellInit = ''

View file

@ -8,6 +8,13 @@
./mac-app-store.nix ./mac-app-store.nix
./system.nix ./system.nix
./icons.nix ./icons.nix
./tiling
# sort-lines: end # sort-lines: end
]; ];
# make 'shared.linux' not an error to define.
options.shared.linux = lib.mkOption {
type = lib.types.anything;
default = {};
description = "no-op on darwin";
};
} }

View file

@ -3,7 +3,9 @@
pkgs, pkgs,
lib, lib,
... ...
}: { }: let
tiling = config.shared.darwin.tiling.enable;
in {
# 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;
@ -51,8 +53,8 @@
NSDocumentSaveNewDocumentsToCloud = false; NSDocumentSaveNewDocumentsToCloud = false;
AppleICUForce24HourTime = true; AppleICUForce24HourTime = true;
#Autohide menu bar # Autohide menu bar for tiling window manager
#_HIHideMenuBar = config.shared.darwin.tiling; _HIHideMenuBar = tiling;
}; };
# minimal dock # minimal dock
dock = { dock = {

View file

@ -1,6 +1,6 @@
{pkgs, ...}: { {config,pkgs, ...}: {
services.aerospace = { services.aerospace = {
enable = true; enable = config.shared.darwin.tiling.enable;
settings = { settings = {
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization # Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
enable-normalization-flatten-containers = true; enable-normalization-flatten-containers = true;

View file

@ -1,2 +1,16 @@
{pkgs, ...}: { { lib, ... }: let
inherit (lib) types;
in {
imports = [
./sketchybar.nix
./aerospace.nix
];
options = {
shared.darwin.tiling.enable = lib.mkOption {
type = types.bool;
default = false;
example = true;
description = "Enable tiling window management.";
};
};
} }

View file

@ -1,6 +1,6 @@
{pkgs, ...}: { {config,pkgs, ...}: {
services.sketchybar = { services.sketchybar = {
enable = true; enable = config.shared.darwin.tiling.enable;
config = '' config = ''
# This is a demo config to showcase some of the most important commands. # This is a demo config to showcase some of the most important commands.
# It is meant to be changed and configured, as it is intentionally kept sparse. # It is meant to be changed and configured, as it is intentionally kept sparse.

View file

@ -1,8 +1,14 @@
{pkgs, ...}: { { lib, pkgs, ... }: {
imports = [ imports = [
./boot.nix ./boot.nix
./ld.nix ./ld.nix
./nvidia.nix ./nvidia.nix
./services.nix ./services.nix
]; ];
# make 'shared.darwin' not an error to define.
options.shared.darwin = lib.mkOption {
type = lib.types.anything;
default = {};
description = "no-op on linux";
};
} }

View file

@ -1,14 +1,21 @@
# applies user settings for the system # applies user settings for the system
{ pkgs, user, lib, ... }: { {
pkgs,
user,
lib,
...
}: {
# Set your time zone. # Set your time zone.
time.timeZone = user.timeZone; time.timeZone = user.timeZone;
home-manager.users.${user.username}.home.sessionVariables = { home-manager.users.${user.username}.home.sessionVariables =
EDITOR = user.editor; {
TERMINAL = user.term; EDITOR = user.editor;
} // lib.optionalAttrs (user ? "browser") { TERMINAL = user.term;
BROWSER = user.browser; }
}; // lib.optionalAttrs (user ? "browser") {
BROWSER = user.browser;
};
stylix = { stylix = {
enable = false; enable = false;

View file

@ -1,10 +1,35 @@
# nix config # nix config
meow. this setup allows natalie and chloe to share common configuration between their machines, but also share useful modules between each other.
```
lib/ # reusable functions
modules/ # reusable modules
+-- macos/ # nix-darwin configurations
+-- nixos/ # linux configurations
+-- nixvim/ # neovim configurations
+-- shared/ # shared between nixos-rebuild & nixos-rebuild
+-- home-manager.nix # home program presets
users/
+-- chloe/
| +-- user.nix # info about her
| +-- configuration.nix # for all hosts
| +-- home.nix # for all hosts
| +-- sandwich/
| | +-- configuration.nix # per host
| | +-- home.nix
| +-- paperback/
| ...
+-- natalie/
+-- user.nix # info about her
...
```
A new machine can be added by adding a new definition in `flake.nix`. Note that the user and host `configuration.nix` and `home.nix` files are
## macOS installation instructions ## macOS installation instructions
Install Nix using the upstream nix (Pick "no" then "yes): Install Nix using the upstream Nix (Pick "no" then "yes):
``` ```
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | \ curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | \

View file

@ -1,18 +1,18 @@
# Configuration applied to all of chloe's machines # Configuration applied to all of chloe's machines
{ { pkgs, ... }: {
pkgs, # packages for all machines
userSettings,
...
}: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
neovim neovim
]; ];
# configuration for shared modules.
# all custom options in 'shared' for clarity.
shared.darwin = { shared.darwin = {
macAppStoreApps = [ macAppStoreApps = [
"adguard" "adguard"
"magnet" "magnet"
]; ];
}; };
# system preferences
system.defaults = { system.defaults = {
NSGlobalDomain = { NSGlobalDomain = {
KeyRepeat = 1; KeyRepeat = 1;

View file

@ -14,5 +14,5 @@
# Default terminal command. NOTE: ghostty is not installed for you # Default terminal command. NOTE: ghostty is not installed for you
term = "ghostty"; # preferred $TERMINAL term = "ghostty"; # preferred $TERMINAL
editor = "nvim"; # preferred $EDITOR editor = "nvim"; # preferred $EDITOR
} }

View file

@ -1 +1,17 @@
services.tailscale.enable = true; # Applied to all systems
{pkgs, ...}: {
services.tailscale.enable = true;
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.iosevka
iosevka
nerd-fonts.symbols-only
nerd-fonts.iosevka
];
# configuration for shared modules.
# all custom options in 'shared' for clarity.
shared.darwin = {
tiling.enable = true; # use tiling window manager
};
}

View file

@ -1,7 +1,7 @@
{ {
pkgs, pkgs,
userSettings, user,
systemSettings, host,
... ...
}: { }: {
imports = [ imports = [
@ -16,7 +16,7 @@
enable = true; enable = true;
# Certain features, including CLI integration and system authentication support, # Certain features, including CLI integration and system authentication support,
# require enabling PolKit integration on some desktop environments (e.g. Plasma). # require enabling PolKit integration on some desktop environments (e.g. Plasma).
polkitPolicyOwners = [userSettings.username]; polkitPolicyOwners = [user.username];
}; };
noisetorch.enable = true; noisetorch.enable = true;
@ -75,7 +75,7 @@
libvirtd.enable = true; libvirtd.enable = true;
}; };
nix.settings.trusted-users = ["root" userSettings.username]; nix.settings.trusted-users = ["root" user.username];
systemd = { systemd = {
targets = { targets = {
sleep.enable = false; sleep.enable = false;
@ -129,10 +129,10 @@
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.
# users.defaultUserShell = pkgs.fish; # users.defaultUserShell = pkgs.fish;
users.users.${userSettings.username} = { users.users.${user.username} = {
shell = pkgs.fish; shell = pkgs.fish;
isNormalUser = true; isNormalUser = true;
description = "Natalie Marks"; description = user.name;
extraGroups = ["networkmanager" "wheel" "docker"]; extraGroups = ["networkmanager" "wheel" "docker"];
# openssh.authorizedKeys.keyFiles = ["~/.ssh/id_ed25519.pub"]; # openssh.authorizedKeys.keyFiles = ["~/.ssh/id_ed25519.pub"];
packages = with pkgs; [ packages = with pkgs; [
@ -153,7 +153,7 @@
}; };
networking = { networking = {
hostName = systemSettings.host; # Define your hostname. hostName = host.name; # Define your hostname.
# wireless.enable = true; # Enables wireless support via wpa_supplicant. # wireless.enable = true; # Enables wireless support via wpa_supplicant.
networkmanager.enable = true; networkmanager.enable = true;
firewall = { firewall = {

View file

@ -6,9 +6,7 @@
userSettings, userSettings,
systemSettings, systemSettings,
... ...
}: let }: {
shared-programs = import ../../modules/shared/homeManagerPrograms.nix {inherit inputs config pkgs lib userSettings systemSettings;};
in {
imports = [ imports = [
inputs.nixvim.homeManagerModules.nixvim inputs.nixvim.homeManagerModules.nixvim
#set up nixvim #set up nixvim
@ -17,56 +15,48 @@ in {
home = { home = {
stateVersion = "23.05"; # Please read the comment before changing. stateVersion = "23.05"; # Please read the comment before changing.
packages = with pkgs; let packages = with pkgs; [
shared-packages = import ../../modules/shared/packages.nix {inherit pkgs systemSettings;}; #building macos apps hard :(
in ghostty
shared-packages stremio
++ [ julia
#building macos apps hard :( qbittorrent
ghostty
stremio
julia
qbittorrent
#gaming #gaming
bottles bottles
lutris lutris
mangohud mangohud
dxvk_2 dxvk_2
steam-run steam-run
vulkan-tools vulkan-tools
path-of-building path-of-building
wineWowPackages.stable wineWowPackages.stable
winetricks winetricks
(prismlauncher.override {gamemodeSupport = true;}) (prismlauncher.override {gamemodeSupport = true;})
#window manager stuff #window manager stuff
wofi wofi
xorg.xauth xorg.xauth
#linux tools #linux tools
legcord legcord
pavucontrol pavucontrol
ethtool ethtool
grub2 grub2
efibootmgr efibootmgr
distrobox distrobox
xdg-desktop-portal-gtk xdg-desktop-portal-gtk
xclip xclip
kdePackages.dolphin kdePackages.dolphin
#broken on macos #broken on macos
calibre calibre
mpv mpv
wireguard-tools wireguard-tools
signal-desktop signal-desktop
] inputs.zls.packages.x86_64-linux.zls
++ [ rust-bin.stable.latest.default
inputs.zls.packages.x86_64-linux.zls ];
rust-bin.stable.latest.default
];
# programs.mangohud.enable = true; # programs.mangohud.enable = true;
}; };
programs = shared-programs;
# xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop"; # xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop";
} }

View file

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

View file

@ -1,8 +1,4 @@
{ {pkgs, ...}: {
pkgs,
userSettings,
...
}: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
neovim neovim
pinentry_mac pinentry_mac

View file

@ -3,8 +3,8 @@
config, config,
pkgs, pkgs,
lib, lib,
userSettings, user,
systemSettings, host,
... ...
} @ args: { } @ args: {
imports = [ imports = [
@ -12,14 +12,9 @@
#set up nixvim #set up nixvim
# ../../modules/nixvim # ../../modules/nixvim
]; ];
programs = import ./home-programs.nix args;
home = { home = {
inherit (userSettings) username;
# shell = pkgs.fish;
stateVersion = "23.05"; # Please read the comment before changing. stateVersion = "23.05"; # Please read the comment before changing.
# shell = pkgs.fish;
packages = pkgs.callPackage ../../modules/shared/packages.nix {inherit systemSettings;};
sessionPath = [ sessionPath = [
"$HOME/.emacs.d/bin" "$HOME/.emacs.d/bin"

View file

@ -1,8 +1,5 @@
{ # Packages installed with home-manager
pkgs, {pkgs, ...}:
systemSettings,
...
}:
with pkgs; [ with pkgs; [
#general development #general development
just just

13
users/natalie/user.nix Normal file
View file

@ -0,0 +1,13 @@
rec {
username = "nmarks"; # username
name = "Natalie"; # name/identifier
email = "nmarks413@gmail.com"; # email (used for certain configurations)
dotfilesDir = "~/.dotfiles"; # 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;
timeZone = "America/Los_Angeles";
sexuality = "bisexual";
}