mirror of
https://github.com/nmasur/dotfiles
synced 2025-08-23 21:54:41 +00:00
Compare commits
9 Commits
12604f3109
...
platform
Author | SHA1 | Date | |
---|---|---|---|
|
6933083cda | ||
|
39d9cb7e5a | ||
|
b270e1643c | ||
|
cdbd94e64e | ||
|
9e3b003241 | ||
|
802544575f | ||
|
a85180beee | ||
|
b901b9abd9 | ||
|
870ab6894d |
67
README.md
67
README.md
@@ -8,38 +8,38 @@ configuration may be difficult to translate to a non-Nix system.
|
|||||||
|
|
||||||
## System Features
|
## System Features
|
||||||
|
|
||||||
| Feature | Program | Configuration |
|
| Feature | Program | Configuration |
|
||||||
|----------------|-----------------------------------------------------|-----------------------------------------------|
|
|----------------|-----------------------------------------------------|-----------------------------------------------------------------------------------|
|
||||||
| OS | [NixOS](https://nixos.org) | [Link](./modules/nixos) |
|
| OS | [NixOS](https://nixos.org) | [Link](./platforms/nixos) |
|
||||||
| Display Server | [X11](https://www.x.org/wiki/) | [Link](./modules/nixos/graphical/xorg.nix) |
|
| Display Server | [X11](https://www.x.org/wiki/) | [Link](./platforms/nixos/modules/nmasur/profiles/gui.nix) |
|
||||||
| Compositor | [Picom](https://github.com/yshui/picom) | [Link](./modules/nixos/graphical/picom.nix) |
|
| Compositor | [Picom](https://github.com/yshui/picom) | [Link](./platforms/home-manager/modules/nmasur/presets/services/picom.nix) |
|
||||||
| Window Manager | [i3](https://i3wm.org/) | [Link](./modules/nixos/graphical/i3.nix) |
|
| Window Manager | [i3](https://i3wm.org/) | [Link](./platforms/home-manager/modules/nmasur/presets/services/i3.nix) |
|
||||||
| Panel | [Polybar](https://polybar.github.io/) | [Link](./modules/nixos/graphical/polybar.nix) |
|
| Panel | [Polybar](https://polybar.github.io/) | [Link](./platforms/home-manager/modules/nmasur/presets/services/polybar.nix) |
|
||||||
| Font | [Victor Mono](https://rubjo.github.io/victor-mono/) | [Link](./modules/nixos/graphical/fonts.nix) |
|
| Font | [Victor Mono](https://rubjo.github.io/victor-mono/) | [Link](./platforms/home-manager/modules/nmasur/presets/fonts.nix) |
|
||||||
| Launcher | [Rofi](https://github.com/davatorium/rofi) | [Link](./modules/nixos/graphical/rofi.nix) |
|
| Launcher | [Rofi](https://github.com/davatorium/rofi) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/rofi/default.nix) |
|
||||||
|
|
||||||
## User Features
|
## User Features
|
||||||
|
|
||||||
| Feature | Program | Configuration |
|
| Feature | Program | Configuration |
|
||||||
|--------------|----------------------------------------------------------------------------------|----------------------------------------------------|
|
|--------------|----------------------------------------------------------------------------------|-------------------------------------------------------------------------------|
|
||||||
| Dotfiles | [Home-Manager](https://github.com/nix-community/home-manager) | [Link](./modules/common) |
|
| Dotfiles | [Home-Manager](https://github.com/nix-community/home-manager) | [Link](./platforms/home-manager) |
|
||||||
| Terminal | [Kitty](https://sw.kovidgoyal.net/kitty/) | [Link](./modules/common/applications/kitty.nix) |
|
| Terminal | [Ghostty](https://sw.kovidgoyal.net/kitty/) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/ghostty.nix) |
|
||||||
| Shell | [Fish](https://fishshell.com/) | [Link](./modules/common/shell/fish) |
|
| Shell | [Fish](https://fishshell.com/) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/fish.nix) |
|
||||||
| Shell Prompt | [Starship](https://starship.rs/) | [Link](./modules/common/shell/starship.nix) |
|
| Shell Prompt | [Starship](https://starship.rs/) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/starship.nix) |
|
||||||
| Colorscheme | [Gruvbox](https://github.com/morhetz/gruvbox) | [Link](./colorscheme/gruvbox/default.nix) |
|
| Colorscheme | [Gruvbox](https://github.com/morhetz/gruvbox) | [Link](./colorscheme/gruvbox/default.nix) |
|
||||||
| Wallpaper | [Road](https://gitlab.com/exorcist365/wallpapers/-/blob/master/gruvbox/road.jpg) | [Link](./hosts/tempest/default.nix) |
|
| Wallpaper | [Road](https://gitlab.com/exorcist365/wallpapers/-/blob/master/gruvbox/road.jpg) | [Link](./hosts/x86_64-linux/tempest/default.nix) |
|
||||||
| Text Editor | [Neovim](https://neovim.io/) | [Link](./modules/common/neovim/config) |
|
| Text Editor | [Neovim](https://neovim.io/) | [Link](./pkgs/applications/editors/neovim/nmasur/neovim/package.nix) |
|
||||||
| Browser | [Firefox](https://www.mozilla.org/en-US/firefox/new/) | [Link](./modules/common/applications/firefox.nix) |
|
| Browser | [Firefox](https://www.mozilla.org/en-US/firefox/new/) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/firefox.nix) |
|
||||||
| E-Mail | [Aerc](https://aerc-mail.org/) | [Link](./modules/common/mail/aerc.nix) |
|
| E-Mail | [Aerc](https://aerc-mail.org/) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/aerc.nix) |
|
||||||
| File Manager | [Nautilus](https://wiki.gnome.org/action/show/Apps/Files) | [Link](./modules/common/applications/nautilus.nix) |
|
| File Manager | [Nautilus](https://wiki.gnome.org/action/show/Apps/Files) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/nautilus.nix) |
|
||||||
| PDF Reader | [Zathura](https://pwmt.org/projects/zathura/) | [Link](./modules/common/applications/media.nix) |
|
| PDF Reader | [Zathura](https://pwmt.org/projects/zathura/) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/zathura.nix) |
|
||||||
| Video Player | [mpv](https://mpv.io/) | [Link](./modules/common/applications/media.nix) |
|
| Video Player | [mpv](https://mpv.io/) | [Link](./platforms/home-manager/modules/nmasur/presets/programs/mpv.nix) |
|
||||||
|
|
||||||
## macOS Features
|
## macOS Features
|
||||||
|
|
||||||
| Feature | Program | Configuration |
|
| Feature | Program | Configuration |
|
||||||
|----------|---------------------------------------------|--------------------------------------|
|
|----------|---------------------------------------------|--------------------------------------|
|
||||||
| Keybinds | [Hammerspoon](https://www.hammerspoon.org/) | [Link](./modules/darwin/hammerspoon) |
|
| Keybinds | [Hammerspoon](https://www.hammerspoon.org/) | [Link](./platforms/home-manager/modules/nmasur/presets/services/hammerspoon/) |
|
||||||
|
|
||||||
# Diagram
|
# Diagram
|
||||||
|
|
||||||
@@ -51,15 +51,16 @@ configuration may be difficult to translate to a non-Nix system.
|
|||||||
|
|
||||||
This repo contains a few more elaborate elements of configuration.
|
This repo contains a few more elaborate elements of configuration.
|
||||||
|
|
||||||
- [Neovim config](./modules/common/neovim/default.nix) generated with Nix2Vim
|
- [Neovim config](./pkgs/applications/editors/neovim/nmasur/neovim/package.nix)
|
||||||
and source-controlled plugins, differing based on installed LSPs, for example.
|
generated with Nix2Vim and source-controlled plugins,
|
||||||
- [Caddy JSON](./modules/nixos/services/caddy.nix) file (routes, etc.) based
|
differing based on installed LSPs, for example. - [Caddy
|
||||||
dynamically on enabled services rendered with Nix.
|
JSON](./platforms/nixos/modules/nmasur/presets/services/caddy.nix) file (routes,
|
||||||
- [Grafana config](./modules/nixos/services/grafana.nix) rendered with Nix.
|
etc.) based dynamically on enabled services rendered with Nix. - [Grafana
|
||||||
- Custom [secrets deployment](./modules/nixos/services/secrets.nix) similar to
|
config](./platforms/nixos/modules/nmasur/presets/services/grafana/grafana.nix)
|
||||||
agenix.
|
rendered with Nix. - Custom [secrets
|
||||||
- Base16 [colorschemes](./colorscheme/) applied to multiple applications,
|
deployment](./platforms/nixos/modules/secrets.nix) similar to agenix. - Base16
|
||||||
including Firefox userChrome.
|
[colorschemes](./colorscheme/) applied to multiple applications, including
|
||||||
|
Firefox userChrome.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
72
flake.lock
generated
72
flake.lock
generated
@@ -334,6 +334,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728538411,
|
||||||
|
"narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
@@ -372,9 +388,28 @@
|
|||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"wsl": "wsl",
|
"wsl": "wsl",
|
||||||
|
"zellij-switch": "zellij-switch",
|
||||||
"zenyd-mpv-scripts": "zenyd-mpv-scripts"
|
"zenyd-mpv-scripts": "zenyd-mpv-scripts"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736476219,
|
||||||
|
"narHash": "sha256-+qyv3QqdZCdZ3cSO/cbpEY6tntyYjfe1bB12mdpNFaY=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "de30cc5963da22e9742bbbbb9a3344570ed237b9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689347925,
|
"lastModified": 1689347925,
|
||||||
@@ -405,6 +440,21 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -447,6 +497,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"zellij-switch": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay",
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737011317,
|
||||||
|
"narHash": "sha256-A8VGuw/jIw+NCo5aCYy8MFrWpKzZLf77RApGGMzHxCY=",
|
||||||
|
"owner": "mostafaqanbaryan",
|
||||||
|
"repo": "zellij-switch",
|
||||||
|
"rev": "15b02834c8be735fca0d9fb41f48709f97cc9afc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "mostafaqanbaryan",
|
||||||
|
"repo": "zellij-switch",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"zenyd-mpv-scripts": {
|
"zenyd-mpv-scripts": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@@ -64,6 +64,12 @@
|
|||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Zellij Switcher
|
||||||
|
zellij-switch = {
|
||||||
|
url = "github:mostafaqanbaryan/zellij-switch";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
# Nextcloud Apps
|
# Nextcloud Apps
|
||||||
nextcloud-news = {
|
nextcloud-news = {
|
||||||
# https://github.com/nextcloud/news/releases
|
# https://github.com/nextcloud/news/releases
|
||||||
|
@@ -25,6 +25,7 @@ rec {
|
|||||||
nmasur.profiles = {
|
nmasur.profiles = {
|
||||||
common.enable = true;
|
common.enable = true;
|
||||||
linux-base.enable = true;
|
linux-base.enable = true;
|
||||||
|
power-user.enable = true;
|
||||||
};
|
};
|
||||||
home.stateVersion = "23.05";
|
home.stateVersion = "23.05";
|
||||||
};
|
};
|
||||||
|
@@ -66,6 +66,7 @@ lib
|
|||||||
overlays = [
|
overlays = [
|
||||||
inputs.nur.overlays.default
|
inputs.nur.overlays.default
|
||||||
inputs.nix2vim.overlay
|
inputs.nix2vim.overlay
|
||||||
|
inputs.zellij-switch.overlays.default
|
||||||
] ++ (importOverlays ../overlays);
|
] ++ (importOverlays ../overlays);
|
||||||
|
|
||||||
# System types to support.
|
# System types to support.
|
||||||
|
@@ -8,7 +8,7 @@ TEXT_FILE="/tmp/ocr.txt"
|
|||||||
IMAGE_FILE="/tmp/ocr.png"
|
IMAGE_FILE="/tmp/ocr.png"
|
||||||
|
|
||||||
function notify-send() {
|
function notify-send() {
|
||||||
/usr/bin/osascript -e "display notification \"$2\" with title \"OCR\""
|
/usr/bin/osascript -e "display notification \"$2\" with title \"OCR\""
|
||||||
}
|
}
|
||||||
|
|
||||||
PATH="/usr/local/bin/:$PATH"
|
PATH="/usr/local/bin/:$PATH"
|
||||||
@@ -32,8 +32,8 @@ STATUS=$?
|
|||||||
# specify /tmp/ocr.txt as the file path, tesseract would out the text to
|
# specify /tmp/ocr.txt as the file path, tesseract would out the text to
|
||||||
# /tmp/ocr.txt.txt
|
# /tmp/ocr.txt.txt
|
||||||
cd /tmp || {
|
cd /tmp || {
|
||||||
echo "Failed to jump to directory."
|
echo "Failed to jump to directory."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
tesseract "$IMAGE_FILE" "${TEXT_FILE//\.txt/}"
|
tesseract "$IMAGE_FILE" "${TEXT_FILE//\.txt/}"
|
||||||
|
|
||||||
@@ -41,8 +41,8 @@ tesseract "$IMAGE_FILE" "${TEXT_FILE//\.txt/}"
|
|||||||
# of lines in the file
|
# of lines in the file
|
||||||
LINES=$(wc -l <$TEXT_FILE)
|
LINES=$(wc -l <$TEXT_FILE)
|
||||||
if [ "$LINES" -eq 0 ]; then
|
if [ "$LINES" -eq 0 ]; then
|
||||||
notify-send "ocr" "no text was detected"
|
notify-send "ocr" "no text was detected"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Copy text to clipboard
|
# Copy text to clipboard
|
||||||
|
@@ -30,6 +30,13 @@ in
|
|||||||
window-decoration = false;
|
window-decoration = false;
|
||||||
macos-non-native-fullscreen = true;
|
macos-non-native-fullscreen = true;
|
||||||
fullscreen = true;
|
fullscreen = true;
|
||||||
|
keybind = [
|
||||||
|
"super+t=unbind" # Pass super-t to underlying tool (e.g. zellij tabs)
|
||||||
|
"super+shift+]=unbind"
|
||||||
|
"super+shift+[=unbind"
|
||||||
|
"ctrl+tab=unbind"
|
||||||
|
"ctrl+shift+tab=unbind"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
themes."gruvbox" = {
|
themes."gruvbox" = {
|
||||||
background = config.theme.colors.base00;
|
background = config.theme.colors.base00;
|
||||||
|
@@ -32,7 +32,7 @@ in
|
|||||||
userName = cfg.name;
|
userName = cfg.name;
|
||||||
userEmail = cfg.email;
|
userEmail = cfg.email;
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
core.pager = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight | less -F";
|
core.pager = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight | less --no-init";
|
||||||
interactive.difffilter = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight";
|
interactive.difffilter = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight";
|
||||||
pager = {
|
pager = {
|
||||||
branch = "false";
|
branch = "false";
|
||||||
|
@@ -35,6 +35,8 @@ in
|
|||||||
|
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.helix; # pkgs.evil-helix
|
||||||
|
|
||||||
languages = {
|
languages = {
|
||||||
|
|
||||||
language-server.nixd = {
|
language-server.nixd = {
|
||||||
@@ -45,19 +47,116 @@ in
|
|||||||
command = "${pkgs.fish-lsp}/bin/fish-lsp";
|
command = "${pkgs.fish-lsp}/bin/fish-lsp";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
language-server.yaml-language-server = {
|
||||||
|
command = lib.getExe pkgs.yaml-language-server;
|
||||||
|
};
|
||||||
|
|
||||||
|
language-server.marksman = {
|
||||||
|
command = lib.getExe pkgs.marksman;
|
||||||
|
};
|
||||||
|
|
||||||
|
language-server.terraform-ls = {
|
||||||
|
command = "${lib.getExe pkgs.terraform-ls} serve";
|
||||||
|
};
|
||||||
|
|
||||||
|
language-server.bash-language-server = {
|
||||||
|
command = lib.getExe (
|
||||||
|
pkgs.bash-language-server.overrideAttrs {
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.shellcheck
|
||||||
|
pkgs.shfmt
|
||||||
|
];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
language = [
|
language = [
|
||||||
{
|
{
|
||||||
name = "nix";
|
name = "nix";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
language-servers = [ "nixd" ];
|
language-servers = [ "nixd" ];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "markdown";
|
||||||
|
auto-format = true;
|
||||||
|
language-servers = [ "marksman" ];
|
||||||
|
formatter = {
|
||||||
|
command = lib.getExe pkgs.mdformat;
|
||||||
|
args = [ "-" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "tfvars";
|
||||||
|
auto-format = true;
|
||||||
|
language-servers = [ "terraform-ls" ];
|
||||||
|
formatter = {
|
||||||
|
command = lib.getExe pkgs.terraform;
|
||||||
|
args = [
|
||||||
|
"fmt"
|
||||||
|
"-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "hcl";
|
||||||
|
auto-format = true;
|
||||||
|
language-servers = [ "terraform-ls" ];
|
||||||
|
formatter = {
|
||||||
|
command = lib.getExe pkgs.terraform;
|
||||||
|
args = [
|
||||||
|
"fmt"
|
||||||
|
"-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "bash";
|
||||||
|
auto-format = true;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
theme = "base16";
|
theme = "base16";
|
||||||
|
|
||||||
|
keys.normal = {
|
||||||
|
# Enable and disable inlay hints
|
||||||
|
space.H = ":toggle lsp.display-inlay-hints";
|
||||||
|
|
||||||
|
# Extend selection above
|
||||||
|
X = "select_line_above";
|
||||||
|
|
||||||
|
# Move lines up or down
|
||||||
|
A-j = [
|
||||||
|
"extend_to_line_bounds"
|
||||||
|
"delete_selection"
|
||||||
|
"paste_after"
|
||||||
|
];
|
||||||
|
A-k = [
|
||||||
|
"extend_to_line_bounds"
|
||||||
|
"delete_selection"
|
||||||
|
"move_line_up"
|
||||||
|
"paste_before"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Copy lines up or down
|
||||||
|
A-J = [
|
||||||
|
"extend_to_line_bounds"
|
||||||
|
"yank"
|
||||||
|
"paste_after"
|
||||||
|
];
|
||||||
|
|
||||||
|
A-K = [
|
||||||
|
"extend_to_line_bounds"
|
||||||
|
"yank"
|
||||||
|
"paste_before"
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
editor = {
|
editor = {
|
||||||
|
|
||||||
# Change cursors depending on the mode
|
# Change cursors depending on the mode
|
||||||
cursor-shape = {
|
cursor-shape = {
|
||||||
insert = "bar";
|
insert = "bar";
|
||||||
@@ -65,6 +164,11 @@ in
|
|||||||
select = "underline";
|
select = "underline";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Text width
|
||||||
|
soft-wrap = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
# View line numbers relative to the current cursors
|
# View line numbers relative to the current cursors
|
||||||
line-number = "relative";
|
line-number = "relative";
|
||||||
|
|
||||||
@@ -120,7 +224,7 @@ in
|
|||||||
"string" = config.theme.colors.base0B;
|
"string" = config.theme.colors.base0B;
|
||||||
"type" = config.theme.colors.base0A;
|
"type" = config.theme.colors.base0A;
|
||||||
"variable" = config.theme.colors.base08;
|
"variable" = config.theme.colors.base08;
|
||||||
"variable.other.member" = config.theme.colors.base0B;
|
"variable.other.member" = config.theme.colors.base05;
|
||||||
"warning" = config.theme.colors.base09;
|
"warning" = config.theme.colors.base09;
|
||||||
"markup.bold" = {
|
"markup.bold" = {
|
||||||
fg = config.theme.colors.base0A;
|
fg = config.theme.colors.base0A;
|
||||||
@@ -226,10 +330,10 @@ in
|
|||||||
bg = config.theme.colors.base01;
|
bg = config.theme.colors.base01;
|
||||||
};
|
};
|
||||||
"ui.selection" = {
|
"ui.selection" = {
|
||||||
bg = config.theme.colors.base02;
|
bg = config.theme.colors.base01;
|
||||||
};
|
};
|
||||||
"ui.selection.primary" = {
|
"ui.selection.primary" = {
|
||||||
bg = config.theme.colors.base03;
|
bg = config.theme.colors.base02;
|
||||||
};
|
};
|
||||||
"ui.statusline" = {
|
"ui.statusline" = {
|
||||||
fg = config.theme.colors.base04;
|
fg = config.theme.colors.base04;
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
@@ -14,6 +15,44 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
home.packages = [ pkgs.zellij-switch ];
|
||||||
|
|
||||||
|
programs.fish = {
|
||||||
|
shellAbbrs.z = "zellij";
|
||||||
|
functions = {
|
||||||
|
zellij-session = {
|
||||||
|
# description = "Open a session in Zellij";
|
||||||
|
body = # fish
|
||||||
|
''
|
||||||
|
zoxide query --interactive | xargs -I {} sh -c 'zellij pipe --plugin file:$(which zellij-switch.wasm) -- "--cwd {} --layout default --session $(basename {})"' \\;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."zellij/layouts/compact-top.kdl".text = # kdl
|
||||||
|
''
|
||||||
|
layout {
|
||||||
|
pane size=1 borderless=true {
|
||||||
|
plugin location="compact-bar"
|
||||||
|
}
|
||||||
|
pane
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
xdg.configFile."zellij/layouts/default.kdl".text = # kdl
|
||||||
|
''
|
||||||
|
layout {
|
||||||
|
pane size=1 borderless=true {
|
||||||
|
plugin location="tab-bar"
|
||||||
|
}
|
||||||
|
pane
|
||||||
|
pane size=1 borderless=true {
|
||||||
|
plugin location="status-bar"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
programs.zellij = {
|
programs.zellij = {
|
||||||
|
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -21,70 +60,61 @@ in
|
|||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
|
||||||
|
# Not yet available in unstable
|
||||||
|
# attachExistingSession = true;
|
||||||
|
# exitShellOnExit = true;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
# default_layout = "compact-top";
|
||||||
# Remove border
|
# Remove border
|
||||||
pane_frames = false;
|
pane_frames = false;
|
||||||
|
# Scrollback
|
||||||
|
scrollback_editor = config.home.sessionVariables.EDITOR;
|
||||||
|
# plugins = {
|
||||||
|
# autolock = {
|
||||||
|
# _props = {
|
||||||
|
# location = "https://github.com/fresh2dev/zellij-autolock/releases/download/0.2.2/zellij-autolock.wasm";
|
||||||
|
# };
|
||||||
|
# is_enabled = {
|
||||||
|
# _args = [ true ];
|
||||||
|
# };
|
||||||
|
# triggers = {
|
||||||
|
# _args = [ "vim|nvim|hx|git|fzf|zoxide|atuin|gh" ];
|
||||||
|
# };
|
||||||
|
# reaction_seconds = {
|
||||||
|
# _args = [ "0.3" ];
|
||||||
|
# };
|
||||||
|
# print_to_log = {
|
||||||
|
# _args = [ true ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# load_plugins = {
|
||||||
|
# autolock = { };
|
||||||
|
# };
|
||||||
keybinds = {
|
keybinds = {
|
||||||
# _props = {
|
|
||||||
# clear-defaults = true;
|
|
||||||
# };
|
|
||||||
unbind = {
|
|
||||||
_args = [
|
|
||||||
"Ctrl g"
|
|
||||||
"Ctrl h"
|
|
||||||
"Ctrl n"
|
|
||||||
"Ctrl o"
|
|
||||||
"Ctrl p"
|
|
||||||
"Ctrl q"
|
|
||||||
"Ctrl s"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
normal = {
|
normal = {
|
||||||
"bind \"Alt l\"" = {
|
|
||||||
SwitchToMode = {
|
|
||||||
_args = [ "locked" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt p\"" = {
|
|
||||||
SwitchToMode = {
|
|
||||||
_args = [ "pane" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt t\"" = {
|
|
||||||
SwitchToMode = {
|
|
||||||
_args = [ "tab" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt r\"" = {
|
|
||||||
SwitchToMode = {
|
|
||||||
_args = [ "resize" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt m\"" = {
|
|
||||||
SwitchToMode = {
|
|
||||||
_args = [ "move" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt k\"" = {
|
|
||||||
SwitchToMode = {
|
|
||||||
_args = [ "search" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt o\"" = {
|
|
||||||
SwitchToMode = {
|
|
||||||
_args = [ "session" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt q\"" = {
|
|
||||||
"Quit" = { };
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
locked = {
|
shared = {
|
||||||
"bind \"Alt l\"" = {
|
"bind \"Alt Shift p\"" = {
|
||||||
SwitchToMode = {
|
"Run" = {
|
||||||
_args = [ "Normal" ];
|
_args = [
|
||||||
|
"${pkgs.fish}/bin/fish"
|
||||||
|
"-c"
|
||||||
|
"zellij-session"
|
||||||
|
];
|
||||||
|
close_on_exit = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
"bind \"Super Shift ]\"" = {
|
||||||
|
"GoToNextTab" = { };
|
||||||
|
};
|
||||||
|
"bind \"Super Shift [\"" = {
|
||||||
|
"GoToPreviousTab" = { };
|
||||||
|
};
|
||||||
|
"bind \"Super t\"" = {
|
||||||
|
"NewTab" = { };
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@@ -31,6 +31,8 @@ in
|
|||||||
# Used for aerc
|
# Used for aerc
|
||||||
xdg.enable = lib.mkDefault pkgs.stdenv.isDarwin;
|
xdg.enable = lib.mkDefault pkgs.stdenv.isDarwin;
|
||||||
|
|
||||||
|
programs.fish.shellAbbrs.t = "trash";
|
||||||
|
|
||||||
# Add homebrew paths to CLI path
|
# Add homebrew paths to CLI path
|
||||||
home.sessionPath = [
|
home.sessionPath = [
|
||||||
"/opt/homebrew/bin/"
|
"/opt/homebrew/bin/"
|
||||||
|
@@ -31,6 +31,8 @@ in
|
|||||||
pkgs.charm # Manage account and filesystem
|
pkgs.charm # Manage account and filesystem
|
||||||
pkgs.pop # Send emails from a TUI
|
pkgs.pop # Send emails from a TUI
|
||||||
|
|
||||||
|
pkgs.yazi # TUI file explorer
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.gh-dash.enable = lib.mkDefault true;
|
programs.gh-dash.enable = lib.mkDefault true;
|
||||||
|
@@ -15,25 +15,26 @@ in
|
|||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.age # Encryption
|
pkgs.age # Encryption
|
||||||
pkgs.bc # Calculator
|
pkgs.bc # Calculator
|
||||||
|
pkgs.bottom # System monitor (top)
|
||||||
pkgs.delta # Fancy diffs
|
pkgs.delta # Fancy diffs
|
||||||
pkgs.difftastic # Other fancy diffs
|
pkgs.difftastic # Other fancy diffs
|
||||||
|
pkgs.doggo # DNS client (dig)
|
||||||
|
pkgs.du-dust # Disk usage tree (ncdu)
|
||||||
|
pkgs.dua # File sizes (du)
|
||||||
|
pkgs.duf # Basic disk information (df)
|
||||||
pkgs.jless # JSON viewer
|
pkgs.jless # JSON viewer
|
||||||
pkgs.jo # JSON output
|
pkgs.jo # JSON output
|
||||||
|
pkgs.mpd # TUI slideshows
|
||||||
|
pkgs.nmasur.jqr # FZF fq JSON tool
|
||||||
pkgs.nmasur.osc # Clipboard over SSH
|
pkgs.nmasur.osc # Clipboard over SSH
|
||||||
pkgs.qrencode # Generate qr codes
|
|
||||||
pkgs.nmasur.ren-find # Rename files
|
pkgs.nmasur.ren-find # Rename files
|
||||||
pkgs.nmasur.rep-grep # Replace text in files
|
pkgs.nmasur.rep-grep # Replace text in files
|
||||||
|
pkgs.pandoc # Convert text documents
|
||||||
|
pkgs.qrencode # Generate qr codes
|
||||||
pkgs.spacer # Output lines in terminal
|
pkgs.spacer # Output lines in terminal
|
||||||
pkgs.tealdeer # Cheatsheets
|
pkgs.tealdeer # Cheatsheets
|
||||||
|
pkgs.tree # Print tree in terminal
|
||||||
pkgs.vimv-rs # Batch rename files
|
pkgs.vimv-rs # Batch rename files
|
||||||
pkgs.dua # File sizes (du)
|
|
||||||
pkgs.du-dust # Disk usage tree (ncdu)
|
|
||||||
pkgs.duf # Basic disk information (df)
|
|
||||||
pkgs.pandoc # Convert text documents
|
|
||||||
pkgs.mpd # TUI slideshows
|
|
||||||
pkgs.doggo # DNS client (dig)
|
|
||||||
pkgs.bottom # System monitor (top)
|
|
||||||
pkgs.nmasur.jqr # FZF fq JSON tool
|
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.fish.shellAliases = {
|
programs.fish.shellAliases = {
|
||||||
|
@@ -36,6 +36,7 @@ in
|
|||||||
homebrew.casks = [
|
homebrew.casks = [
|
||||||
"scroll-reverser" # Different scroll style for mouse vs. trackpad
|
"scroll-reverser" # Different scroll style for mouse vs. trackpad
|
||||||
"notunes" # Don't launch Apple Music with the play button
|
"notunes" # Don't launch Apple Music with the play button
|
||||||
|
"topnotch" # Darkens the menu bar to complete black
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@@ -243,7 +243,7 @@ in
|
|||||||
prefix = "API_KEY=";
|
prefix = "API_KEY=";
|
||||||
};
|
};
|
||||||
secrets.readarrApiKey = {
|
secrets.readarrApiKey = {
|
||||||
source = ./radarr-api-key.age;
|
source = ./readarr-api-key.age;
|
||||||
dest = "/var/private/readarr-api";
|
dest = "/var/private/readarr-api";
|
||||||
prefix = "API_KEY=";
|
prefix = "API_KEY=";
|
||||||
};
|
};
|
||||||
|
@@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBRRXo3
|
||||||
|
ZmpER1kyWC9JUld3WVVTS0owb1RRZFhzNHRtT0dickJhbnQ1UWxRCjBIR3JxbGho
|
||||||
|
c2h0bk8vV2lta2NzcXl0OXZYTzJ0ZkhNV3lPTVl0ZjQ0b00KLT4gc3NoLWVkMjU1
|
||||||
|
MTkgWXlTVU1RIHlMWW4zNnJCTGNwcFRxOTQrTldzRFlENGd1TG4yRFJSQlhnSHVL
|
||||||
|
TGlWdzAKMlZ4L0thbFZQWjZ0c3pJaE1XNmRtZmNKVTIxeTkwMFFGYWxKZTRMV3h0
|
||||||
|
VQotPiBzc2gtZWQyNTUxOSBuanZYNUEgbm5pVE0zYzNQTW15c01DRk1HeDRLVlRW
|
||||||
|
aGpkVUFHdG13THNDL1JlbEUyawp6SWQ5Nm1veDdwbCtDbjZPUkhQU0hkRXE1b1RY
|
||||||
|
ZkxHY0ZqMFdvcGJ6WitvCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBWeE1LaU5TRkpK
|
||||||
|
bElLQWNidHZQeTF6Yk80ZzVlL005RTEyZzlDR2dTSGg0CkdZK2VDSGtMTE43VWRY
|
||||||
|
ZnA0cDRKc016OVYvZGpDcDFad3o5YmpoOGhVNGsKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
|
Y1p3IDBEV3pWVEI3QjFRUnRjK0VPZFF6U09iTHljOE9jZ1lka1lpbU9BSEtOeFUK
|
||||||
|
RlF0WEFBMElzU1pOdDBEenUrWEhsaFkrTWpUc0gzb1hVRjVpUGpyc25FcwotLS0g
|
||||||
|
aXhPbUtHWXc4MXJ4bUtZOWlkdVNOMmo1N1U2NXlxdU5VVXltZXh5aDRyWQoCjoWs
|
||||||
|
rOf41MK9789YHLzXMZNbMoWt9tHGfOGZKOyPhYFq/j2d88ZLtzEHAuHKvQ561ffK
|
||||||
|
Si0uTiTcTCyhCr/rsQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
@@ -26,6 +26,7 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
services.calibre-web = {
|
services.calibre-web = {
|
||||||
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
options = {
|
options = {
|
||||||
reverseProxyAuth.enable = false;
|
reverseProxyAuth.enable = false;
|
||||||
|
@@ -17,7 +17,7 @@ in
|
|||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud30; # Required to specify
|
package = pkgs.nextcloud31; # Required to specify
|
||||||
configureRedis = true;
|
configureRedis = true;
|
||||||
datadir = "/data/nextcloud";
|
datadir = "/data/nextcloud";
|
||||||
database.createLocally = true;
|
database.createLocally = true;
|
||||||
@@ -42,10 +42,10 @@ in
|
|||||||
calendar = config.services.nextcloud.package.packages.apps.calendar;
|
calendar = config.services.nextcloud.package.packages.apps.calendar;
|
||||||
contacts = config.services.nextcloud.package.packages.apps.contacts;
|
contacts = config.services.nextcloud.package.packages.apps.contacts;
|
||||||
# These apps are defined and pinned by overlay in flake.
|
# These apps are defined and pinned by overlay in flake.
|
||||||
news = pkgs.nextcloudApps.news;
|
# news = pkgs.nextcloudApps.news;
|
||||||
external = pkgs.nextcloudApps.external;
|
# external = pkgs.nextcloudApps.external;
|
||||||
cookbook = pkgs.nextcloudApps.cookbook;
|
# cookbook = pkgs.nextcloudApps.cookbook;
|
||||||
snappymail = pkgs.nextcloudApps.snappymail;
|
# snappymail = pkgs.nextcloudApps.snappymail;
|
||||||
};
|
};
|
||||||
phpOptions = {
|
phpOptions = {
|
||||||
"opcache.interned_strings_buffer" = "16";
|
"opcache.interned_strings_buffer" = "16";
|
||||||
|
@@ -23,6 +23,7 @@ in
|
|||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
nix.enable = lib.mkDefault true;
|
nix.enable = lib.mkDefault true;
|
||||||
|
prometheus-exporters.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -30,7 +30,7 @@ in
|
|||||||
litestream.enable = lib.mkDefault true;
|
litestream.enable = lib.mkDefault true;
|
||||||
minecraft-server.enable = lib.mkDefault true;
|
minecraft-server.enable = lib.mkDefault true;
|
||||||
n8n.enable = lib.mkDefault true;
|
n8n.enable = lib.mkDefault true;
|
||||||
nix-autoupgrade.enable = lib.mkDefault true; # On by default for communications
|
nix-autoupgrade.enable = lib.mkDefault false; # On by default for communications
|
||||||
ntfy-sh.enable = lib.mkDefault true;
|
ntfy-sh.enable = lib.mkDefault true;
|
||||||
postgresql.enable = lib.mkDefault true;
|
postgresql.enable = lib.mkDefault true;
|
||||||
thelounge.enable = lib.mkDefault true;
|
thelounge.enable = lib.mkDefault true;
|
||||||
|
@@ -19,6 +19,7 @@ in
|
|||||||
nmasur.presets.services = {
|
nmasur.presets.services = {
|
||||||
# Configure physical power buttons
|
# Configure physical power buttons
|
||||||
logind.enable = lib.mkDefault true;
|
logind.enable = lib.mkDefault true;
|
||||||
|
avahi.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable automatic timezone updates based on location
|
# Enable automatic timezone updates based on location
|
||||||
|
Reference in New Issue
Block a user