mirror of
https://github.com/jbowdre/dotfiles.git
synced 2024-11-29 04:02:19 +00:00
Compare commits
17 commits
9d267a82e6
...
6ed0f8f76c
Author | SHA1 | Date | |
---|---|---|---|
6ed0f8f76c | |||
9c5312d0ce | |||
67e83165f9 | |||
e67aea353a | |||
6dbb75ca05 | |||
8dd1106304 | |||
1468ecb556 | |||
00db2d1055 | |||
34d3e9bcc2 | |||
61d6f56435 | |||
1a7a872c1c | |||
b2d4129850 | |||
95f11fc8d0 | |||
fbc57affc2 | |||
51b6f81eec | |||
668521f9ed | |||
473f39b7ec |
36 changed files with 138 additions and 43 deletions
10
.example_work_profile/README.md
Normal file
10
.example_work_profile/README.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Work profile overlay
|
||||||
|
|
||||||
|
_Inspired by [Published my Nix Dotfiles](https://www.chrisportela.com/posts/published-nix-dotfiles/)._
|
||||||
|
|
||||||
|
This repo demonstrates how I use a private repo to overlay my work-specific configurations on top of my personal ones. To use it, I just:
|
||||||
|
1. Clone the private repo to my machine.
|
||||||
|
2. `cd` into the private repo.
|
||||||
|
3. Run `home-manager switch --flake .#<username>@<hostname>` to activate the work profile (and then use the `switch-home` function to (re)activate it in the future).
|
||||||
|
|
||||||
|
When the public `dotfiles` repo gets updated, I run `nix flake lock --update-input dotfiles` to pull in the changes before doing `switch-home` to reapply the config.
|
29
.example_work_profile/flake.nix
Normal file
29
.example_work_profile/flake.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
description = "A flake to overlay private configurations on my public flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
dotfiles.url = "github:jbowdre/dotfiles";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, dotfiles, nixpkgs } @inputs:
|
||||||
|
let
|
||||||
|
inherit (dotfiles) homeConfigurations homeManagerModules lib overlays packages;
|
||||||
|
inherit (self) outputs;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
homeManagerModules = import "${dotfiles}/modules/home-manager";
|
||||||
|
|
||||||
|
overlays = import "${dotfiles}/overlays" { inherit inputs outputs; };
|
||||||
|
|
||||||
|
homeConfigurations = {
|
||||||
|
"work-user@work-system" = lib.homeManagerConfiguration {
|
||||||
|
modules = [
|
||||||
|
"${dotfiles}/home/global"
|
||||||
|
./work_overrides
|
||||||
|
];
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
extraSpecialArgs = { inherit inputs outputs; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
24
.example_work_profile/work_overrides/default.nix
Normal file
24
.example_work_profile/work_overrides/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
|
./fish.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home = {
|
||||||
|
# username override
|
||||||
|
username = "work-user";
|
||||||
|
packages = with pkgs; [
|
||||||
|
packer
|
||||||
|
terraform
|
||||||
|
vagrant
|
||||||
|
vault
|
||||||
|
wsl-open
|
||||||
|
wslu
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
htop.enable = true;
|
||||||
|
|
||||||
|
git.userEmail = "work-user@company.tld";
|
||||||
|
};
|
||||||
|
}
|
13
.example_work_profile/work_overrides/fish.nix
Normal file
13
.example_work_profile/work_overrides/fish.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{ pkgs, lib, config, ... }: {
|
||||||
|
programs.fish = {
|
||||||
|
# Shell overrides for work
|
||||||
|
|
||||||
|
shellAbbrs = rec {
|
||||||
|
putmykey = "ssh-copy-id -i ~/.ssh/id_ed25519";
|
||||||
|
putrootkey = "ssh-copy-id -i ~/.ssh/id_ed25519-root";
|
||||||
|
ssh = "ssh -i ~/.ssh/id_ed25519 -l work-user";
|
||||||
|
sshroot = "ssh -i ~/.ssh/id_ed25519-root -l root";
|
||||||
|
vpnkit = "wsl.exe -d wsl-vpnkit --cd /app service wsl-vpnkit";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
18
README.md
18
README.md
|
@ -1,19 +1,9 @@
|
||||||
# Config files
|
# Config files
|
||||||
|
|
||||||
## Nix
|
## Nix
|
||||||
I've started the process of leveraging [Nix](https://nixos.org/explore.html) to manage my system configurations. This repo will (eventually?) hold files used for managing user environments with [Home Manager](https://github.com/nix-community/home-manager). The goods are in [flake.nix](./flake.nix) and the [nix](./nix/) directory.
|
I've started the process of leveraging [Nix](https://nixos.org/explore.html) to manage my system configurations. This repo holds files used for managing user environments with [Home Manager](https://github.com/nix-community/home-manager), largely adapted from the wonderful examples at [nix-starter-configs](https://github.com/Misterio77/nix-starter-configs).
|
||||||
|
|
||||||
It's very much a work-in-progress though so the legacy dotfile configs are below.
|
I've preserved my previous configs in the [.legacy_dotfiles](./.legacy_dotfiles) directory, but I'm not actively maintaining them anymore.
|
||||||
## Legacy stuff
|
|
||||||
Clone the repo:
|
The [.example_work_profile](./.example_work_profile) directory demonstrates how I use a private repo to overlay my work-specific configurations on top of my personal ones.
|
||||||
```sh
|
|
||||||
git clone https://github.com/jbowdre/dotfiles.git ~/.dotfiles
|
|
||||||
```
|
|
||||||
Use `ln` to symlink the desired configs into your home directory:
|
|
||||||
```sh
|
|
||||||
ln -s ~/.dotfiles/zsh/.zshrc ~/.zshrc
|
|
||||||
ln -s ~/.dotfiles/vim/.vimrc ~/.vimrc
|
|
||||||
ln -s ~/.dotfiles/tmux/.tmux.conf ~/.tmux.conf
|
|
||||||
ln -s ~/.dotfiles/pwsh/Microsoft.PowerShell_profile.ps1 ~/.config/powershell/Microsoft.PowerShell_profile.ps1
|
|
||||||
|
|
||||||
```
|
|
16
flake.nix
16
flake.nix
|
@ -38,19 +38,19 @@
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
inherit lib;
|
inherit lib;
|
||||||
nixosModules = import ./nix/modules/nixos;
|
nixosModules = import ./modules/nixos;
|
||||||
homeManagerModules = import ./nix/modules/home-manager;
|
homeManagerModules = import ./modules/home-manager;
|
||||||
|
|
||||||
overlays = import ./nix/overlays { inherit inputs outputs; };
|
overlays = import ./overlays { inherit inputs outputs; };
|
||||||
|
|
||||||
packages = forEachSystem (pkgs: import ./nix/pkgs { inherit pkgs; });
|
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; });
|
||||||
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; });
|
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; });
|
||||||
formatter = forEachSystem (pkgs: pkgs.nixpkgs-fmt);
|
formatter = forEachSystem (pkgs: pkgs.nixpkgs-fmt);
|
||||||
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
# Pixelbook converted to NixOS
|
# Pixelbook converted to NixOS
|
||||||
pixnix = lib.nixosSystem {
|
pixnix = lib.nixosSystem {
|
||||||
modules = [ ./nix/hosts/pixnix ];
|
modules = [ ./hosts/pixnix ];
|
||||||
specialArgs = { inherit inputs outputs; };
|
specialArgs = { inherit inputs outputs; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -59,17 +59,17 @@
|
||||||
# Available through 'home-manager --flake .#your-username@your-hostname'
|
# Available through 'home-manager --flake .#your-username@your-hostname'
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
"john@penguin-fw" = lib.homeManagerConfiguration {
|
"john@penguin-fw" = lib.homeManagerConfiguration {
|
||||||
modules = [ ./nix/home/penguin-fw.nix ];
|
modules = [ ./home/penguin-fw.nix ];
|
||||||
pkgs = pkgsFor.x86_64-linux;
|
pkgs = pkgsFor.x86_64-linux;
|
||||||
extraSpecialArgs = { inherit inputs outputs; };
|
extraSpecialArgs = { inherit inputs outputs; };
|
||||||
};
|
};
|
||||||
"john@penguin-duet" = lib.homeManagerConfiguration {
|
"john@penguin-duet" = lib.homeManagerConfiguration {
|
||||||
modules = [ ./nix/home/penguin-duet.nix ];
|
modules = [ ./home/penguin-duet.nix ];
|
||||||
pkgs = pkgsFor.aarch64-linux;
|
pkgs = pkgsFor.aarch64-linux;
|
||||||
extraSpecialArgs = { inherit inputs outputs; };
|
extraSpecialArgs = { inherit inputs outputs; };
|
||||||
};
|
};
|
||||||
"john@pixnix" = lib.homeManagerConfiguration {
|
"john@pixnix" = lib.homeManagerConfiguration {
|
||||||
modules = [ ./nix/home/pixnix.nix ];
|
modules = [ ./home/pixnix.nix ];
|
||||||
pkgs = pkgsFor.x86_64-linux;
|
pkgs = pkgsFor.x86_64-linux;
|
||||||
extraSpecialArgs = { inherit inputs outputs; };
|
extraSpecialArgs = { inherit inputs outputs; };
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
# Core CLI apps
|
# Core CLI apps
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
./exa.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
./fish.nix
|
./fish.nix
|
||||||
./tmux.nix
|
./tmux.nix
|
||||||
|
@ -10,10 +11,11 @@
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
babelfish # Lets fish speak bash
|
babelfish # Lets fish speak bash
|
||||||
bottom # Better top
|
bottom # Prettier top
|
||||||
httpie # Better curl
|
httpie # Better curl
|
||||||
jq # JSON pretty printer and manipulator
|
jq # JSON pretty printer and manipulator
|
||||||
powershell # Powershell
|
powershell # Powershell
|
||||||
|
python3 # Python 3
|
||||||
tldr # TLDR pages
|
tldr # TLDR pages
|
||||||
];
|
];
|
||||||
}
|
}
|
10
home/features/cli/exa.nix
Normal file
10
home/features/cli/exa.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{ lib, ... }: {
|
||||||
|
programs.exa = {
|
||||||
|
enable = true;
|
||||||
|
enableAliases = true;
|
||||||
|
extraOptions = [
|
||||||
|
"--group-directories-first"
|
||||||
|
];
|
||||||
|
git = true;
|
||||||
|
};
|
||||||
|
}
|
|
@ -8,7 +8,10 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
awscli # AWS CLI
|
||||||
|
google-cloud-sdk # GCP CLI
|
||||||
hugo # Static site generator
|
hugo # Static site generator
|
||||||
|
kubectl # Container wrangler
|
||||||
nil # Nix LSP
|
nil # Nix LSP
|
||||||
# nix-inspect # See which pkgs are in your Path
|
# nix-inspect # See which pkgs are in your Path
|
||||||
nixfmt # Nix formatter
|
nixfmt # Nix formatter
|
|
@ -2,16 +2,22 @@
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkIf;
|
||||||
hasPackage = pname: lib.any (p: p ? pname && p.name == pname) config.home.packages;
|
hasPackage = pname: lib.any (p: p ? pname && p.name == pname) config.home.packages;
|
||||||
hasExa = hasPackage "exa";
|
hasKubectl = hasPackage "kubectl";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
shellAbbrs = rec {
|
shellAbbrs = rec {
|
||||||
|
ccat = "egrep -v '^\s*(#|$)'";
|
||||||
|
ga = "git add";
|
||||||
|
gc = "git commit -m";
|
||||||
|
gp = "git push";
|
||||||
|
gs = "git status";
|
||||||
jqless = "jq -C | less -r";
|
jqless = "jq -C | less -r";
|
||||||
ls = mkIf hasExa "exa";
|
k = mkIf hasKubectl "kubectl";
|
||||||
n = "nix";
|
n = "nix";
|
||||||
|
sshpass = "ssh -o PubkeyAuthentication=no";
|
||||||
tf = "terraform";
|
tf = "terraform";
|
||||||
tfyolo = "terraform apply -auto-approve";
|
tfyolo = "terraform apply -auto-approve";
|
||||||
vi = "vim";
|
vi = "vim";
|
||||||
|
@ -19,12 +25,12 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
functions = {
|
functions = {
|
||||||
# Disable greeting
|
# Disable greeting
|
||||||
fish_greeting = "";
|
fish_greeting = "";
|
||||||
|
ssh = "TERM=xterm command ssh $argv";
|
||||||
# Rebuild home-manager
|
# Rebuild home-manager
|
||||||
switch-home = "home-manager switch -b backup --flake ${config.home.homeDirectory}/.dotfiles#$USER@$(hostname -s)";
|
switch-home = "home-manager switch -b backup --flake ${config.home.homeDirectory}/.dotfiles#$USER@$(hostname -s)";
|
||||||
};
|
};
|
20
home/features/cli/git.nix
Normal file
20
home/features/cli/git.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
let
|
||||||
|
email = lib.concatStringsSep "" [ "john@bo" "wdre.net" ];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.git = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
delta.enable = true;
|
||||||
|
aliases = {
|
||||||
|
graph = "log --decorate --oneline --graph";
|
||||||
|
fast-forward = "merge --ff-only";
|
||||||
|
};
|
||||||
|
userEmail = lib.mkDefault email;
|
||||||
|
userName = lib.mkDefault "John Bowdre";
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
pull.rebase = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
{ outputs, pkgs, lib, ... }: {
|
{ config, outputs, pkgs, lib, ... }: {
|
||||||
|
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -103,6 +103,10 @@
|
||||||
"yaml" = true;
|
"yaml" = true;
|
||||||
};
|
};
|
||||||
"powershell.codeFormatting.useCorrectCasing" = true;
|
"powershell.codeFormatting.useCorrectCasing" = true;
|
||||||
|
"powershell.powerShellAdditionalExePaths" = {
|
||||||
|
"pwsh" = "${config.home.homeDirectory}/.nix-profile/bin/pwsh";
|
||||||
|
};
|
||||||
|
"powershell.promptToUpdatePowerShell" = false;
|
||||||
"security.workspace.trust.untrustedFiles" = "open";
|
"security.workspace.trust.untrustedFiles" = "open";
|
||||||
"vim.statusBarColorControl" = true;
|
"vim.statusBarColorControl" = true;
|
||||||
"vim.useCtrlKeys" = false;
|
"vim.useCtrlKeys" = false;
|
|
@ -1,16 +0,0 @@
|
||||||
{ lib, ... }: {
|
|
||||||
programs.git = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
delta.enable = true;
|
|
||||||
aliases = {
|
|
||||||
graph = "log --decorate --oneline --graph";
|
|
||||||
fast-forward = "merge --ff-only";
|
|
||||||
};
|
|
||||||
userEmail = lib.mkDefault "john@bowdre.net";
|
|
||||||
userName = lib.mkDefault "John Bowdre";
|
|
||||||
extraConfig = {
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
pull.rebase = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in a new issue