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
|
flake.lock
|
||||||
|
result
|
||||||
|
result-*
|
||||||
|
|
38
flake.nix
38
flake.nix
|
@ -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";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
212
lib/mkSystem.nix
212
lib/mkSystem.nix
|
@ -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
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,
|
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
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
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;
|
||||||
|
|
|
@ -1,6 +1,2 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
imports = [
|
|
||||||
./aerospace.nix
|
|
||||||
./sketchybar.nix
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
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";
|
||||||
'';
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
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
|
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"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue