add personal machine, a whole lotta config

This commit is contained in:
sloane 2025-02-15 10:03:22 -05:00
parent 55e8aa870b
commit 022902fc6d
Signed by: sloanelybutsurely
SSH key fingerprint: SHA256:8SBnwhl+RY3oEyQxy1a9wByPzxWM0x+/Ejc+sIlY5qQ
8 changed files with 294 additions and 165 deletions
flake.nix
home-manager
nix-darwin
default.nix
hosts
Sloanes-MacBook-Air
tid27880sperrau

View file

@ -13,14 +13,13 @@
outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager, nixvim }:
{
# Build darwin flake using:
# $ darwin-rebuild build --flake .#tid27880sperrau
darwinConfigurations."tid27880sperrau" = nix-darwin.lib.darwinSystem {
modules = [
{
system.configurationRevision = self.rev or self.dirtyRev or null;
}
./nix-darwin
./nix-darwin/hosts/tid27880sperrau
home-manager.darwinModules.home-manager
{
users.users.sperrault.home = "/Users/sperrault";
@ -31,7 +30,30 @@
extraSpecialArgs = {
inherit nixvim;
};
users.sperrault = import ./home-manager;
users.sperrault = import ./home-manager/users/sperrault.nix;
};
}
];
};
darwinConfigurations."Sloanes-MacBook-Air" = nix-darwin.lib.darwinSystem {
modules = [
{
system.configurationRevision = self.rev or self.dirtyRev or null;
}
./nix-darwin
./nix-darwin/hosts/Sloanes-MacBook-Air
home-manager.darwinModules.home-manager
{
users.users.sloane.home = "/Users/sloane";
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "before-home-manager";
extraSpecialArgs = {
inherit nixvim;
};
users.sloane = import ./home-manager/users/sloane.nix;
};
}
];

View file

