mirror of
https://github.com/genebean/dots.git
synced 2026-03-27 09:27:44 -04:00
First pass at a Nix flake for my laptop
Heavily inspired by these: - https://github.com/zmre/mac-nix-simple-example - https://github.com/dustinlyons/nixos-config
This commit is contained in:
parent
1fb4bf12c8
commit
6430f175b2
6 changed files with 584 additions and 0 deletions
61
modules/darwin/default.nix
Normal file
61
modules/darwin/default.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{ pkgs, ... }: {
|
||||
nix.extraOptions = ''
|
||||
# Generated by https://github.com/DeterminateSystems/nix-installer, version 0.11.0.
|
||||
extra-nix-path = nixpkgs=flake:nixpkgs
|
||||
experimental-features = nix-command flakes auto-allocate-uids
|
||||
build-users-group = nixbld
|
||||
bash-prompt-prefix = (nix:$name)\040
|
||||
'';
|
||||
|
||||
fonts.fontDir.enable = false; # True will uninstall other fonts, false installs, but doesn't uninstall
|
||||
fonts.fonts = [ (pkgs.nerdfonts.override { fonts = [
|
||||
"Hack"
|
||||
"SourceCodePro"
|
||||
]; }) ];
|
||||
|
||||
programs.zsh.enable = true;
|
||||
|
||||
services.nix-daemon.enable = true;
|
||||
system.stateVersion = 4;
|
||||
users.users."gene.liverman".home = "/Users/gene.liverman";
|
||||
environment = {
|
||||
shells = with pkgs; [ bash zsh ];
|
||||
loginShell = pkgs.zsh;
|
||||
pathsToLink = [
|
||||
"/Applications"
|
||||
"/share/zsh"
|
||||
];
|
||||
systemPackages = with pkgs; [
|
||||
coreutils
|
||||
#adr-tools
|
||||
chart-testing
|
||||
colordiff
|
||||
dog
|
||||
dos2unix
|
||||
# dust
|
||||
|
||||
subversion
|
||||
# git-svn
|
||||
|
||||
gotop
|
||||
# helm
|
||||
hub
|
||||
hugo
|
||||
|
||||
kopia
|
||||
# kubernetes-cli
|
||||
kubectx
|
||||
mas
|
||||
mtr
|
||||
nmap
|
||||
# node
|
||||
openjdk
|
||||
rename
|
||||
tree
|
||||
watch
|
||||
wget
|
||||
yq
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
104
modules/home-manager/default.nix
Normal file
104
modules/home-manager/default.nix
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
{ pkgs, ... }: {
|
||||
home.stateVersion = "23.11";
|
||||
# home.packages = with pkgs; [
|
||||
#
|
||||
# ];
|
||||
home.sessionVariables = {
|
||||
CLICLOLOR = 1;
|
||||
EDITOR = "vim";
|
||||
PAGER = "less";
|
||||
};
|
||||
programs = {
|
||||
bat.enable = true;
|
||||
eza.enable = true;
|
||||
gh.enable = true;
|
||||
git = {
|
||||
enable = true;
|
||||
lfs.enable = true;
|
||||
};
|
||||
go = {
|
||||
enable = true;
|
||||
goPath = "go";
|
||||
};
|
||||
jq.enable = true;
|
||||
k9s.enable = true;
|
||||
neovim.enable = true;
|
||||
oh-my-posh = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
settings = builtins.fromJSON (builtins.unsafeDiscardStringContext (builtins.readFile ./files/beanbag.omp.json));
|
||||
};
|
||||
vim.enable = true;
|
||||
zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
enableAutosuggestions = true;
|
||||
history.save = 1000000;
|
||||
history.size = 1000000;
|
||||
initExtra = ''
|
||||
[ -f ~/.private-env ] && source ~/.private-env || echo '~/.private-env is missing'
|
||||
|
||||
# Start GPG agent
|
||||
# Some tips from https://hedberg.io/yubikey-for-ssh/ helped simplify this:
|
||||
if [[ $(uname) == 'Darwin' ]]; then
|
||||
# Add GPG Suite binaries to the path:
|
||||
export PATH=/usr/local/MacGPG2/bin:$PATH
|
||||
fi
|
||||
|
||||
export GPG_TTY=$(tty)
|
||||
|
||||
if [[ `uname` == 'Linux' ]]; then
|
||||
alias uwgconnect='nmcli dev wifi connect SecureWest password'
|
||||
alias uwgforget='nmcli connection delete SecureWest'
|
||||
alias ykey='sudo systemctl restart pcscd && sudo pkill -9 gpg-agent && source ~/.zshrc; ssh-add -L'
|
||||
else
|
||||
alias currentwifi='networksetup -getairportnetwork en0 |cut -d ":" -f2- | cut -d " " -f2-'
|
||||
alias uwgconnect='networksetup -setairportnetwork en0 SecureWest'
|
||||
alias uwgforget='networksetup -removepreferredwirelessnetwork en0 SecureWest'
|
||||
alias ykey='pkill -9 gpg-agent && source ~/.zshrc; ssh-add -L'
|
||||
fi
|
||||
if [[ `uname` != 'Linux' ]]; then
|
||||
function otpon() {
|
||||
osascript -e 'tell application "yubiswitch" to KeyOn'
|
||||
}
|
||||
function otpoff() {
|
||||
osascript -e 'tell application "yubiswitch" to KeyOff'
|
||||
}
|
||||
fi
|
||||
'';
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
plugins = [
|
||||
"bundler"
|
||||
"gem"
|
||||
"git"
|
||||
"github"
|
||||
"history"
|
||||
"kubectl"
|
||||
"macos"
|
||||
"pip"
|
||||
"terraform"
|
||||
"vagrant"
|
||||
"vscode"
|
||||
];
|
||||
};
|
||||
shellAliases = {
|
||||
beo = "bundle exec onceover run spec --trace --force";
|
||||
biv = "bundle install --path=vendor/bundle";
|
||||
ce = "code-exploration";
|
||||
gbc = ''
|
||||
git branch --merged | command grep -vE "^(\*|\s*(main|master|develop|production)\s*$)" | command xargs -n 1 git branch -d
|
||||
'';
|
||||
gitextract = "git log --pretty=email --patch-with-stat --reverse --full-index --binary --";
|
||||
gpge = "gpg2 --encrypt --sign --armor -r ";
|
||||
hubpr = "hub pull-request --push --browse";
|
||||
pssh = "ssh -o 'UserKnownHostsFile /dev/null' -o 'StrictHostKeyChecking no' -o PubkeyAcceptedKeyTypes=+ssh-rsa -o HostKeyAlgorithms=+ssh-rsa -o KexAlgorithms=+diffie-hellman-group1-sha1 -i ~/.ssh/id_rsa-acceptance";
|
||||
sal = "ssh-add -L";
|
||||
st = "open -a SourceTree";
|
||||
sz = "source ~/.zshrc";
|
||||
usegpg = "killall ssh-agent; export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) && gpgconf --launch gpg-agent";
|
||||
usessh = "gpgconf --kill gpg-agent";
|
||||
};
|
||||
}; # end zsh
|
||||
};
|
||||
}
|
||||
174
modules/home-manager/files/beanbag.omp.json
Executable file
174
modules/home-manager/files/beanbag.omp.json
Executable file
|
|
@ -0,0 +1,174 @@
|
|||
{
|
||||
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||
"version": 2,
|
||||
"final_space": true,
|
||||
"palette": {
|
||||
"line-connector": "#00ff00",
|
||||
"hostname": "#62c0ff",
|
||||
"pwd": "#ffff00",
|
||||
"git-fg-clean": "#62c0ff",
|
||||
"git-fg-changed": "#6287ff",
|
||||
"git-fg-ahead-and-behind": "#7f62ff",
|
||||
"git-fg-ahead": "#9962ff",
|
||||
"git-fg-behind": "#c062ff",
|
||||
"svn-fg-clean": "#62c0ff",
|
||||
"svn-fg-changed": "#6287ff",
|
||||
"kubectl-fg": "#62c0ff",
|
||||
"kubectl-bg": "transparent",
|
||||
"status-fg-okay": "#00ff00",
|
||||
"status-fg-error": "#D81E5B",
|
||||
"secondary-fg": "#00ff00",
|
||||
|
||||
|
||||
|
||||
"blue": "#4B95E9",
|
||||
"orange": "#F07623",
|
||||
"white": "#E0DEF4",
|
||||
"yellow": "#F3AE35"
|
||||
},
|
||||
"blocks": [
|
||||
{
|
||||
"type": "prompt",
|
||||
"alignment": "left",
|
||||
"segments": [
|
||||
{
|
||||
"type": "text",
|
||||
"style": "plain",
|
||||
"foreground": "p:line-connector",
|
||||
"template": "\u2554"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"style": "plain",
|
||||
"template": " \u2615 "
|
||||
},
|
||||
{
|
||||
"type": "session",
|
||||
"style": "plain",
|
||||
"foreground": "p:hostname",
|
||||
"template": " {{ (split \".\" .HostName)._0 }}("
|
||||
},
|
||||
{
|
||||
"type": "os",
|
||||
"style": "plain",
|
||||
"template": "{{ if .WSL }}WSL {{ end }}{{.Icon}}"
|
||||
},
|
||||
{
|
||||
"type": "session",
|
||||
"style": "plain",
|
||||
"foreground": "p:hostname",
|
||||
"template": "):"
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"style": "plain",
|
||||
"foreground": "p:pwd",
|
||||
"template": " \uea83 {{ path .Path .Location }}",
|
||||
"properties": {
|
||||
"folder_separator_icon": "/",
|
||||
"style": "full"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "kubectl",
|
||||
"style": "powerline",
|
||||
"powerline_symbol": "\uE0B0",
|
||||
"foreground": "p:kubectl-fg",
|
||||
"background": "p:kubectl-bg",
|
||||
"template": " <#ff8800>(</>\uFD31 {{.Context}}{{if .Namespace}} :: {{.Namespace}}{{end}}<#ff8800>)</>"
|
||||
},
|
||||
{
|
||||
"type": "git",
|
||||
"style": "plain",
|
||||
"foreground": "p:git-fg-clean",
|
||||
"foreground_templates": [
|
||||
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:git-fg-changed{{ end }}",
|
||||
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:git-fg-ahead-and-behind{{ end }}",
|
||||
"{{ if gt .Ahead 0 }}p:git-fg-ahead{{ end }}",
|
||||
"{{ if gt .Behind 0 }}p:git-fg-behind{{ end }}"
|
||||
],
|
||||
"template": " <#ff8800>on</> {{ if .UpstreamURL }}{{ url .UpstreamIcon .UpstreamURL }} {{ end }}{{ url .HEAD .Kraken }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} \uf044 {{ .Working.String }}{{ end }}{{ if .Staging.Changed }} \uf046 {{ .Staging.String }}{{ end }}",
|
||||
"properties": {
|
||||
"branch_max_length": 25,
|
||||
"fetch_stash_count": true,
|
||||
"fetch_status": true,
|
||||
"fetch_upstream_icon": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "svn",
|
||||
"style": "plain",
|
||||
"foreground": "p:svn-fg-clean",
|
||||
"foreground_templates": [
|
||||
"{{ if (.Working.Changed) }}p:svn-fg-changed{{ end }}"
|
||||
],
|
||||
"template": " <#ff8800>on svn</> \ue0a0{{.Branch}} r{{.BaseRev}}{{ if .Working.Changed }} \uf044 {{.Working.String}}{{ end }}",
|
||||
"properties": {
|
||||
"fetch_status": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "status",
|
||||
"style": "diamond",
|
||||
"foreground": "p:status-fg-okay",
|
||||
"foreground_templates": [
|
||||
"{{ if gt .Code 0 }}p:status-fg-error{{ end }}"
|
||||
],
|
||||
"template": " (exit code {{ .Code }})",
|
||||
"properties": {
|
||||
"always_enabled": false
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "prompt",
|
||||
"alignment": "left",
|
||||
"newline": true,
|
||||
"segments": [
|
||||
{
|
||||
"foreground": "p:line-connector",
|
||||
"style": "plain",
|
||||
"template": "\u255A\u1405",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tooltips": [
|
||||
{
|
||||
"type": "aws",
|
||||
"tips": [
|
||||
"aws"
|
||||
],
|
||||
"style": "diamond",
|
||||
"foreground": "p:white",
|
||||
"background": "p:orange",
|
||||
"leading_diamond": "\ue0b0",
|
||||
"trailing_diamond": "\ue0b4",
|
||||
"template": " \ue7ad {{ .Profile }}{{ if .Region }}@{{ .Region }}{{ end }} ",
|
||||
"properties": {
|
||||
"display_default": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "az",
|
||||
"tips": [
|
||||
"az"
|
||||
],
|
||||
"style": "diamond",
|
||||
"foreground": "p:white",
|
||||
"background": "p:blue",
|
||||
"leading_diamond": "\ue0b0",
|
||||
"trailing_diamond": "\ue0b4",
|
||||
"template": " \uebd8 {{ .Name }} ",
|
||||
"properties": {
|
||||
"display_default": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"secondary_prompt": {
|
||||
"foreground": "p:secondary-fg",
|
||||
"template": " "
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue