mirror of
https://github.com/nmasur/dotfiles
synced 2025-12-16 11:22:41 +00:00
Compare commits
22 Commits
ceca1ffd5a
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d6b29c30b | ||
|
|
fd589b66ef | ||
|
|
853aa644fa | ||
|
|
b6e7221cc6 | ||
|
|
235901b3b0 | ||
|
|
7cd74986df | ||
|
|
a6e15b71cd | ||
|
|
2e4467b6ea | ||
|
|
431ebd732c | ||
|
|
2d576bd25d | ||
|
|
a1615eda67 | ||
|
|
444582a5a5 | ||
|
|
fbabdadb32 | ||
|
|
f8dfa2a817 | ||
|
|
e4a8ef15ce | ||
|
|
5c922310f5 | ||
|
|
2f274cd652 | ||
|
|
407e9c3af8 | ||
|
|
c13e029805 | ||
|
|
c56bc30200 | ||
|
|
6064fdb0e0 | ||
|
|
5cf27d6d66 |
92
flake.lock
generated
92
flake.lock
generated
@@ -22,11 +22,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761339987,
|
||||
"narHash": "sha256-IUaawVwItZKi64IA6kF6wQCLCzpXbk2R46dHn8sHkig=",
|
||||
"lastModified": 1765065051,
|
||||
"narHash": "sha256-b7W9WsvyMOkUScNxbzS45KEJp0iiqRPyJ1I3JBE+oEE=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "7cd9aac79ee2924a85c211d21fafd394b06a38de",
|
||||
"rev": "7e22bf538aa3e0937effcb1cee73d5f1bcc26f79",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -43,11 +43,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761899396,
|
||||
"narHash": "sha256-XOpKBp6HLzzMCbzW50TEuXN35zN5WGQREC7n34DcNMM=",
|
||||
"lastModified": 1765326679,
|
||||
"narHash": "sha256-fTLX9kDwLr9Y0rH/nG+h1XG5UU+jBcy0PFYn5eneRX8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "6f4cf5abbe318e4cd1e879506f6eeafd83f7b998",
|
||||
"rev": "d64e5cdca35b5fad7c504f615357a7afe6d9c49e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -76,11 +76,11 @@
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||
"lastModified": 1765121682,
|
||||
"narHash": "sha256-4VBOP18BFeiPkyhy9o4ssBNQEvfvv1kXkasAYd0+rrA=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -148,29 +148,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"helix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-overlay": [
|
||||
"rust-overlay"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761920229,
|
||||
"narHash": "sha256-KeTcNpj5UloRTq8fO43NKEFf9a7dpETQq9ynCSgUoxM=",
|
||||
"owner": "helix-editor",
|
||||
"repo": "helix",
|
||||
"rev": "5a92474bf0453715e3139eccaaccf3264bfb2001",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "helix-editor",
|
||||
"repo": "helix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -178,11 +155,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761878381,
|
||||
"narHash": "sha256-lCRaipHgszaFZ1Cs8fdGJguVycCisBAf2HEFgip5+xU=",
|
||||
"lastModified": 1765480374,
|
||||
"narHash": "sha256-HlbvQAqLx7WqZFFQZ8nu5UUJAVlXiV/kqKbyueA8srw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "4ac96eb21c101a3e5b77ba105febc5641a8959aa",
|
||||
"rev": "39cb677ed9e908e90478aa9fe5f3383dfc1a63f3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -261,11 +238,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751903740,
|
||||
"narHash": "sha256-PeSkNMvkpEvts+9DjFiop1iT2JuBpyknmBUs0Un0a4I=",
|
||||
"lastModified": 1764234087,
|
||||
"narHash": "sha256-NHF7QWa0ZPT8hsJrvijREW3+nifmF2rTXgS2v0tpcEA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixos-generators",
|
||||
"rev": "032decf9db65efed428afd2fa39d80f7089085eb",
|
||||
"rev": "032a1878682fafe829edfcf5fdfad635a2efe748",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -292,27 +269,27 @@
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1735563628,
|
||||
"narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=",
|
||||
"lastModified": 1765363881,
|
||||
"narHash": "sha256-3C3xWn8/2Zzr7sxVBmpc1H1QfxjNfta5IMFe3O9ZEPw=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798",
|
||||
"rev": "d2b1213bf5ec5e62d96b003ab4b5cbc42abfc0d0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.05",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1761672384,
|
||||
"narHash": "sha256-o9KF3DJL7g7iYMZq9SWgfS1BFlNbsm6xplRjVlOCkXI=",
|
||||
"lastModified": 1765186076,
|
||||
"narHash": "sha256-hM20uyap1a0M9d344I692r+ik4gTMyj60cQWO+hAYP8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "08dacfca559e1d7da38f3cf05f1f45ee9bfd213c",
|
||||
"rev": "addf7cf5f383a3101ecfba091b98d0a1263dc9b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -346,11 +323,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761968147,
|
||||
"narHash": "sha256-ZaOjG7VnEozv2+Y+aA4G8zm5HO0hcWRrQpMLdQsIic4=",
|
||||
"lastModified": 1765598217,
|
||||
"narHash": "sha256-yJhIuiP6znKni5djRu+84X2ye4yyqqwz+Ob07gcgDbs=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nur",
|
||||
"rev": "f20762096406e710b930858237046c139f03a061",
|
||||
"rev": "da24c00523a3125a97b24783e2b59b5b98ac5da7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -363,7 +340,6 @@
|
||||
"inputs": {
|
||||
"darwin": "darwin",
|
||||
"disko": "disko",
|
||||
"helix": "helix",
|
||||
"home-manager": "home-manager",
|
||||
"mac-app-util": "mac-app-util",
|
||||
"nix2vim": "nix2vim",
|
||||
@@ -382,11 +358,11 @@
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762051177,
|
||||
"narHash": "sha256-pESNTx/m3WnrYx+OujBtDP5Bj0/mAyHa4MgEwzkgkLE=",
|
||||
"lastModified": 1765593578,
|
||||
"narHash": "sha256-qbl874bCIy9+OLImdfBfZ9ITUDDjjTAB04Dk4PlZFV0=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "08c33e87c4829bbdd42b5af247cf7a19e126369f",
|
||||
"rev": "348b94ed9ddffccdf1a65582a2dcff0a4a3eeeb4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -466,11 +442,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761969132,
|
||||
"narHash": "sha256-0me4+e+1VxNuvySSw0voqMCWU/eUmTuth7f4+Q2jbUY=",
|
||||
"lastModified": 1765483419,
|
||||
"narHash": "sha256-w6wznH1lBzlSH3+pWDkE+L6xA0F02drFAzu2E7PD/Jo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NixOS-WSL",
|
||||
"rev": "761582d6ab431549fe1396d2cd681e3fe9376020",
|
||||
"rev": "0c040f28b44b18e0d4240e027096078e34dbb029",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -506,11 +482,11 @@
|
||||
"zenyd-mpv-scripts": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1707704915,
|
||||
"narHash": "sha256-9P/8q/OZXfaJMS08acQP4h3/zUA5mKRQee0JmkXcz1w=",
|
||||
"lastModified": 1765050776,
|
||||
"narHash": "sha256-9gO+GkNoGsxAbMRrBWu0FfXEQtyTmHivlaxlYLpV2YM=",
|
||||
"owner": "zenyd",
|
||||
"repo": "mpv-scripts",
|
||||
"rev": "9bdce0050144cb24f92475f7bdd77180e0e4c26b",
|
||||
"rev": "62f4bb313c6cb6366672e78dea940e9da8fec84a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
15
flake.nix
15
flake.nix
@@ -8,7 +8,7 @@
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
# Used for specific stable packages
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||
|
||||
# Used for MacOS system config
|
||||
darwin = {
|
||||
@@ -75,12 +75,12 @@
|
||||
inputs.rust-overlay.follows = "rust-overlay";
|
||||
};
|
||||
|
||||
# Text editor
|
||||
helix = {
|
||||
url = "github:helix-editor/helix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.rust-overlay.follows = "rust-overlay";
|
||||
};
|
||||
# # Text editor
|
||||
# helix = {
|
||||
# url = "github:helix-editor/helix";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# inputs.rust-overlay.follows = "rust-overlay";
|
||||
# };
|
||||
|
||||
# # Nextcloud Apps
|
||||
# nextcloud-news = {
|
||||
@@ -139,6 +139,7 @@
|
||||
photos = "photos.${baseName}";
|
||||
postgresql = "pg.${baseName}";
|
||||
prometheus = "prom.${baseName}";
|
||||
recipes = "cooking.${baseName}";
|
||||
secrets = "vault.${baseName}";
|
||||
smtp = "smtp.purelymail.com";
|
||||
status = "status.${baseName}";
|
||||
|
||||
@@ -67,8 +67,9 @@ lib
|
||||
inputs.nur.overlays.default
|
||||
inputs.nix2vim.overlay
|
||||
inputs.zellij-switch.overlays.default
|
||||
inputs.helix.overlays.default
|
||||
] ++ (importOverlays ../overlays);
|
||||
# inputs.helix.overlays.default
|
||||
]
|
||||
++ (importOverlays ../overlays);
|
||||
|
||||
# System types to support.
|
||||
supportedSystems = [
|
||||
@@ -97,7 +98,10 @@ lib
|
||||
system:
|
||||
import inputs.nixpkgs {
|
||||
inherit system overlays;
|
||||
config.permittedInsecurePackages = [ "litestream-0.3.13" ];
|
||||
config.permittedInsecurePackages = [
|
||||
"litestream-0.3.13"
|
||||
"electron-36.9.5"
|
||||
];
|
||||
config.allowUnfree = true;
|
||||
}
|
||||
);
|
||||
@@ -130,7 +134,8 @@ lib
|
||||
];
|
||||
extraSpecialArgs = {
|
||||
inherit colorscheme;
|
||||
} // specialArgs;
|
||||
}
|
||||
// specialArgs;
|
||||
};
|
||||
|
||||
buildNixos =
|
||||
@@ -152,8 +157,10 @@ lib
|
||||
home-manager = {
|
||||
extraSpecialArgs = {
|
||||
inherit colorscheme;
|
||||
} // specialArgs;
|
||||
} // homeModule.home-manager;
|
||||
}
|
||||
// specialArgs;
|
||||
}
|
||||
// homeModule.home-manager;
|
||||
}
|
||||
];
|
||||
};
|
||||
@@ -178,8 +185,10 @@ lib
|
||||
home-manager = {
|
||||
extraSpecialArgs = {
|
||||
inherit colorscheme;
|
||||
} // specialArgs;
|
||||
} // homeModule.home-manager;
|
||||
}
|
||||
// specialArgs;
|
||||
}
|
||||
// homeModule.home-manager;
|
||||
}
|
||||
];
|
||||
};
|
||||
@@ -222,12 +231,15 @@ lib
|
||||
home-manager = {
|
||||
extraSpecialArgs = {
|
||||
inherit colorscheme;
|
||||
} // specialArgs;
|
||||
} // homeModule.home-manager;
|
||||
}
|
||||
// specialArgs;
|
||||
}
|
||||
// homeModule.home-manager;
|
||||
}
|
||||
];
|
||||
specialArgs = {
|
||||
} // specialArgs;
|
||||
}
|
||||
// specialArgs;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
};
|
||||
brews = [
|
||||
"trash" # Delete files and folders to trash instead of rm
|
||||
"jiratui" # Terminal program to manage Jira
|
||||
];
|
||||
casks = [
|
||||
"1password" # 1Password will not launch from Nix on macOS
|
||||
|
||||
@@ -2,6 +2,12 @@ inputs: _final: prev: {
|
||||
|
||||
awscli2 = prev.awscli2.overrideAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "aws";
|
||||
repo = "aws-cli";
|
||||
rev = "2.31.27";
|
||||
hash = "sha256-NnAEdbIZVri9Bi0KBlcZIVox+LbuD0/hBdtYB/UFHeo=";
|
||||
};
|
||||
disabledTestPaths = previousAttrs.disabledTestPaths ++ [
|
||||
"tests/unit/customizations"
|
||||
];
|
||||
|
||||
@@ -6,17 +6,17 @@
|
||||
# Specify AWS_PROFILE and AWS_REGION before running this script
|
||||
|
||||
aws ec2 describe-instances \
|
||||
--filters "Name=instance-state-name,Values=running" |
|
||||
jq -r \
|
||||
'.Reservations[]
|
||||
--filters "Name=instance-state-name,Values=running" |
|
||||
jq -r \
|
||||
'.Reservations[]
|
||||
| .Instances[]
|
||||
| .InstanceId + " - " +
|
||||
(.PrivateIpAddress // "n/a") + " - " +
|
||||
(.PublicIpAddress // "n/a") + " - " +
|
||||
(.Tags // [] | from_entries | .Name // "n/a")' |
|
||||
fzf \
|
||||
--height 100% \
|
||||
--layout reverse \
|
||||
--header $'Press Enter to start SSM session\nInstance ID - Private IP - Public IP - Name' \
|
||||
--preview "aws ec2 describe-instances --instance-ids \"\$(echo {} | cut -d' ' -f1)\" | jq -r '.Reservations[].Instances[0]'" \
|
||||
--bind "enter:become(aws ssm start-session --target \$(echo {} | cut -d' ' -f1))"
|
||||
fzf \
|
||||
--height 100% \
|
||||
--layout reverse \
|
||||
--header $'Press Enter to start SSM session\nInstance ID - Private IP - Public IP - Name' \
|
||||
--preview "aws ec2 describe-instances --instance-ids \"\$(echo {} | cut -d' ' -f1)\" | jq -r '.Reservations[].Instances[0]'" \
|
||||
--bind "enter:become(aws ssm start-session --document-name 'AWS-StartInteractiveCommand' --parameters '{\"command\": [\"bash\"]}' --target \$(echo {} | cut -d' ' -f1))"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
pkgs.writeShellScriptBin "rebuild" ''
|
||||
echo ${pkgs.system}
|
||||
echo ${pkgs.stdenv.hostPlatform.system}
|
||||
SYSTEM=${if pkgs.stdenv.isDarwin then "darwin" else "linux"}
|
||||
if [ "$SYSTEM" == "darwin" ]; then
|
||||
sudo darwin-rebuild switch --flake ${builtins.toString ../../../../.}
|
||||
|
||||
@@ -204,7 +204,7 @@ in
|
||||
|
||||
xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.isLinux) {
|
||||
name = "aerc";
|
||||
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} aerc %u";
|
||||
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} -e aerc %u";
|
||||
};
|
||||
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
|
||||
"${config.xsession.windowManager.i3.config.modifier}+Shift+e" =
|
||||
@@ -214,7 +214,7 @@ in
|
||||
if terminal == pkgs.wezterm then
|
||||
"start --class com.noah.aerc -- aerc"
|
||||
else
|
||||
"--class=com.noah.aerc --command=aerc";
|
||||
"--class=com.noah.aerc -e aerc";
|
||||
in
|
||||
"exec ${
|
||||
# Don't name the script `aerc` or it will affect grep
|
||||
|
||||
@@ -15,11 +15,20 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
programs.chawan = {
|
||||
enable = true;
|
||||
settings = {
|
||||
external.copy-cmd = if pkgs.stdenv.isLinux then "xclip -selection clipboard -in" else "pbcopy";
|
||||
};
|
||||
};
|
||||
|
||||
# Set Chawan as the default app for manual pages
|
||||
home.sessionVariables = {
|
||||
MANPAGER = "${lib.getExe pkgs.chawan} -T text/x-ansi";
|
||||
};
|
||||
|
||||
programs.fish.shellAbbrs.man = "mancha";
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -16,7 +16,8 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
# Set the i3 terminal
|
||||
nmasur.presets.services.i3.terminal = config.programs.ghostty.package;
|
||||
nmasur.presets.services.i3.terminal =
|
||||
if pkgs.stdenv.isDarwin then pkgs.alacritty else config.programs.ghostty.package;
|
||||
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
|
||||
@@ -7,6 +7,62 @@
|
||||
|
||||
let
|
||||
cfg = config.nmasur.presets.programs.helix;
|
||||
|
||||
blame_file_pretty = pkgs.writeShellScriptBin "blame_file_pretty" ''
|
||||
# Source: https://gist.github.com/gloaysa/828707f067e3bb20da18d72fa5d4963a
|
||||
# Utility for Helix: open the patch for the commit that last touched the current line.
|
||||
# If the line isn’t committed yet, it shows the working-tree diff for THIS file only.
|
||||
# The script writes the diff to /tmp and prints the absolute path to stdout
|
||||
# Adjust `context` to see more/fewer unchanged lines around the change (default: 3).
|
||||
#
|
||||
# usage: git-file_pretty.sh <file> <line> [context_lines]
|
||||
# Helix mapping example:
|
||||
# B = ':open %sh{ ~/.config/helix/utils/git-blame-commit.sh "%{buffer_name}" %{cursor_line} 3 }'
|
||||
file="$1"
|
||||
line="$2"
|
||||
ctx="''${3:-3}"
|
||||
|
||||
# blame the exact line
|
||||
porc="$(git blame -L "$line",+1 --porcelain -- "$file")" || exit 1
|
||||
sha="$(printf '%s\n' "$porc" | awk 'NR==1{print $1}')"
|
||||
commit_path="$(printf '%s\n' "$porc" | awk '/^filename /{print substr($0,10); exit}')"
|
||||
|
||||
out="/tmp/hx-blame_$(basename "$file")_''${sha:-wt}.diff"
|
||||
|
||||
if [ -z "$sha" ] || [ "$sha" = 0000000000000000000000000000000000000000 ] || [ "$sha" = "^" ]; then
|
||||
# uncommitted line → working tree diff for this file
|
||||
git --no-pager diff --no-color -U"$ctx" -- "$file" > "$out"
|
||||
else
|
||||
# committed line → only this file’s patch in that commit
|
||||
git --no-pager show --no-color -M -C -U"$ctx" "$sha" -- "''${commit_path:-$file}" > "$out"
|
||||
fi
|
||||
|
||||
# "return" the path for :open %sh{…}
|
||||
printf '%s' "$out"
|
||||
'';
|
||||
|
||||
blame_line_pretty = pkgs.writeShellScriptBin "blame_line_pretty" ''
|
||||
# Source: https://gist.github.com/gloaysa/828707f067e3bb20da18d72fa5d4963a
|
||||
# Utility for Helix: pretty-print blame info for the line under the cursor.
|
||||
# Quite basic.
|
||||
#
|
||||
# usage: blame_line_pretty <file> <line>
|
||||
# Helix mapping example:
|
||||
# b = ":run-shell-command ~/.config/helix/utils/blame_line_pretty.sh %{buffer_name} %{cursor_line}"
|
||||
file="$1"; line="$2"
|
||||
out="$(git blame -L "$line",+1 --porcelain -- "$file")" || return 1
|
||||
|
||||
sha="$(printf '%s\n' "$out" | awk 'NR==1{print $1}')"
|
||||
author="$(printf '%s\n' "$out" | awk -F'author ' '/^author /{print $2; exit}')"
|
||||
epoch="$(printf '%s\n' "$out" | awk '/^author-time /{print $2; exit}')"
|
||||
# dd-mm-yyyy (macOS `date -r`; fallback to gdate if present)
|
||||
date="$( (date -r "$epoch" +%d-%m-%Y\ %H:%M 2>/dev/null) || (gdate -d "@$epoch" +%d-%m-%Y\ %H:%M 2>/dev/null) || printf '%s' "$epoch")"
|
||||
summary="$(printf '%s\n' "$out" | awk -F'summary ' '/^summary /{print $2; exit}')"
|
||||
change="$(printf '%s\n' "$out" | tail -n 1)"
|
||||
|
||||
printf "%s\n%s\n%s\n%s\n%s\n" "$sha" "$author" "$date" "$summary" "$change"
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
@@ -62,6 +118,11 @@ in
|
||||
command = lib.getExe pkgs.marksman;
|
||||
};
|
||||
|
||||
language-server.rumdl = {
|
||||
command = lib.getExe pkgs.rumdl;
|
||||
args = [ "server" ];
|
||||
};
|
||||
|
||||
language-server.terraform-ls = {
|
||||
command = "${lib.getExe pkgs.terraform-ls}";
|
||||
args = [ "serve" ];
|
||||
@@ -87,10 +148,16 @@ in
|
||||
{
|
||||
name = "markdown";
|
||||
auto-format = false;
|
||||
language-servers = [ "marksman" ];
|
||||
language-servers = [
|
||||
"marksman"
|
||||
"rumdl"
|
||||
];
|
||||
formatter = {
|
||||
command = lib.getExe pkgs.mdformat;
|
||||
args = [ "-" ];
|
||||
command = lib.getExe pkgs.rumdl;
|
||||
args = [
|
||||
"fmt"
|
||||
"-"
|
||||
];
|
||||
};
|
||||
# Allows return key to continue the token on the next line
|
||||
comment-tokens = [
|
||||
@@ -102,9 +169,14 @@ in
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "tfvars";
|
||||
name = "terraform";
|
||||
scope = "source.tf";
|
||||
auto-format = true;
|
||||
language-servers = [ "terraform-ls" ];
|
||||
file-types = [
|
||||
"tf"
|
||||
"tfvars"
|
||||
];
|
||||
formatter = {
|
||||
command = lib.getExe pkgs.terraform;
|
||||
args = [
|
||||
@@ -116,9 +188,9 @@ in
|
||||
{
|
||||
name = "hcl";
|
||||
auto-format = true;
|
||||
language-servers = [ "terraform-ls" ];
|
||||
file-types = [ "hcl" ];
|
||||
formatter = {
|
||||
command = lib.getExe pkgs.terraform;
|
||||
command = "${pkgs.packer}/bin/packer";
|
||||
args = [
|
||||
"fmt"
|
||||
"-"
|
||||
@@ -179,7 +251,9 @@ in
|
||||
];
|
||||
|
||||
# Commandline git blame
|
||||
space.B = ":echo %sh{git log -n1 --date=short --pretty=format:'%%h %%ad %%s' $(git blame -L %{cursor_line},+1 \"%{buffer_name}\" | cut -d' ' -f1)}";
|
||||
# space.B = ":echo %sh{git log -n1 --date=short --pretty=format:'%%h %%ad %%s' $(git blame -L %{cursor_line},+1 \"%{buffer_name}\" | cut -d' ' -f1)}";
|
||||
space.B = '':open %sh{ ${blame_line_pretty}/bin/blame_line_pretty "%{buffer_name}" %{cursor_line} 3 }'';
|
||||
space.i = '':open %sh{ ${blame_file_pretty}/bin/blame_file_pretty "%{buffer_name}" %{cursor_line} 3 }'';
|
||||
|
||||
# Extend selection above
|
||||
X = "select_line_above";
|
||||
@@ -247,7 +321,7 @@ in
|
||||
|
||||
completion-replace = true; # Replace whole word with completion
|
||||
trim-trailing-whitespace = true;
|
||||
rainbow-brackets = true; # Make it easier to match parentheses
|
||||
# rainbow-brackets = true; # Make it easier to match parentheses
|
||||
|
||||
# Show whitespace visible to the user
|
||||
# Waiting for trailing whitespace option ideally
|
||||
|
||||
@@ -34,6 +34,9 @@ in
|
||||
home.packages = [
|
||||
# Required for the fsmonitor to auto-snapshot
|
||||
pkgs.watchman
|
||||
|
||||
# Required to be on path to work in Zellij
|
||||
pkgs.jjui
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
@@ -29,6 +29,18 @@ in
|
||||
doas nixos-rebuild switch --flake ${config.nmasur.presets.programs.dotfiles.path}
|
||||
'';
|
||||
};
|
||||
rebuildNixosAndPause = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.writeShellScriptBin "rebuild-nixos-pause" ''
|
||||
${lib.getExe cfg.commands.rebuildNixos} || read
|
||||
'';
|
||||
};
|
||||
rebuildHomeAndPause = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.writeShellScriptBin "rebuild-home-pause" ''
|
||||
${lib.getExe cfg.commands.rebuildHome} || read
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -22,6 +22,6 @@ in
|
||||
|
||||
# Broken on 2023-12-11
|
||||
# https://forum.obsidian.md/t/electron-25-is-now-eol-please-upgrade-to-a-newer-version/72878/8
|
||||
# insecurePackages = [ "electron-25.9.0" ];
|
||||
# allowInsecurePackages = [ "electron-36.9.5" ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
programs.ghostty.settings.initial-command = lib.getExe pkgs.zellij;
|
||||
|
||||
xdg.configFile."zellij/layouts/compact-top.kdl".text = # kdl
|
||||
''
|
||||
layout {
|
||||
@@ -85,7 +87,7 @@ in
|
||||
enableFishIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
attachExistingSession = true;
|
||||
exitShellOnExit = false;
|
||||
exitShellOnExit = true;
|
||||
|
||||
settings = {
|
||||
default_mode = "locked";
|
||||
@@ -121,9 +123,15 @@ in
|
||||
shared = {
|
||||
"bind \"Alt Shift s\"" = {
|
||||
Run = {
|
||||
_args = [
|
||||
(lib.getExe zellij-switch-to-last)
|
||||
];
|
||||
_args =
|
||||
if pkgs.stdenv.isDarwin then
|
||||
[
|
||||
"env"
|
||||
"PATH=${config.home.homeDirectory}/.nix-profile/bin:/usr/bin:/bin"
|
||||
(lib.getExe zellij-switch-to-last)
|
||||
]
|
||||
else
|
||||
[ (lib.getExe zellij-switch-to-last) ];
|
||||
close_on_exit = true;
|
||||
};
|
||||
};
|
||||
@@ -187,9 +195,15 @@ in
|
||||
};
|
||||
"bind \"Alt Shift j\"" = {
|
||||
Run = {
|
||||
_args = [
|
||||
(lib.getExe pkgs.lazyjj)
|
||||
];
|
||||
_args =
|
||||
if pkgs.stdenv.isDarwin then
|
||||
[
|
||||
"env"
|
||||
"PATH=${config.home.homeDirectory}/.nix-profile/bin:/usr/bin"
|
||||
(lib.getExe pkgs.jjui)
|
||||
]
|
||||
else
|
||||
[ (lib.getExe pkgs.jjui) ];
|
||||
close_on_exit = true;
|
||||
floating = true;
|
||||
x = "1%";
|
||||
|
||||
@@ -214,9 +214,9 @@ in
|
||||
cfg.commands.lockScreen != null
|
||||
) "exec ${cfg.commands.lockScreen}";
|
||||
"${modifier}+Mod1+h" =
|
||||
''exec --no-startup-id ${lib.getExe cfg.terminal} --command="${pkgs.home-manager}/bin/home-manager switch --flake ${config.nmasur.presets.programs.dotfiles.path}#''${hostname} || read" '';
|
||||
''exec --no-startup-id ${lib.getExe cfg.terminal} -e "${lib.getExe config.nmasur.presets.programs.nixpkgs.commands.rebuildHome} '';
|
||||
"${modifier}+Mod1+r" =
|
||||
"exec --no-startup-id ${lib.getExe cfg.terminal} --command='doas nixos-rebuild switch --flake ${config.nmasur.presets.programs.dotfiles.path} || read'";
|
||||
"exec --no-startup-id ${lib.getExe cfg.terminal} -e ${lib.getExe config.nmasur.presets.programs.nixpkgs.commands.rebuildNixos}";
|
||||
|
||||
# Window options
|
||||
"${modifier}+q" = "kill";
|
||||
|
||||
@@ -17,7 +17,6 @@ in
|
||||
|
||||
nmasur.presets.programs = {
|
||||
zed-editor.enable = lib.mkDefault true;
|
||||
jujutsu.enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
home.packages = [
|
||||
@@ -29,8 +28,8 @@ in
|
||||
pkgs.charm # Manage account and filesystem
|
||||
pkgs.pop # Send emails from a TUI
|
||||
|
||||
pkgs.chawan # Browser TUI
|
||||
pkgs.crush # AI LLM Agent
|
||||
pkgs.gemini-cli # AI LLM Agent
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ in
|
||||
pkgs.age # Encryption
|
||||
pkgs.bc # Calculator
|
||||
pkgs.bottom # System monitor (top)
|
||||
pkgs.csvlens # CSV viewer (easier than visidata)
|
||||
pkgs.delta # Fancy diffs
|
||||
pkgs.difftastic # Other fancy diffs
|
||||
pkgs.doggo # DNS client (dig)
|
||||
@@ -33,7 +34,7 @@ in
|
||||
pkgs.pandoc # Convert text documents
|
||||
pkgs.qrencode # Generate qr codes
|
||||
pkgs.spacer # Output lines in terminal
|
||||
pkgs.tealdeer # Cheatsheets
|
||||
pkgs.stable.tealdeer # Cheatsheets
|
||||
pkgs.tree # Print tree in terminal
|
||||
pkgs.vimv-rs # Batch rename files
|
||||
pkgs.yazi # TUI file explorer
|
||||
@@ -63,8 +64,9 @@ in
|
||||
ghostty.enable = lib.mkDefault true;
|
||||
git.enable = lib.mkDefault true;
|
||||
helix.enable = lib.mkDefault true;
|
||||
jujutsu.enable = lib.mkDefault true;
|
||||
lazygit.enable = lib.mkDefault true;
|
||||
neovim.enable = lib.mkDefault true;
|
||||
# neovim.enable = lib.mkDefault true;
|
||||
nix-index.enable = lib.mkDefault true;
|
||||
nixpkgs.enable = lib.mkDefault true;
|
||||
notes.enable = lib.mkDefault true;
|
||||
|
||||
@@ -21,7 +21,7 @@ in
|
||||
];
|
||||
|
||||
home.packages = [
|
||||
pkgs.visidata # CSV inspector
|
||||
pkgs.stable.visidata # CSV inspector
|
||||
pkgs.dos2unix # Convert Windows text files
|
||||
pkgs.inetutils # Includes telnet
|
||||
pkgs.gnupg # Encryption
|
||||
|
||||
40
platforms/nixos/modules/nmasur/presets/services/mealie.nix
Normal file
40
platforms/nixos/modules/nmasur/presets/services/mealie.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (config.nmasur.settings) hostnames;
|
||||
cfg = config.nmasur.presets.services.mealie;
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
options.nmasur.presets.services.mealie.enable = lib.mkEnableOption "mealie recipe manager";
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
services.mealie = {
|
||||
enable = true;
|
||||
port = 9099;
|
||||
database.createLocally = true;
|
||||
listenAddress = "127.0.0.1";
|
||||
};
|
||||
|
||||
nmasur.presets.services.caddy.routes = [
|
||||
{
|
||||
match = [ { host = [ hostnames.recipes ]; } ];
|
||||
handle = [
|
||||
{
|
||||
handler = "reverse_proxy";
|
||||
upstreams = [ { dial = "localhost:${builtins.toString config.services.mealie.port}"; } ];
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
# Configure Cloudflare DNS to point to this machine
|
||||
services.cloudflare-dyndns.domains = [ hostnames.recipes ];
|
||||
|
||||
# Point localhost to the local domain
|
||||
networking.hosts."127.0.0.1" = [ hostnames.recipes ];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
@@ -30,6 +30,7 @@ in
|
||||
karakeep.enable = lib.mkDefault true;
|
||||
litestream.enable = lib.mkDefault true;
|
||||
mathesar.enable = lib.mkDefault true;
|
||||
mealie.enable = lib.mkDefault true;
|
||||
minecraft-server.enable = lib.mkDefault false;
|
||||
n8n.enable = lib.mkDefault true;
|
||||
nix-autoupgrade.enable = lib.mkDefault true; # On by default for communications
|
||||
|
||||
Reference in New Issue
Block a user