@ -2,11 +2,10 @@
{
imports = [
nixvim.homeManagerModules.nixvim
./nixvim
];
home = {
username = "sperrault";
homeDirectory = "/Users/sperrault";
stateVersion = "24.11";
sessionVariables = {
@ -16,13 +15,30 @@
packages = with pkgs; [
watchman
difftastic
maple-mono-NF
];
};
home.file.".config/ghostty/config" = {
enable = true;
text = ''
font-family = "Maple Mono NF"
font-size = 16
theme = "catppuccin-mocha"
'';
};
programs.fish = {
enable = true;
interactiveShellInit = ''
fish_vi_key_bindings
# start or attach to default tmux session
if not set -q TMUX
set -g TMUX tmux new-session -d -s default
eval $TMUX
tmux attach-session -d -t default
end
'';
shellAbbrs = {
j = "jj";
@ -41,161 +57,25 @@
enableFishIntegration = true;
};
programs.nixvim = {
programs.tmux = {
enable = true;
globals = {
mapleader = " ";
};
globalOpts = {
number = true;
relativenumber = true;
shiftwidth = 2;
expandtab = true;
tabstop = 2;
};
colorschemes.catppuccin.enable = true;
keymaps = [
{
key = ";";
action = ":";
mode = ["n" "v"];
}
{
key = "<leader>y";
action = ''"+y'';
mode = ["n" "v"];
}
{
key = "<leader>Y";
action = ''"+Y'';
mode = ["n" "v"];
}
{
key = "<leader>p";
action = ''"+p'';
mode = ["n" "v"];
}
{
key = "<leader>P";
action = ''"+P'';
mode = ["n" "v"];
}
{
key = "<leader>w";
action = "<cmd>w<cr>";
mode = ["n"];
}
{
key = "<leader>q";
action = "<cmd>q<cr>";
mode = ["n"];
}
{
key = "<esc>";
action = "<cmd>nohlsearch<cr>";
mode = ["n"];
}
{
key = ''<leader>"'';
action = "<cmd>split<cr>";
mode = ["n"];
}
{
key = "<leader>%";
action = "<cmd>vsplit<cr>";
mode = ["n"];
}
{
key = "<leader><tab>";
action = "<cmd>NERDTreeToggle<cr>";
mode = ["n"];
}
{
key = "<leader>fl";
action = "<cmd>NERDTreeFind<cr>";
mode = ["n"];
}
{
key = "<leader><space>";
action = "<cmd>Telescope find_files theme=dropdown<cr>";
mode = ["n"];
}
{
key = "<leader>/";
action = "<cmd>Telescope live_grep<cr>";
mode = ["n"];
}
keyMode = "vi";
mouse = true;
prefix = "C-a";
sensibleOnTop = true;
plugins = with pkgs.tmuxPlugins; [
sensible
prefix-highlight
vim-tmux-navigator
catppuccin
];
extraConfig = ''
set -g @catppuccin_flavor 'frappe'
extraPlugins = with pkgs.vimPlugins; [
vim-abolish
nerdtree
vim-rhubarb
];
plugins.commentary.enable = true;
plugins.repeat.enable = true;
plugins.fugitive.enable = true;
plugins.nvim-autopairs.enable = true;
plugins.nvim-surround.enable = true;
plugins.web-devicons.enable = true;
plugins.treesitter = {
enable = true;
settings.indent.enable = true;
settings.highlight.enable = true;
grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
bash
json
lua
markdown
nix
toml
vim
yaml
elixir
javascript
typescript
css
html
];
};
plugins.lsp = {
enable = true;
servers = {
elixirls.enable = true;
fish_lsp.enable = true;
html.enable = true;
nixd.enable = true;
tailwindcss.enable = true;
terraform_lsp.enable = true;
};
};
plugins.telescope.enable = true;
plugins.cmp = {
enable = true;
autoEnableSources = true;
settings.sources = [
{ name = "nvim_lsp"; }
{ name = "luasnip"; }
{ name = "path"; }
{ name = "buffer"; }
];
};
};
programs.zellij = {
enable = true;
enableFishIntegration = false;
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
'';
};
programs.ssh = {

View file

@ -0,0 +1,157 @@
{ pkgs, ... }:
{
programs.nixvim = {
enable = true;
globals = {
mapleader = " ";
};
globalOpts = {
number = true;
relativenumber = true;
shiftwidth = 2;
expandtab = true;
tabstop = 2;
};
colorschemes.catppuccin.enable = true;
keymaps = [
{
key = ";";
action = ":";
mode = ["n" "v"];
}
{
key = "<leader>y";
action = ''"+y'';
mode = ["n" "v"];
}
{
key = "<leader>Y";
action = ''"+Y'';
mode = ["n" "v"];
}
{
key = "<leader>p";
action = ''"+p'';
mode = ["n" "v"];
}
{
key = "<leader>P";
action = ''"+P'';
mode = ["n" "v"];
}
{
key = "<leader>w";
action = "<cmd>w<cr>";
mode = ["n"];
}
{
key = "<leader>q";
action = "<cmd>q<cr>";
mode = ["n"];
}
{
key = "<esc>";
action = "<cmd>nohlsearch<cr>";
mode = ["n"];
}
{
key = ''<leader>"'';
action = "<cmd>split<cr>";
mode = ["n"];
}
{
key = "<leader>%";
action = "<cmd>vsplit<cr>";
mode = ["n"];
}
{
key = "<leader><tab>";
action = "<cmd>NERDTreeToggle<cr>";
mode = ["n"];
}
{
key = "<leader>fl";
action = "<cmd>NERDTreeFind<cr>";
mode = ["n"];
}
{
key = "<leader><space>";
action = "<cmd>Telescope find_files theme=dropdown<cr>";
mode = ["n"];
}
{
key = "<leader>/";
action = "<cmd>Telescope live_grep<cr>";
mode = ["n"];
}
];
extraPlugins = with pkgs.vimPlugins; [
vim-abolish
nerdtree
vim-rhubarb
];
plugins.commentary.enable = true;
plugins.repeat.enable = true;
plugins.fugitive.enable = true;
plugins.nvim-autopairs.enable = true;
plugins.nvim-surround.enable = true;
plugins.web-devicons.enable = true;
plugins.treesitter = {
enable = true;
settings.indent.enable = true;
settings.highlight.enable = true;
grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
bash
json
lua
markdown
nix
toml
vim
yaml
elixir
javascript
typescript
css
html
];
};
plugins.lsp = {
enable = true;
servers = {
elixirls.enable = true;
fish_lsp.enable = true;
html.enable = true;
nixd.enable = true;
tailwindcss.enable = true;
terraform_lsp.enable = true;
};
};
plugins.telescope.enable = true;
plugins.cmp = {
enable = true;
autoEnableSources = true;
settings.sources = [
{ name = "nvim_lsp"; }
{ name = "luasnip"; }
{ name = "path"; }
{ name = "buffer"; }
];
};
plugins.tmux-navigator.enable = true;
};
}

View file

@ -0,0 +1,10 @@
{ ... }:
{
imports = [
../default.nix
];
home = {
username = "sloane";
homeDirectory = "/Users/sloane";
};
}

View file

@ -0,0 +1,8 @@
{ ... }:
{
imports = [ ../default.nix ];
home = {
username = "sperrault";
homeDirectory = "/Users/sperrault";
};
}

View file

@ -1,17 +1,10 @@
{ pkgs, ... }:
{
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages = [];
# Necessary for using flakes on this system.
nix.settings.experimental-features = "nix-command flakes";
# Enable alternative shell support in nix-darwin.
# programs.fish.enable = true;
# Set Git commit hash for darwin-version.
# Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog
system.stateVersion = 6;
@ -19,6 +12,53 @@
# The platform the configuration will be used on.
nixpkgs.hostPlatform = "aarch64-darwin";
security.pam.enableSudoTouchIdAuth = true;
system.defaults = {
dock = {
autohide = true;
autohide-delay = 0.05;
orientation = "bottom";
};
};
environment.shells = [ pkgs.fish ];
programs.fish.enable = true;
programs.fish = {
enable = true;
shellInit = ''
eval "$(/opt/homebrew/bin/brew shellenv)"
'';
};
homebrew = {
enable = true;
global = {
autoUpdate = false;
};
onActivation = {
autoUpdate = false;
cleanup = "uninstall";
};
brews = [
"mas"
];
casks = [
"1password"
"alfred"
"fantastical"
"firefox"
"ghostty"
"karabiner-elements"
"keepingyouawake"
"tailscale"
];
masApps = {
Things = 904280696;
"Hand Mirror" = 1502839586;
};
};
}

View file

@ -0,0 +1,8 @@
{ ... }:
{
homebrew = {
casks = [
"discord"
];
};
}

View file

@ -0,0 +1,4 @@
{ ... }:
{
}