write out chloe config, modularize stuff more
This commit is contained in:
parent
24d8eeb413
commit
c0cfb69f27
26 changed files with 488 additions and 370 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1 +1,3 @@
|
|||
flake.lock
|
||||
result
|
||||
result-*
|
||||
|
|
38
flake.nix
38
flake.nix
|
@ -95,32 +95,18 @@
|
|||
timeZone = "America/Los_Angeles";
|
||||
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 {
|
||||
inherit overlays nixpkgs inputs;
|
||||
};
|
||||
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
|
||||
nixosConfigurations.nixos = mkSystem "nixos" {
|
||||
userSettings = users.nmarks;
|
||||
configDir = ./hosts/natalie/desktop;
|
||||
user = "nmarks";
|
||||
host = "desktop";
|
||||
system = "x86_64-linux";
|
||||
extraModules = [
|
||||
nixos-cosmic.nixosModules.default
|
||||
|
@ -128,21 +114,21 @@
|
|||
};
|
||||
# natalie's laptop
|
||||
darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" {
|
||||
userSettings = users.nmarks;
|
||||
configDir = ./hosts/natalie/laptop;
|
||||
user = "nmarks";
|
||||
host = "laptop";
|
||||
system = "aarch64-darwin";
|
||||
};
|
||||
|
||||
# chloe's mac studio "sandwich"
|
||||
darwinConfigurations.sandwich = mkSystem "sandwich" {
|
||||
userSettings = users.paper_clover;
|
||||
configDir = ./hosts/chloe;
|
||||
user = "chloe";
|
||||
host = "sandwich";
|
||||
system = "aarch64-darwin";
|
||||
};
|
||||
# chloe's macbook air "paperback"
|
||||
darwinConfigurations.paperback = mkSystem "paperback" {
|
||||
userSettings = users.paper_clover;
|
||||
configDir = ./hosts/chloe;
|
||||
user = "chloe";
|
||||
host = "paperback";
|
||||
system = "aarch64-darwin";
|
||||
};
|
||||
};
|
||||
|
|
212
lib/mkSystem.nix
212
lib/mkSystem.nix
|
@ -5,111 +5,147 @@
|
|||
overlays,
|
||||
inputs,
|
||||
}: name: {
|
||||
userSettings,
|
||||
system,
|
||||
configDir, # base host config
|
||||
user, # ./users/{name}
|
||||
host ? null, # ./users/{name}/{host} (optional)
|
||||
system, # arch-os
|
||||
extraModules ? [],
|
||||
}: let
|
||||
inherit (builtins) pathExists;
|
||||
darwin = nixpkgs.lib.strings.hasSuffix "-darwin" system;
|
||||
|
||||
nixindex =
|
||||
if darwin
|
||||
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 =
|
||||
getInputModule = a: b:
|
||||
inputs.${
|
||||
a
|
||||
}.${
|
||||
if darwin
|
||||
then inputs.darwin.lib.darwinSystem
|
||||
else nixpkgs.lib.nixosSystem;
|
||||
then "darwinModules"
|
||||
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.
|
||||
hostConfig = configDir + "/configuration.nix";
|
||||
homeConfig = configDir + "/home.nix";
|
||||
userDir = ../users + "/${user}";
|
||||
userConfig = import (userDir + "/user.nix");
|
||||
hostDir = userDir + "/${host}";
|
||||
|
||||
hmModules =
|
||||
if darwin
|
||||
then inputs.home-manager.darwinModules
|
||||
else inputs.home-manager.nixosModules;
|
||||
hostConfigPath = hostDir + "/configuration.nix";
|
||||
userConfigPath = userDir + "/configuration.nix";
|
||||
hostHomePath = hostDir + "/home.nix";
|
||||
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 {
|
||||
inherit darwin;
|
||||
|
||||
homeDir =
|
||||
homeDir = "/${
|
||||
if darwin
|
||||
then "/Users/" + userSettings.username + "/"
|
||||
else "/home/" + userSettings.username + "/";
|
||||
|
||||
then "Users"
|
||||
else "home"
|
||||
}/${userConfig.username}";
|
||||
};
|
||||
in
|
||||
systemFunc {
|
||||
inherit system;
|
||||
systemFunc {
|
||||
inherit system;
|
||||
|
||||
# TODO: gross and ugly hack do NOT like
|
||||
specialArgs = {
|
||||
inherit (userSettings) darwinTiling;
|
||||
};
|
||||
modules =
|
||||
builtins.filter (f: f != null)
|
||||
[
|
||||
# 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 =
|
||||
[
|
||||
# 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 shared between nix-darwin and NixOS
|
||||
../modules/shared
|
||||
# Modules for the specific OS
|
||||
(
|
||||
if darwin
|
||||
then ../modules/macos
|
||||
else ../modules/nixos
|
||||
)
|
||||
|
||||
# Shared modules
|
||||
../modules/shared
|
||||
# The user-wide configuration.nix
|
||||
(
|
||||
if pathExists userConfigPath
|
||||
then userConfigPath
|
||||
else null
|
||||
)
|
||||
# The host-wide configuration.nix
|
||||
(
|
||||
if host != null && pathExists hostConfigPath
|
||||
then hostConfigPath
|
||||
else null
|
||||
)
|
||||
|
||||
# System specific modules
|
||||
../modules/${systemModuleDir}
|
||||
# Set up nix-index and enable comma for easy one-shot command use
|
||||
# https://github.com/nix-community/comma
|
||||
(getInputModule "nix-index-database" "nix-index")
|
||||
{programs.nix-index-database.comma.enable = true;}
|
||||
|
||||
# Link to configuration.nix
|
||||
hostConfig
|
||||
# Themes for all programs
|
||||
(getInputModule "stylix" "stylix")
|
||||
|
||||
# Set up nix-index and enable comma for easy one-shot command use
|
||||
# https://github.com/nix-community/comma
|
||||
nixindex
|
||||
{programs.nix-index-database.comma.enable = true;}
|
||||
# Home manager
|
||||
(getInputModule "home-manager" "home-manager")
|
||||
{
|
||||
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
|
||||
stylix
|
||||
|
||||
hmModules.home-manager
|
||||
{
|
||||
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;
|
||||
}
|
||||
# Arguments passed to all module files
|
||||
{config._module.args = args;}
|
||||
]
|
||||
# Add extra modules specified from config
|
||||
++ extraModules;
|
||||
}
|
||||
|
|
81
modules/home-manager.nix
Normal file
81
modules/home-manager.nix
Normal 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
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
darwinTiling,
|
||||
...
|
||||
}: {
|
||||
imports =
|
||||
[
|
||||
./homebrew.nix
|
||||
./system.nix
|
||||
]
|
||||
++ lib.optionals darwinTiling [./tiling];
|
||||
imports = [
|
||||
# sort-lines: start
|
||||
./mac-app-store.nix
|
||||
./system.nix
|
||||
./icons.nix
|
||||
# sort-lines: end
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
44
modules/macos/mac-app-store.nix
Normal file
44
modules/macos/mac-app-store.nix
Normal 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
|
||||
);
|
||||
};
|
||||
}
|
|
@ -1,21 +1,23 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
userSettings,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
#Use touchid or watch to activate sudo
|
||||
# Use touchid or watch to activate sudo
|
||||
security.pam.services.sudo_local = {
|
||||
enable = true;
|
||||
reattach = 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 = {
|
||||
# Used for backwards compatibility, please read the changelog before changing.
|
||||
# $ darwin-rebuild changelog
|
||||
stateVersion = 6;
|
||||
|
||||
defaults = {
|
||||
defaults = lib.mkDefault {
|
||||
# Turn quarantine off
|
||||
LaunchServices = {
|
||||
LSQuarantine = false;
|
||||
|
@ -50,13 +52,13 @@
|
|||
AppleICUForce24HourTime = true;
|
||||
|
||||
#Autohide menu bar
|
||||
_HIHideMenuBar = userSettings.darwinTiling;
|
||||
#_HIHideMenuBar = config.shared.darwin.tiling;
|
||||
};
|
||||
# minimal dock
|
||||
dock = {
|
||||
autohide = true;
|
||||
#instant hide and show
|
||||
autohide-time-modifier = 0.0;
|
||||
autohide-time-modifier = 0.0; # make animation instant
|
||||
autohide-delay = 0.0; # remove delay when touching bottom of screen
|
||||
show-process-indicators = true;
|
||||
|
||||
expose-group-apps = true;
|
||||
|
@ -76,13 +78,12 @@
|
|||
AppleShowAllExtensions = true;
|
||||
ShowPathbar = true;
|
||||
FXEnableExtensionChangeWarning = false;
|
||||
# TODO: default to list view and not saving .DS_Store
|
||||
};
|
||||
|
||||
CustomSystemPreferences = {
|
||||
"com.apple.universalaccess" = {
|
||||
closeViewTrackpadGestureZoomEnabled = 1;
|
||||
};
|
||||
|
||||
"com.apple.symbolichotkeys" = {
|
||||
AppleSymbolicHotKeys = {
|
||||
"64" = {
|
||||
|
@ -92,7 +93,6 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Bind caps to escape for better normal mode stuff
|
||||
keyboard = {
|
||||
enableKeyMapping = true;
|
||||
|
|
|
@ -1,6 +1,2 @@
|
|||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./aerospace.nix
|
||||
./sketchybar.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
# shared is used by nixos-rebuild and darwin-rebuild
|
||||
{pkgs, ...}: {
|
||||
imports = [
|
||||
./extras.nix
|
||||
# sort-lines:start
|
||||
./user-system-settings.nix
|
||||
./nix.nix
|
||||
# sort-lines:end
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
}
|
36
modules/shared/user-system-settings.nix
Normal file
36
modules/shared/user-system-settings.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
47
oldflake.nix
47
oldflake.nix
|
@ -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
40
readme.md
Normal 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
12
switch
Executable 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
|
|
@ -1,3 +1,4 @@
|
|||
# Configuration applied to all of chloe's machines
|
||||
{
|
||||
pkgs,
|
||||
userSettings,
|
||||
|
@ -5,24 +6,23 @@
|
|||
}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim
|
||||
pinentry_mac
|
||||
signal-desktop-bin
|
||||
];
|
||||
|
||||
# Create /etc/zshrc that loads the nix-darwin environment.
|
||||
programs = {
|
||||
gnupg.agent.enable = true;
|
||||
zsh.enable = true; # default shell on catalina
|
||||
shared.darwin = {
|
||||
macAppStoreApps = [
|
||||
"adguard"
|
||||
"magnet"
|
||||
];
|
||||
};
|
||||
|
||||
# When opening an interactive shell that isnt fish move into fish
|
||||
programs.zsh = {
|
||||
interactiveShellInit = ''
|
||||
if [[ $(${pkgs.procps}/bin/ps -p $PPID -o comm) != "fish" && -z ''${ZSH_EXUCTION_STRING} ]]
|
||||
then
|
||||
[[ -o login ]] && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||
fi
|
||||
'';
|
||||
system.defaults = {
|
||||
NSGlobalDomain = {
|
||||
KeyRepeat = 1;
|
||||
InitialKeyRepeat = 10;
|
||||
};
|
||||
CustomUserPreferences = {
|
||||
NSGlobalDomain = {
|
||||
# TODO: how to change system accent color
|
||||
AppleHighlightColor = "1.000000 0.874510 0.701961 Orange";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,29 +1,24 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
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 = {
|
||||
inherit (userSettings) username;
|
||||
# homeDirectory = systemSettings.homeConfig;
|
||||
# shell = pkgs.fish;
|
||||
stateVersion = "23.05"; # Please read the comment before changing.
|
||||
|
||||
packages = pkgs.callPackage ../../modules/shared/packages.nix {inherit systemSettings;};
|
||||
|
||||
sessionPath = [
|
||||
"$HOME/.emacs.d/bin"
|
||||
packages = [
|
||||
pkgs.neovim
|
||||
pkgs.nh
|
||||
pkgs.ffmpeg
|
||||
];
|
||||
};
|
||||
programs = {
|
||||
# sort-lines:start
|
||||
hyfetch.enable = true;
|
||||
zsh.enable = true;
|
||||
# sort-lines:end
|
||||
|
||||
# use a git-specific email
|
||||
git.userEmail = "git@paperclover.net";
|
||||
};
|
||||
}
|
||||
|
|
14
users/chloe/sandwich/configuration.nix
Normal file
14
users/chloe/sandwich/configuration.nix
Normal 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
18
users/chloe/user.nix
Normal 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
|
||||
}
|
1
users/natalie/configuration.nix
Normal file
1
users/natalie/configuration.nix
Normal file
|
@ -0,0 +1 @@
|
|||
services.tailscale.enable = true;
|
19
users/natalie/home.nix
Normal file
19
users/natalie/home.nix
Normal 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
|
||||
];
|
||||
}
|
|
@ -9,6 +9,12 @@
|
|||
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.
|
||||
programs = {
|
||||
gnupg.agent.enable = true;
|
||||
|
@ -25,4 +31,30 @@
|
|||
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"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -6,17 +6,16 @@
|
|||
userSettings,
|
||||
systemSettings,
|
||||
...
|
||||
}: {
|
||||
} @ args: {
|
||||
imports = [
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
#set up nixvim
|
||||
# ../../modules/nixvim
|
||||
];
|
||||
programs = import ../../modules/shared/homeManagerPrograms.nix {inherit inputs config pkgs lib userSettings systemSettings;};
|
||||
programs = import ./home-programs.nix args;
|
||||
|
||||
home = {
|
||||
inherit (userSettings) username;
|
||||
# homeDirectory = systemSettings.homeConfig;
|
||||
# shell = pkgs.fish;
|
||||
stateVersion = "23.05"; # Please read the comment before changing.
|
||||
|
||||
|
|
Loading…
Reference in a new issue