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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -542,8 +557,12 @@
|
||||
"firefox-addons": "firefox-addons",
|
||||
"gitea-axi": "gitea-axi",
|
||||
"home-manager": "home-manager_3",
|
||||
"monorepo": "monorepo",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs": [
|
||||
"monorepo",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nixvim": "nixvim",
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
description = "Alexion's NixOS configuration — one flake for every host";
|
||||
|
||||
inputs = {
|
||||
# Base channel.
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
monorepo.url = "path:/home/alexion/dev";
|
||||
|
||||
# Base package set shared with the monorepo.
|
||||
nixpkgs.follows = "monorepo/nixpkgs";
|
||||
|
||||
# Fresher packages, reachable per-package as `unstable.<name>`.
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
|
||||
@@ -121,5 +121,6 @@ in
|
||||
modules.shell.nvim.enable = lib.mkDefault true;
|
||||
modules.shell.git.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
|
||||
# any one of them while the single flag above enables the whole desktop.
|
||||
config = lib.mkIf cfg.enable {
|
||||
modules.desktop.apps.alacritty.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.hypridle.enable = lib.mkDefault true;
|
||||
modules.desktop.session.hyprland.hyprlock.enable = lib.mkDefault true;
|
||||
|
||||
@@ -61,7 +61,7 @@ in
|
||||
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
"$terminal" = "alacritty";
|
||||
"$terminal" = "ghostty";
|
||||
|
||||
# Session variables handed to the compositor directly.
|
||||
# UWSM launches the session without the shell profile that would carry
|
||||
|
||||
@@ -89,6 +89,7 @@ in
|
||||
window-rewrite-default = g "f2d0";
|
||||
window-rewrite = {
|
||||
"class<Alacritty>" = g "f120";
|
||||
"class<com.mitchellh.ghostty>" = g "f120";
|
||||
"class<.*[Ff]irefox.*>" = g "f269";
|
||||
"class<chromium.*>" = g "f268";
|
||||
"class<[Cc]ode>" = g "f121";
|
||||
|
||||
@@ -20,6 +20,7 @@ in
|
||||
# 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.
|
||||
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]
|
||||
prompt_new_tab_name = false
|
||||
|
||||
[experimental]
|
||||
kitty_graphics = true
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
@@ -16,6 +16,16 @@ vim.api.nvim_create_autocmd("FileType", {
|
||||
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.
|
||||
vim.api.nvim_create_autocmd("BufUnload", {
|
||||
callback = function(args)
|
||||
|
||||
@@ -92,6 +92,18 @@ in
|
||||
action = "<cmd>nohlsearch<CR>";
|
||||
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";
|
||||
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