Compare commits
6 Commits
dc74538cfe
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 3861962566 | |||
| 4361d9b9b6 | |||
| 4493790d72 | |||
| 7d5a0d4759 | |||
| f7164dd172 | |||
| 81a729ea06 |
21
flake.lock
generated
21
flake.lock
generated
@@ -404,6 +404,21 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"monorepo": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1788059616,
|
||||||
|
"narHash": "sha256-HBYT3h0vXRsvmgPOhUW3kgPTkgdl73PEwRTJQ5X48aM=",
|
||||||
|
"path": "/home/alexion/dev",
|
||||||
|
"type": "path"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"path": "/home/alexion/dev",
|
||||||
|
"type": "path"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -542,8 +557,12 @@
|
|||||||
"firefox-addons": "firefox-addons",
|
"firefox-addons": "firefox-addons",
|
||||||
"gitea-axi": "gitea-axi",
|
"gitea-axi": "gitea-axi",
|
||||||
"home-manager": "home-manager_3",
|
"home-manager": "home-manager_3",
|
||||||
|
"monorepo": "monorepo",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": [
|
||||||
|
"monorepo",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
|
|||||||
@@ -2,8 +2,10 @@
|
|||||||
description = "Alexion's NixOS configuration — one flake for every host";
|
description = "Alexion's NixOS configuration — one flake for every host";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# Base channel.
|
monorepo.url = "path:/home/alexion/dev";
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
||||||
|
# Base package set shared with the monorepo.
|
||||||
|
nixpkgs.follows = "monorepo/nixpkgs";
|
||||||
|
|
||||||
# Fresher packages, reachable per-package as `unstable.<name>`.
|
# Fresher packages, reachable per-package as `unstable.<name>`.
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||||
|
|||||||
@@ -121,5 +121,6 @@ in
|
|||||||
modules.shell.nvim.enable = lib.mkDefault true;
|
modules.shell.nvim.enable = lib.mkDefault true;
|
||||||
modules.shell.git.enable = lib.mkDefault true;
|
modules.shell.git.enable = lib.mkDefault true;
|
||||||
modules.shell.direnv.enable = lib.mkDefault true;
|
modules.shell.direnv.enable = lib.mkDefault true;
|
||||||
|
modules.shell.yazi.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
18
modules/desktop/apps/ghostty.nix
Normal file
18
modules/desktop/apps/ghostty.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
# Ghostty as the desktop terminal.
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.apps.ghostty;
|
||||||
|
user = config.user.name;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.desktop.apps.ghostty.enable = lib.mkEnableOption "Ghostty as the desktop terminal";
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home-manager.users.${user}.home.packages = [ pkgs.ghostty ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -9,8 +9,8 @@ in
|
|||||||
# Each piece is turned on at default priority, so a host can still override
|
# Each piece is turned on at default priority, so a host can still override
|
||||||
# any one of them while the single flag above enables the whole desktop.
|
# any one of them while the single flag above enables the whole desktop.
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
modules.desktop.apps.alacritty.enable = lib.mkDefault true;
|
|
||||||
modules.desktop.apps.firefox.enable = lib.mkDefault true;
|
modules.desktop.apps.firefox.enable = lib.mkDefault true;
|
||||||
|
modules.desktop.apps.ghostty.enable = lib.mkDefault true;
|
||||||
modules.desktop.session.hyprland.enable = lib.mkDefault true;
|
modules.desktop.session.hyprland.enable = lib.mkDefault true;
|
||||||
modules.desktop.session.hyprland.hypridle.enable = lib.mkDefault true;
|
modules.desktop.session.hyprland.hypridle.enable = lib.mkDefault true;
|
||||||
modules.desktop.session.hyprland.hyprlock.enable = lib.mkDefault true;
|
modules.desktop.session.hyprland.hyprlock.enable = lib.mkDefault true;
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ in
|
|||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
"$terminal" = "alacritty";
|
"$terminal" = "ghostty";
|
||||||
|
|
||||||
# Session variables handed to the compositor directly.
|
# Session variables handed to the compositor directly.
|
||||||
# UWSM launches the session without the shell profile that would carry
|
# UWSM launches the session without the shell profile that would carry
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ in
|
|||||||
window-rewrite-default = g "f2d0";
|
window-rewrite-default = g "f2d0";
|
||||||
window-rewrite = {
|
window-rewrite = {
|
||||||
"class<Alacritty>" = g "f120";
|
"class<Alacritty>" = g "f120";
|
||||||
|
"class<com.mitchellh.ghostty>" = g "f120";
|
||||||
"class<.*[Ff]irefox.*>" = g "f269";
|
"class<.*[Ff]irefox.*>" = g "f269";
|
||||||
"class<chromium.*>" = g "f268";
|
"class<chromium.*>" = g "f268";
|
||||||
"class<[Cc]ode>" = g "f121";
|
"class<[Cc]ode>" = g "f121";
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ in
|
|||||||
# nix-direnv caches the evaluated shell so re-entering a directory is instant
|
# nix-direnv caches the evaluated shell so re-entering a directory is instant
|
||||||
# instead of re-running `nix develop`, and adds the `use flake` stdlib helper.
|
# instead of re-running `nix develop`, and adds the `use flake` stdlib helper.
|
||||||
nix-direnv.enable = true;
|
nix-direnv.enable = true;
|
||||||
|
stdlib = builtins.readFile ./repo-flake.sh;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
33
modules/shell/direnv/repo-flake.sh
Normal file
33
modules/shell/direnv/repo-flake.sh
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
if declare -f use_flake >/dev/null; then
|
||||||
|
__dotfiles_use_flake_definition="$(declare -f use_flake)"
|
||||||
|
eval "${__dotfiles_use_flake_definition/use_flake/__dotfiles_nix_direnv_use_flake}"
|
||||||
|
unset __dotfiles_use_flake_definition
|
||||||
|
|
||||||
|
use_flake() {
|
||||||
|
local flake_expr="${1:-.}"
|
||||||
|
|
||||||
|
if [[ "$flake_expr" == //* ]]; then
|
||||||
|
local git_root
|
||||||
|
if ! git_root="$(git rev-parse --show-toplevel 2>/dev/null)"; then
|
||||||
|
log_error 'use flake // requires a Git repository'
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local flake_suffix="${flake_expr#//}"
|
||||||
|
if [[ -n "$flake_suffix" && "$flake_suffix" != \#* && "$flake_suffix" != /* ]]; then
|
||||||
|
flake_expr="path:${git_root}/${flake_suffix}"
|
||||||
|
else
|
||||||
|
flake_expr="path:${git_root}${flake_suffix}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
shift
|
||||||
|
__dotfiles_nix_direnv_use_flake "$flake_expr" "$@"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
__dotfiles_nix_direnv_use_flake "$@"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
log_error 'nix-direnv must define use_flake before the // wrapper loads'
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
@@ -38,6 +38,9 @@ in
|
|||||||
|
|
||||||
[ui]
|
[ui]
|
||||||
prompt_new_tab_name = false
|
prompt_new_tab_name = false
|
||||||
|
|
||||||
|
[experimental]
|
||||||
|
kitty_graphics = true
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,6 +16,16 @@ vim.api.nvim_create_autocmd("FileType", {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Soft-wrap prose buffers without inserting line breaks.
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = { "gitcommit", "markdown", "text" },
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.wrap = true
|
||||||
|
vim.opt_local.linebreak = true
|
||||||
|
vim.opt_local.breakindent = true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
-- Turn line blame off again once the Neogit status buffer is closed.
|
-- Turn line blame off again once the Neogit status buffer is closed.
|
||||||
vim.api.nvim_create_autocmd("BufUnload", {
|
vim.api.nvim_create_autocmd("BufUnload", {
|
||||||
callback = function(args)
|
callback = function(args)
|
||||||
|
|||||||
@@ -92,6 +92,18 @@ in
|
|||||||
action = "<cmd>nohlsearch<CR>";
|
action = "<cmd>nohlsearch<CR>";
|
||||||
options.desc = "Clear search highlight";
|
options.desc = "Clear search highlight";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "j";
|
||||||
|
action = "gj";
|
||||||
|
options.desc = "Move down by display line";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "k";
|
||||||
|
action = "gk";
|
||||||
|
options.desc = "Move up by display line";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
mode = "n";
|
mode = "n";
|
||||||
key = "<leader>e";
|
key = "<leader>e";
|
||||||
|
|||||||
32
modules/shell/yazi.nix
Normal file
32
modules/shell/yazi.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
# Yazi, a terminal file manager.
|
||||||
|
let
|
||||||
|
cfg = config.modules.shell.yazi;
|
||||||
|
user = config.user.name;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.shell.yazi.enable = lib.mkEnableOption "Yazi, a terminal file manager";
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home-manager.users.${user}.programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
fd
|
||||||
|
ffmpegthumbnailer
|
||||||
|
fzf
|
||||||
|
imagemagick
|
||||||
|
jq
|
||||||
|
poppler
|
||||||
|
ripgrep
|
||||||
|
unar
|
||||||
|
zoxide
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user