refactor: ponytail audit
This commit is contained in:
1 parent
de8b59ec16
commit
f080ebe36e
57 files changed
+566
-2137
No files matched your search
@@ -232,9 +232,7 @@ process_scope() {
|
||||
local source processing_target recording_status signature index scope_status=0
|
||||
local -a sources signatures
|
||||
|
||||
if ! mkdir -p "$inbox_dir" "$processing_dir" "$archive_dir" "$failed_dir" "$transcript_dir"; then
|
||||
return 1
|
||||
fi
|
||||
mkdir -p "$inbox_dir" "$processing_dir" "$archive_dir" "$failed_dir" "$transcript_dir" || return 1
|
||||
|
||||
while IFS= read -r -d '' source; do
|
||||
if is_recording "$source"; then
|
||||
@@ -291,4 +289,3 @@ mkdir -p "$runtime_dir"
|
||||
|
||||
set +o errexit
|
||||
process_scope "$TRANSCRIBE_SYNC_ROOT/recordings" "$TRANSCRIBE_SYNC_ROOT/notes/transcripts"
|
||||
exit $?
|
||||
@@ -6,7 +6,6 @@
|
||||
alsa.enable = true;
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
wireplumber.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.modules.homeManager.desktop-commands =
|
||||
{ lib, ... }:
|
||||
@@ -35,56 +34,6 @@
|
||||
actualId = "ahoihnifhakgijcmjlhbcgehigihinlo";
|
||||
outlookId = "eoficlgicibekocmfdomjbfnjmehnhcd";
|
||||
whatsappId = "hnpfjngllnobngcgfapefoaidbinmjnm";
|
||||
actualDesktop = pkgs.makeDesktopItem {
|
||||
name = "vivaldi-${actualId}-Default";
|
||||
desktopName = "Actual";
|
||||
exec = appCommand actualId;
|
||||
icon = "vivaldi-${actualId}-Default";
|
||||
extraConfig.StartupWMClass = "crx_${actualId}";
|
||||
actions = {
|
||||
Accounts = {
|
||||
name = "Accounts";
|
||||
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/accounts";
|
||||
};
|
||||
"Add-Transaction" = {
|
||||
name = "Add Transaction";
|
||||
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/transactions/new";
|
||||
};
|
||||
Reports = {
|
||||
name = "Reports";
|
||||
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/reports";
|
||||
};
|
||||
};
|
||||
};
|
||||
whatsappDesktop = pkgs.makeDesktopItem {
|
||||
name = "vivaldi-${whatsappId}-Default";
|
||||
desktopName = "WhatsApp Web";
|
||||
exec = appCommand whatsappId;
|
||||
icon = "vivaldi-${whatsappId}-Default";
|
||||
extraConfig.StartupWMClass = "crx_${whatsappId}";
|
||||
};
|
||||
outlookDesktop = pkgs.makeDesktopItem {
|
||||
name = "vivaldi-${outlookId}-Default";
|
||||
desktopName = "Outlook";
|
||||
exec = "${appCommand outlookId} %U";
|
||||
icon = "vivaldi-${outlookId}-Default";
|
||||
mimeTypes = [ "x-scheme-handler/mailto" ];
|
||||
extraConfig.StartupWMClass = "crx_${outlookId}";
|
||||
actions = {
|
||||
Calendar = {
|
||||
name = "Open calendar";
|
||||
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/calendar";
|
||||
};
|
||||
Compose = {
|
||||
name = "New message";
|
||||
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/mail/deeplink/compose";
|
||||
};
|
||||
Event = {
|
||||
name = "New event";
|
||||
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/calendar/deeplink/compose";
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
desktop.commands.browser = [ command ];
|
||||
@@ -93,18 +42,53 @@
|
||||
sessionVariables.BROWSER = command;
|
||||
};
|
||||
xdg = {
|
||||
dataFile = {
|
||||
"applications/vivaldi-${actualId}-Default.desktop" = {
|
||||
force = true;
|
||||
source = "${actualDesktop}/share/applications/vivaldi-${actualId}-Default.desktop";
|
||||
desktopEntries = {
|
||||
"vivaldi-${actualId}-Default" = {
|
||||
name = "Actual";
|
||||
exec = appCommand actualId;
|
||||
icon = "vivaldi-${actualId}-Default";
|
||||
settings.StartupWMClass = "crx_${actualId}";
|
||||
actions = {
|
||||
Accounts = {
|
||||
name = "Accounts";
|
||||
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/accounts";
|
||||
};
|
||||
"Add-Transaction" = {
|
||||
name = "Add Transaction";
|
||||
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/transactions/new";
|
||||
};
|
||||
Reports = {
|
||||
name = "Reports";
|
||||
exec = "${appCommand actualId} --app-launch-url-for-shortcuts-menu-item=${config.facts.services.actual.origin}/reports";
|
||||
};
|
||||
};
|
||||
};
|
||||
"applications/vivaldi-${whatsappId}-Default.desktop" = {
|
||||
force = true;
|
||||
source = "${whatsappDesktop}/share/applications/vivaldi-${whatsappId}-Default.desktop";
|
||||
"vivaldi-${whatsappId}-Default" = {
|
||||
name = "WhatsApp Web";
|
||||
exec = appCommand whatsappId;
|
||||
icon = "vivaldi-${whatsappId}-Default";
|
||||
settings.StartupWMClass = "crx_${whatsappId}";
|
||||
};
|
||||
"applications/vivaldi-${outlookId}-Default.desktop" = {
|
||||
force = true;
|
||||
source = "${outlookDesktop}/share/applications/vivaldi-${outlookId}-Default.desktop";
|
||||
"vivaldi-${outlookId}-Default" = {
|
||||
name = "Outlook";
|
||||
exec = "${appCommand outlookId} %U";
|
||||
icon = "vivaldi-${outlookId}-Default";
|
||||
mimeType = [ "x-scheme-handler/mailto" ];
|
||||
settings.StartupWMClass = "crx_${outlookId}";
|
||||
actions = {
|
||||
Calendar = {
|
||||
name = "Open calendar";
|
||||
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/calendar";
|
||||
};
|
||||
Compose = {
|
||||
name = "New message";
|
||||
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/mail/deeplink/compose";
|
||||
};
|
||||
Event = {
|
||||
name = "New event";
|
||||
exec = "${appCommand outlookId} --app-launch-url-for-shortcuts-menu-item=https://outlook.cloud.microsoft/calendar/deeplink/compose";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
mimeApps.defaultApplicationPackages = [ pkgs.vivaldi ];
|
||||
@@ -168,9 +152,6 @@
|
||||
enable = true;
|
||||
|
||||
cacheHome = "${localDir}/cache";
|
||||
configHome = "${homeDir}/.config";
|
||||
dataHome = "${localDir}/share";
|
||||
stateHome = "${localDir}/state";
|
||||
|
||||
userDirs = {
|
||||
enable = true;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.modules.homeManager.dev-tools =
|
||||
{ config, pkgs, ... }:
|
||||
@@ -44,10 +43,7 @@
|
||||
gardenlogin
|
||||
];
|
||||
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
programs.lazygit.enable = true;
|
||||
|
||||
programs.jujutsu.enable = true;
|
||||
programs.jq.enable = true;
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
{
|
||||
flake.modules.nixos.flatpak = {
|
||||
services.flatpak.enable = true;
|
||||
};
|
||||
flake.modules.nixos.flatpak.services.flatpak.enable = true;
|
||||
}
|
||||
@@ -28,21 +28,9 @@
|
||||
];
|
||||
|
||||
fontconfig = {
|
||||
enable = true;
|
||||
antialias = true;
|
||||
allowBitmaps = false;
|
||||
useEmbeddedBitmaps = false;
|
||||
|
||||
hinting = {
|
||||
enable = true;
|
||||
autohint = false;
|
||||
style = "slight";
|
||||
};
|
||||
|
||||
subpixel = {
|
||||
rgba = "none";
|
||||
lcdfilter = "none";
|
||||
};
|
||||
subpixel.lcdfilter = "none";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
{
|
||||
flake.modules.homeManager.keyring = {
|
||||
services.gnome-keyring.enable = true;
|
||||
};
|
||||
flake.modules.homeManager.keyring.services.gnome-keyring.enable = true;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, lib, ... }:
|
||||
{ lib, ... }:
|
||||
let
|
||||
palette = (import ./_kanagawa.nix).palette;
|
||||
hex = lib.removePrefix "#";
|
||||
@@ -9,9 +9,9 @@ in
|
||||
flake.modules.nixos.limine =
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
displayValues = builtins.attrValues config.facts.machine.displays;
|
||||
primaryDisplays = lib.filter (display: display.primary) displayValues;
|
||||
primaryDisplay = if primaryDisplays == [ ] then null else builtins.head primaryDisplays;
|
||||
primaryDisplay = lib.findFirst (display: display.primary) null (
|
||||
builtins.attrValues config.facts.machine.displays
|
||||
);
|
||||
interfaceResolution =
|
||||
if primaryDisplay != null && primaryDisplay.width != null then
|
||||
"${toString primaryDisplay.width}x${toString primaryDisplay.height}"
|
||||
@@ -24,6 +24,7 @@ in
|
||||
limine = {
|
||||
enable = true;
|
||||
maxGenerations = 10;
|
||||
resolution = interfaceResolution;
|
||||
|
||||
style = {
|
||||
backdrop = hex palette.secondaryBackground;
|
||||
@@ -64,13 +65,9 @@ in
|
||||
interface = {
|
||||
branding = config.networking.hostName;
|
||||
brandingColor = hex palette.accents.blue;
|
||||
helpHidden = false;
|
||||
resolution = interfaceResolution;
|
||||
};
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs (interfaceResolution != null) {
|
||||
resolution = interfaceResolution;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,9 +4,7 @@
|
||||
{
|
||||
programs.mpv = {
|
||||
enable = true;
|
||||
bindings = {
|
||||
D = "cycle deband";
|
||||
};
|
||||
bindings.D = "cycle deband";
|
||||
config = {
|
||||
profile = "high-quality";
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
account = config.facts.account;
|
||||
homeModules = config.flake.modules.homeManager;
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.neovim =
|
||||
@@ -214,15 +213,13 @@ in
|
||||
|
||||
kulalaCorePath = "${pkgs.kulala-core}/bin/kulala-core";
|
||||
};
|
||||
|
||||
binName = "nvim";
|
||||
};
|
||||
};
|
||||
|
||||
flake.modules.homeManager.primary-editor-neovim =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ homeModules.neovim ];
|
||||
imports = [ config.flake.modules.homeManager.neovim ];
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
|
||||
@@ -5,8 +5,7 @@ for _, lhs in ipairs({ "grn", "gra", "grx", "grr", "gri", "grt", "gO" }) do
|
||||
vim.keymap.del("n", lhs)
|
||||
end
|
||||
vim.keymap.del("x", "gra")
|
||||
vim.keymap.del("i", "<C-S>")
|
||||
vim.keymap.del("s", "<C-S>")
|
||||
vim.keymap.del({ "i", "s" }, "<C-S>")
|
||||
|
||||
vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Focus left window" })
|
||||
vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Focus lower window" })
|
||||
|
||||
@@ -15,7 +15,6 @@ require("lz.n").load({
|
||||
after = function()
|
||||
require("blink.cmp").setup({
|
||||
keymap = {
|
||||
preset = "default",
|
||||
["<C-j>"] = { "select_next", "fallback" },
|
||||
["<C-k>"] = { "select_prev", "fallback" },
|
||||
["<Tab>"] = { "select_and_accept", "fallback" },
|
||||
|
||||
@@ -44,7 +44,6 @@ require("lz.n").load({
|
||||
after = function()
|
||||
require("nvim-treesitter-textobjects").setup({
|
||||
select = { lookahead = true },
|
||||
move = { set_jumps = true },
|
||||
})
|
||||
|
||||
local select = require("nvim-treesitter-textobjects.select")
|
||||
|
||||
@@ -34,8 +34,7 @@ require("lz.n").load({
|
||||
},
|
||||
},
|
||||
after = function()
|
||||
local conform = require("conform")
|
||||
conform.setup({
|
||||
require("conform").setup({
|
||||
formatters_by_ft = formatters_by_ft,
|
||||
format_on_save = function(bufnr)
|
||||
if formatters_by_ft[vim.bo[bufnr].filetype] then
|
||||
|
||||
@@ -16,12 +16,10 @@ require("lz.n").load({
|
||||
"nvim-lspconfig",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
after = function()
|
||||
local attach_group = vim.api.nvim_create_augroup("lux-lsp-attach", { clear = true })
|
||||
local detach_group = vim.api.nvim_create_augroup("lux-lsp-detach", { clear = true })
|
||||
local highlight_group = vim.api.nvim_create_augroup("lux-lsp-highlight", { clear = true })
|
||||
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
group = attach_group,
|
||||
group = vim.api.nvim_create_augroup("lux-lsp-attach", { clear = true }),
|
||||
callback = function(args)
|
||||
local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
|
||||
local bufnr = args.buf
|
||||
@@ -85,7 +83,7 @@ require("lz.n").load({
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("LspDetach", {
|
||||
group = detach_group,
|
||||
group = vim.api.nvim_create_augroup("lux-lsp-detach", { clear = true }),
|
||||
callback = function(args)
|
||||
local supports_highlights = vim
|
||||
.iter(vim.lsp.get_clients({
|
||||
|
||||
@@ -103,21 +103,15 @@ require("lz.n").load({
|
||||
actions.smart_send_to_qflist(prompt_bufnr)
|
||||
vim.cmd("Trouble qflist open")
|
||||
end
|
||||
local picker_mappings = {
|
||||
["<C-j>"] = actions.move_selection_next,
|
||||
["<C-k>"] = actions.move_selection_previous,
|
||||
["<C-q>"] = promote,
|
||||
}
|
||||
|
||||
require("telescope").setup({
|
||||
defaults = {
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-j>"] = actions.move_selection_next,
|
||||
["<C-k>"] = actions.move_selection_previous,
|
||||
["<C-q>"] = promote,
|
||||
},
|
||||
n = {
|
||||
["<C-j>"] = actions.move_selection_next,
|
||||
["<C-k>"] = actions.move_selection_previous,
|
||||
["<C-q>"] = promote,
|
||||
},
|
||||
},
|
||||
mappings = { i = picker_mappings, n = picker_mappings },
|
||||
},
|
||||
extensions = {
|
||||
["ui-select"] = require("telescope.themes").get_dropdown(),
|
||||
|
||||
@@ -60,29 +60,22 @@ require("lz.n").load({
|
||||
change = { text = "│" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
untracked = { text = "┆" },
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
local gs = require("gitsigns")
|
||||
vim.keymap.set("n", "]h", function()
|
||||
if vim.wo.diff then
|
||||
return "]h"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.nav_hunk("next")
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { buffer = bufnr, desc = "Next git hunk", expr = true })
|
||||
vim.keymap.set("n", "[h", function()
|
||||
if vim.wo.diff then
|
||||
return "[h"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.nav_hunk("prev")
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { buffer = bufnr, desc = "Previous git hunk", expr = true })
|
||||
local map_hunk = function(lhs, direction, desc)
|
||||
vim.keymap.set("n", lhs, function()
|
||||
if vim.wo.diff then
|
||||
return lhs
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.nav_hunk(direction)
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { buffer = bufnr, desc = desc, expr = true })
|
||||
end
|
||||
map_hunk("]h", "next", "Next git hunk")
|
||||
map_hunk("[h", "prev", "Previous git hunk")
|
||||
end,
|
||||
})
|
||||
end,
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
{
|
||||
browser,
|
||||
launcher,
|
||||
shortcutCommands,
|
||||
swapMonitorWorkspaces,
|
||||
terminal,
|
||||
}:
|
||||
let
|
||||
spawnLocked = command: {
|
||||
spawn-sh = command;
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
withCooldown = action: {
|
||||
${action} = { };
|
||||
_props.cooldown-ms = 150;
|
||||
};
|
||||
in
|
||||
{
|
||||
# Application and utility launchers
|
||||
"Mod+Return" = {
|
||||
@@ -25,46 +35,16 @@
|
||||
};
|
||||
|
||||
# Hardware media, volume, and brightness keys
|
||||
"XF86AudioPlay" = {
|
||||
spawn-sh = "playerctl play-pause";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86AudioStop" = {
|
||||
spawn-sh = "playerctl stop";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86AudioPrev" = {
|
||||
spawn-sh = "playerctl previous";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86AudioNext" = {
|
||||
spawn-sh = "playerctl next";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86AudioRaiseVolume" = {
|
||||
spawn-sh = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86AudioLowerVolume" = {
|
||||
spawn-sh = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86AudioMute" = {
|
||||
spawn-sh = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86AudioMicMute" = {
|
||||
spawn-sh = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86MonBrightnessUp" = {
|
||||
spawn-sh = "brightnessctl s 5%+";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86MonBrightnessDown" = {
|
||||
spawn-sh = "brightnessctl s 5%-";
|
||||
_props.allow-when-locked = true;
|
||||
};
|
||||
"XF86AudioPlay" = spawnLocked "playerctl play-pause";
|
||||
"XF86AudioStop" = spawnLocked "playerctl stop";
|
||||
"XF86AudioPrev" = spawnLocked "playerctl previous";
|
||||
"XF86AudioNext" = spawnLocked "playerctl next";
|
||||
"XF86AudioRaiseVolume" = spawnLocked "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
|
||||
"XF86AudioLowerVolume" = spawnLocked "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
|
||||
"XF86AudioMute" = spawnLocked "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
"XF86AudioMicMute" = spawnLocked "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
||||
"XF86MonBrightnessUp" = spawnLocked "brightnessctl s 5%+";
|
||||
"XF86MonBrightnessDown" = spawnLocked "brightnessctl s 5%-";
|
||||
|
||||
# Screenshots
|
||||
"Mod+S".screenshot = { };
|
||||
@@ -105,7 +85,7 @@
|
||||
"Mod+Tab".focus-monitor-next = { };
|
||||
"Mod+A" = {
|
||||
_props.repeat = false;
|
||||
spawn = shortcutCommands.swapMonitorWorkspaces;
|
||||
spawn = swapMonitorWorkspaces;
|
||||
_props.hotkey-overlay-title = "Swap Monitor Workspaces";
|
||||
};
|
||||
"Mod+Alt+Tab".move-column-to-monitor-next = { };
|
||||
@@ -124,22 +104,10 @@
|
||||
"Mod+Shift+I".move-workspace-up = { };
|
||||
|
||||
# Mouse workspace navigation
|
||||
"Mod+WheelScrollDown" = {
|
||||
focus-workspace-down = { };
|
||||
_props.cooldown-ms = 150;
|
||||
};
|
||||
"Mod+WheelScrollUp" = {
|
||||
focus-workspace-up = { };
|
||||
_props.cooldown-ms = 150;
|
||||
};
|
||||
"Mod+Alt+WheelScrollDown" = {
|
||||
move-column-to-workspace-down = { };
|
||||
_props.cooldown-ms = 150;
|
||||
};
|
||||
"Mod+Alt+WheelScrollUp" = {
|
||||
move-column-to-workspace-up = { };
|
||||
_props.cooldown-ms = 150;
|
||||
};
|
||||
"Mod+WheelScrollDown" = withCooldown "focus-workspace-down";
|
||||
"Mod+WheelScrollUp" = withCooldown "focus-workspace-up";
|
||||
"Mod+Alt+WheelScrollDown" = withCooldown "move-column-to-workspace-down";
|
||||
"Mod+Alt+WheelScrollUp" = withCooldown "move-column-to-workspace-up";
|
||||
|
||||
# Mouse column navigation and movement
|
||||
"Mod+WheelScrollRight".focus-column-or-monitor-right = { };
|
||||
|
||||
@@ -1,46 +1,37 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
}:
|
||||
rec {
|
||||
scripts = {
|
||||
swapMonitorWorkspaces = pkgs.writeShellApplication {
|
||||
name = "niri-shortcut-swap-monitor-workspaces";
|
||||
runtimeInputs = [
|
||||
pkgs.jq
|
||||
pkgs.niri
|
||||
];
|
||||
text = ''
|
||||
focused_output="$(niri msg --json focused-output | jq -r '.name // empty')"
|
||||
if [ -z "$focused_output" ]; then
|
||||
exit 0
|
||||
fi
|
||||
{ pkgs }:
|
||||
pkgs.writeShellApplication {
|
||||
name = "niri-shortcut-swap-monitor-workspaces";
|
||||
runtimeInputs = [
|
||||
pkgs.jq
|
||||
pkgs.niri
|
||||
];
|
||||
text = ''
|
||||
focused_output="$(niri msg --json focused-output | jq -r '.name // empty')"
|
||||
if [ -z "$focused_output" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
niri msg action focus-monitor-next
|
||||
niri msg action focus-monitor-next
|
||||
|
||||
target_output="$(niri msg --json focused-output | jq -r '.name // empty')"
|
||||
if [ -z "$target_output" ] || [ "$target_output" = "$focused_output" ]; then
|
||||
exit 0
|
||||
fi
|
||||
target_output="$(niri msg --json focused-output | jq -r '.name // empty')"
|
||||
if [ -z "$target_output" ] || [ "$target_output" = "$focused_output" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
target_workspace_idx="$(
|
||||
niri msg --json workspaces \
|
||||
| jq -r --arg output "$target_output" '
|
||||
first(.[] | select(.output == $output and .is_active) | .idx) // empty
|
||||
'
|
||||
)"
|
||||
if [ -z "$target_workspace_idx" ]; then
|
||||
niri msg action focus-monitor "$focused_output"
|
||||
exit 0
|
||||
fi
|
||||
target_workspace_idx="$(
|
||||
niri msg --json workspaces \
|
||||
| jq -r --arg output "$target_output" '
|
||||
first(.[] | select(.output == $output and .is_active) | .idx) // empty
|
||||
'
|
||||
)"
|
||||
if [ -z "$target_workspace_idx" ]; then
|
||||
niri msg action focus-monitor "$focused_output"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
niri msg action focus-monitor "$focused_output"
|
||||
niri msg action move-workspace-to-monitor "$target_output"
|
||||
niri msg action focus-workspace "$target_workspace_idx"
|
||||
niri msg action move-workspace-to-monitor "$focused_output"
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
commands = lib.mapAttrs (_: lib.getExe) scripts;
|
||||
niri msg action focus-monitor "$focused_output"
|
||||
niri msg action move-workspace-to-monitor "$target_output"
|
||||
niri msg action focus-workspace "$target_workspace_idx"
|
||||
niri msg action move-workspace-to-monitor "$focused_output"
|
||||
'';
|
||||
}
|
||||
@@ -29,12 +29,7 @@ in
|
||||
}:
|
||||
let
|
||||
palette = kanagawa.palette;
|
||||
shortcuts = import ./_shortcuts.nix {
|
||||
inherit
|
||||
lib
|
||||
pkgs
|
||||
;
|
||||
};
|
||||
swapMonitorWorkspaces = import ./_shortcuts.nix { inherit pkgs; };
|
||||
machine = config.facts.machine;
|
||||
in
|
||||
{
|
||||
@@ -47,7 +42,7 @@ in
|
||||
brightnessctl
|
||||
wireplumber
|
||||
]
|
||||
++ lib.attrValues shortcuts.scripts;
|
||||
++ [ swapMonitorWorkspaces ];
|
||||
};
|
||||
|
||||
dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
|
||||
@@ -140,7 +135,7 @@ in
|
||||
launcher
|
||||
terminal
|
||||
;
|
||||
shortcutCommands = shortcuts.commands;
|
||||
swapMonitorWorkspaces = lib.getExe swapMonitorWorkspaces;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -3,28 +3,25 @@ let
|
||||
account = config.facts.account;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.nix =
|
||||
{ ... }:
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
flake.modules.nixos.nix = {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
nix = {
|
||||
gc.automatic = true;
|
||||
optimise.automatic = true;
|
||||
registry.nixpkgs.flake = inputs.nixpkgs;
|
||||
channel.enable = false;
|
||||
nix = {
|
||||
gc.automatic = true;
|
||||
optimise.automatic = true;
|
||||
channel.enable = false;
|
||||
|
||||
settings = {
|
||||
trusted-users = [ "@wheel" ];
|
||||
use-xdg-base-directories = true;
|
||||
settings = {
|
||||
trusted-users = [ "@wheel" ];
|
||||
use-xdg-base-directories = true;
|
||||
|
||||
experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
};
|
||||
experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
flake.modules.homeManager.nix =
|
||||
{ pkgs, ... }:
|
||||
|
||||
@@ -61,17 +61,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
desktop_widgets = {
|
||||
enabled = false;
|
||||
schema_version = 2;
|
||||
widget_order = [ ];
|
||||
grid = {
|
||||
cell_size = 16;
|
||||
major_interval = 4;
|
||||
visible = true;
|
||||
};
|
||||
widget = { };
|
||||
};
|
||||
desktop_widgets.enabled = false;
|
||||
|
||||
location.address = "Meterik, The Netherlands";
|
||||
|
||||
@@ -98,7 +88,6 @@
|
||||
font_family = "Lexend";
|
||||
polkit_agent = true;
|
||||
screen_time_enabled = true;
|
||||
settings_show_advanced = true;
|
||||
animation.speed = 1.5;
|
||||
screen_corners = {
|
||||
enabled = true;
|
||||
@@ -127,7 +116,6 @@
|
||||
|
||||
widget = {
|
||||
bluetooth.hide_when_no_connected_device = true;
|
||||
clock.format = "{:%H:%M}";
|
||||
media = {
|
||||
art_size = 90.0;
|
||||
max_length = 800;
|
||||
|
||||
@@ -12,16 +12,13 @@ in
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
pinentryPackage = pkgs.pinentry-gnome3;
|
||||
in
|
||||
{
|
||||
programs.rbw = {
|
||||
enable = true;
|
||||
settings = {
|
||||
base_url = facts.services.vaultwarden.origin;
|
||||
email = account.emails.${account.primaryEmail}.address;
|
||||
pinentry = pinentryPackage;
|
||||
pinentry = pkgs.pinentry-gnome3;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -21,7 +21,6 @@ in
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
@@ -31,7 +30,6 @@ in
|
||||
...
|
||||
}:
|
||||
{
|
||||
enable = true;
|
||||
inherit address;
|
||||
realName = account.realName;
|
||||
userName = address;
|
||||
@@ -50,7 +48,6 @@ in
|
||||
...
|
||||
}:
|
||||
{
|
||||
enable = true;
|
||||
inherit address;
|
||||
realName = account.realName;
|
||||
userName = address;
|
||||
@@ -59,13 +56,11 @@ in
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 993;
|
||||
tls.enable = true;
|
||||
};
|
||||
smtp = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 465;
|
||||
tls.enable = true;
|
||||
};
|
||||
};
|
||||
mkEmailAccount =
|
||||
@@ -103,9 +98,6 @@ in
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
calendarsPath = "${config.xdg.dataHome}/calendars";
|
||||
in
|
||||
{
|
||||
imports = [ homeModules.sops ];
|
||||
|
||||
@@ -136,16 +128,11 @@ in
|
||||
};
|
||||
|
||||
accounts.calendar = {
|
||||
basePath = calendarsPath;
|
||||
basePath = "${config.xdg.dataHome}/calendars";
|
||||
accounts.radicale = {
|
||||
primary = true;
|
||||
primaryCollection = "personal";
|
||||
|
||||
local = {
|
||||
type = "filesystem";
|
||||
fileExt = ".ics";
|
||||
};
|
||||
|
||||
remote = {
|
||||
url = "${facts.services.radicale.origin}/";
|
||||
type = "caldav";
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
homeModules = config.flake.modules.homeManager;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.podman =
|
||||
{ lib, pkgs, ... }:
|
||||
{
|
||||
home-manager.sharedModules = [ homeModules.podman ];
|
||||
home-manager.sharedModules = [ config.flake.modules.homeManager.podman ];
|
||||
|
||||
virtualisation.podman.enable = true;
|
||||
virtualisation.containers.containersConf.settings.engine.compose_providers = [
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
printing = {
|
||||
enable = true;
|
||||
browsed.enable = true;
|
||||
drivers = with pkgs; [
|
||||
cnijfilter2
|
||||
];
|
||||
drivers = [ pkgs.cnijfilter2 ];
|
||||
};
|
||||
|
||||
avahi = {
|
||||
|
||||
@@ -13,9 +13,7 @@
|
||||
theme = "${
|
||||
pkgs.sddm-astronaut.override { embeddedTheme = "purple_leaves"; }
|
||||
}/share/sddm/themes/sddm-astronaut-theme";
|
||||
extraPackages = with pkgs; [
|
||||
kdePackages.qtmultimedia
|
||||
];
|
||||
extraPackages = [ pkgs.kdePackages.qtmultimedia ];
|
||||
settings.Theme = {
|
||||
CursorTheme = "phinger-cursors-light";
|
||||
CursorSize = 24;
|
||||
|
||||
@@ -1,21 +1,17 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
service = config.facts.services.actual;
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.actual = {
|
||||
imports = [ nixosModules.caddy ];
|
||||
imports = [ config.flake.modules.nixos.caddy ];
|
||||
|
||||
services.actual = {
|
||||
enable = true;
|
||||
openFirewall = false;
|
||||
settings = {
|
||||
hostname = "127.0.0.1";
|
||||
port = 3000;
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts.${service.domain}.extraConfig = "reverse_proxy 127.0.0.1:3000";
|
||||
services.caddy.virtualHosts.${config.facts.services.actual.domain}.extraConfig =
|
||||
"reverse_proxy 127.0.0.1:3000";
|
||||
};
|
||||
}
|
||||
@@ -19,9 +19,6 @@ in
|
||||
ROOT_URL = "${service.origin}/";
|
||||
HTTP_PORT = 3001;
|
||||
HTTP_ADDR = "127.0.0.1";
|
||||
|
||||
START_SSH_SERVER = false;
|
||||
SSH_PORT = 22;
|
||||
};
|
||||
|
||||
service.DISABLE_REGISTRATION = true;
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
account = config.facts.account;
|
||||
personalPublicKeys =
|
||||
machines:
|
||||
map (machine: machine.sshKeys.personal.publicKey) (
|
||||
lib.filter (machine: machine.sshKeys ? personal) (builtins.attrValues machines)
|
||||
);
|
||||
personalPublicKeys = map (machine: machine.sshKeys.personal.publicKey) (
|
||||
lib.filter (machine: machine.sshKeys ? personal) (builtins.attrValues config.facts.machines)
|
||||
);
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.sudo-ssh-agent-auth = {
|
||||
@@ -15,18 +13,16 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
flake.modules.nixos.openssh =
|
||||
{ ... }:
|
||||
{
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
AllowUsers = [ account.name ];
|
||||
};
|
||||
flake.modules.nixos.openssh = {
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PermitRootLogin = "no";
|
||||
PasswordAuthentication = false;
|
||||
AllowUsers = [ account.name ];
|
||||
};
|
||||
|
||||
users.users.${account.name}.openssh.authorizedKeys.keys = personalPublicKeys config.facts.machines;
|
||||
};
|
||||
|
||||
users.users.${account.name}.openssh.authorizedKeys.keys = personalPublicKeys;
|
||||
};
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
service = config.facts.services.radicale;
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.radicale = {
|
||||
imports = [ nixosModules.caddy ];
|
||||
imports = [ config.flake.modules.nixos.caddy ];
|
||||
|
||||
services.radicale = {
|
||||
enable = true;
|
||||
@@ -17,15 +13,12 @@ in
|
||||
htpasswd_filename = "/var/lib/radicale/users";
|
||||
htpasswd_encryption = "bcrypt";
|
||||
};
|
||||
|
||||
storage.filesystem_folder = "/var/lib/radicale/collections";
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy.virtualHosts.${service.domain}.extraConfig = ''
|
||||
services.caddy.virtualHosts.${config.facts.services.radicale.domain}.extraConfig = ''
|
||||
reverse_proxy 127.0.0.1:5232 {
|
||||
header_up X-Script-Name /
|
||||
header_up X-Forwarded-For {remote}
|
||||
header_up X-Remote-User {http.auth.user.id}
|
||||
}
|
||||
'';
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
service = config.facts.services.vaultwarden;
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.vaultwarden = {
|
||||
imports = [ nixosModules.caddy ];
|
||||
imports = [ config.flake.modules.nixos.caddy ];
|
||||
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
|
||||
@@ -1,222 +0,0 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.modules.nixos.vps-insights =
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
localAddress = "127.0.0.1";
|
||||
grafanaDataDir = config.services.grafana.dataDir;
|
||||
lokiDataDir = config.services.loki.dataDir;
|
||||
lokiUrl = "http://${localAddress}:3100";
|
||||
prometheusUrl = "http://${localAddress}:9090";
|
||||
hasCaddy = config.services.caddy.enable;
|
||||
hasOpenSSH = config.services.openssh.enable;
|
||||
in
|
||||
{
|
||||
environment = {
|
||||
etc."alloy/config.alloy".text = ''
|
||||
loki.relabel "journal" {
|
||||
forward_to = []
|
||||
|
||||
rule {
|
||||
source_labels = ["__journal__systemd_unit"]
|
||||
target_label = "unit"
|
||||
}
|
||||
|
||||
rule {
|
||||
source_labels = ["__journal_syslog_identifier"]
|
||||
target_label = "syslog_identifier"
|
||||
}
|
||||
|
||||
rule {
|
||||
source_labels = ["__journal_priority_keyword"]
|
||||
target_label = "level"
|
||||
}
|
||||
}
|
||||
|
||||
loki.source.journal "system" {
|
||||
forward_to = [loki.write.local.receiver]
|
||||
relabel_rules = loki.relabel.journal.rules
|
||||
max_age = "24h"
|
||||
labels = {
|
||||
host = "${config.networking.hostName}",
|
||||
}
|
||||
}
|
||||
|
||||
loki.write "local" {
|
||||
endpoint {
|
||||
url = "${lokiUrl}/loki/api/v1/push"
|
||||
}
|
||||
}
|
||||
'';
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
goaccess
|
||||
lynis
|
||||
];
|
||||
};
|
||||
|
||||
services = {
|
||||
# Keep local system logs available for Loki and manual inspection.
|
||||
journald.extraConfig = ''
|
||||
Storage=persistent
|
||||
SystemMaxUse=1G
|
||||
MaxRetentionSec=30day
|
||||
'';
|
||||
|
||||
# Detect and block common attacks against SSH and Caddy.
|
||||
crowdsec = {
|
||||
enable = true;
|
||||
hub.collections = [ "crowdsecurity/linux" ] ++ lib.optional hasCaddy "crowdsecurity/caddy";
|
||||
localConfig.acquisitions =
|
||||
lib.optional hasOpenSSH {
|
||||
source = "journalctl";
|
||||
journalctl_filter = [ "_SYSTEMD_UNIT=sshd.service" ];
|
||||
labels.type = "syslog";
|
||||
}
|
||||
++ lib.optional hasCaddy {
|
||||
filenames = [ "/var/log/caddy/*.log" ];
|
||||
labels.type = "caddy";
|
||||
};
|
||||
};
|
||||
|
||||
crowdsec-firewall-bouncer = {
|
||||
enable = true;
|
||||
registerBouncer.bouncerName = "${config.networking.hostName}-firewall-bouncer";
|
||||
};
|
||||
|
||||
# Keep Grafana local and separate from Actual's port.
|
||||
grafana = {
|
||||
enable = true;
|
||||
settings = {
|
||||
analytics.reporting_enabled = false;
|
||||
server = {
|
||||
http_addr = localAddress;
|
||||
http_port = 3002;
|
||||
};
|
||||
security = {
|
||||
admin_password = "$__file{${grafanaDataDir}/admin-password}";
|
||||
secret_key = "$__file{${grafanaDataDir}/secret-key}";
|
||||
};
|
||||
};
|
||||
provision.datasources.settings = {
|
||||
prune = true;
|
||||
datasources = [
|
||||
{
|
||||
name = "Prometheus";
|
||||
type = "prometheus";
|
||||
uid = "prometheus";
|
||||
url = prometheusUrl;
|
||||
isDefault = true;
|
||||
}
|
||||
{
|
||||
name = "Loki";
|
||||
type = "loki";
|
||||
uid = "loki";
|
||||
url = lokiUrl;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Store local logs in Loki and feed them from journald through Alloy.
|
||||
loki = {
|
||||
enable = true;
|
||||
configuration = {
|
||||
analytics.reporting_enabled = false;
|
||||
auth_enabled = false;
|
||||
|
||||
server = {
|
||||
http_listen_address = localAddress;
|
||||
http_listen_port = 3100;
|
||||
grpc_listen_address = localAddress;
|
||||
grpc_listen_port = 9096;
|
||||
};
|
||||
|
||||
common = {
|
||||
path_prefix = lokiDataDir;
|
||||
replication_factor = 1;
|
||||
instance_interface_names = [ "lo" ];
|
||||
ring = {
|
||||
instance_addr = localAddress;
|
||||
kvstore.store = "inmemory";
|
||||
};
|
||||
};
|
||||
|
||||
schema_config.configs = [
|
||||
{
|
||||
from = "2025-01-01";
|
||||
store = "tsdb";
|
||||
object_store = "filesystem";
|
||||
schema = "v13";
|
||||
index = {
|
||||
prefix = "index_";
|
||||
period = "24h";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
storage_config.filesystem.directory = "${lokiDataDir}/chunks";
|
||||
|
||||
compactor = {
|
||||
working_directory = "${lokiDataDir}/compactor";
|
||||
retention_enabled = true;
|
||||
delete_request_store = "filesystem";
|
||||
};
|
||||
|
||||
limits_config.retention_period = "720h";
|
||||
};
|
||||
};
|
||||
|
||||
alloy = {
|
||||
enable = true;
|
||||
extraFlags = [ "--server.http.listen-addr=${localAddress}:12345" ];
|
||||
};
|
||||
|
||||
# Collect basic VPS health metrics for Grafana.
|
||||
prometheus = {
|
||||
enable = true;
|
||||
listenAddress = localAddress;
|
||||
retentionTime = "30d";
|
||||
scrapeConfigs = [
|
||||
{
|
||||
job_name = "prometheus";
|
||||
static_configs = [
|
||||
{
|
||||
targets = [ "${localAddress}:9090" ];
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
job_name = "node";
|
||||
static_configs = [
|
||||
{
|
||||
targets = [ "${localAddress}:9100" ];
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
exporters.node = {
|
||||
enable = true;
|
||||
listenAddress = localAddress;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.grafana.preStart = ''
|
||||
umask 077
|
||||
|
||||
if [ ! -s ${grafanaDataDir}/admin-password ]; then
|
||||
${pkgs.openssl}/bin/openssl rand -base64 32 > ${grafanaDataDir}/admin-password
|
||||
fi
|
||||
|
||||
if [ ! -s ${grafanaDataDir}/secret-key ]; then
|
||||
${pkgs.openssl}/bin/openssl rand -hex 32 > ${grafanaDataDir}/secret-key
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -22,7 +22,6 @@
|
||||
enable = true;
|
||||
dotDir = "${config.xdg.configHome}/zsh";
|
||||
|
||||
enableCompletion = true;
|
||||
completionInit = ''
|
||||
autoload -U compinit
|
||||
compinit -C
|
||||
@@ -50,16 +49,7 @@
|
||||
|
||||
historySubstringSearch.enable = true;
|
||||
|
||||
history = {
|
||||
ignoreDups = true;
|
||||
save = 10000;
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh_history";
|
||||
};
|
||||
|
||||
profileExtra = lib.optionalString (config.home.sessionPath != [ ]) ''
|
||||
export PATH="$PATH''${PATH:+:}${lib.concatStringsSep ":" config.home.sessionPath}"
|
||||
'';
|
||||
history.path = "${config.xdg.dataHome}/zsh_history";
|
||||
|
||||
initContent = ''
|
||||
source <(gardenctl rc zsh --no-completion)
|
||||
@@ -118,19 +108,8 @@
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
add_newline = true;
|
||||
|
||||
format = lib.concatStrings [
|
||||
"$nix_shell"
|
||||
"$hostname"
|
||||
"$directory"
|
||||
"$git_branch"
|
||||
"$git_state"
|
||||
"$line_break"
|
||||
"$character"
|
||||
];
|
||||
format = "$nix_shell$hostname$directory$git_branch$git_state$line_break$character";
|
||||
|
||||
directory = {
|
||||
truncation_length = 99;
|
||||
@@ -147,8 +126,6 @@
|
||||
format = "([$state( $progress_current/$progress_total)]($style)) ";
|
||||
style = "bright-black";
|
||||
};
|
||||
|
||||
line_break.disabled = false;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -157,15 +134,9 @@
|
||||
extraOptions = [ "--group-directories-first" ];
|
||||
};
|
||||
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
programs.zoxide.enable = true;
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
programs.fzf.enable = true;
|
||||
|
||||
programs.bottom.enable = true;
|
||||
|
||||
|
||||
@@ -1,30 +1,24 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
kanagawa = import ./_kanagawa.nix;
|
||||
homeModules = config.flake.modules.homeManager;
|
||||
|
||||
kittySingleInstance =
|
||||
pkgs:
|
||||
pkgs.symlinkJoin {
|
||||
name = "kitty-single";
|
||||
paths = [ pkgs.kitty ];
|
||||
meta = pkgs.kitty.meta;
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/kitty --add-flags "-1"
|
||||
rm $out/share/applications/kitty.desktop
|
||||
sed 's/^Exec=kitty/Exec=kitty -1/' ${pkgs.kitty}/share/applications/kitty.desktop > $out/share/applications/kitty.desktop
|
||||
'';
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.terminal-kitty =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
theme = kanagawa;
|
||||
theme = import ./_kanagawa.nix;
|
||||
palette = theme.palette;
|
||||
kitty = kittySingleInstance pkgs;
|
||||
kitty = pkgs.symlinkJoin {
|
||||
name = "kitty-single";
|
||||
paths = [ pkgs.kitty ];
|
||||
meta = pkgs.kitty.meta;
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/kitty --add-flags "-1"
|
||||
rm $out/share/applications/kitty.desktop
|
||||
sed 's/^Exec=kitty/Exec=kitty -1/' ${pkgs.kitty}/share/applications/kitty.desktop > $out/share/applications/kitty.desktop
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.kitty = {
|
||||
|
||||
@@ -1,28 +1,21 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
hmModules = config.flake.modules.homeManager;
|
||||
cursor = {
|
||||
name = "phinger-cursors-light";
|
||||
packageName = "phinger-cursors";
|
||||
size = 24;
|
||||
};
|
||||
mkCursor = pkgs: cursor // { package = pkgs.${cursor.packageName}; };
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.theme =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
cursorTheme = mkCursor pkgs;
|
||||
in
|
||||
{
|
||||
home-manager.sharedModules = [ hmModules.theme ];
|
||||
environment.systemPackages = [ cursorTheme.package ];
|
||||
home-manager.sharedModules = [ config.flake.modules.homeManager.theme ];
|
||||
environment.systemPackages = [ pkgs.phinger-cursors ];
|
||||
};
|
||||
|
||||
flake.modules.homeManager.theme =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
cursorTheme = mkCursor pkgs;
|
||||
version = "unstable-2025-10-23";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "Fausto-Korpsvart";
|
||||
@@ -52,13 +45,9 @@ in
|
||||
};
|
||||
in
|
||||
{
|
||||
home.pointerCursor = {
|
||||
home.pointerCursor = cursor // {
|
||||
enable = true;
|
||||
inherit (cursorTheme)
|
||||
name
|
||||
package
|
||||
size
|
||||
;
|
||||
package = pkgs.phinger-cursors;
|
||||
dotIcons.enable = false;
|
||||
gtk.enable = true;
|
||||
};
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
homeModules = config.flake.modules.homeManager;
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.transcription =
|
||||
{
|
||||
@@ -111,7 +108,6 @@ in
|
||||
"TRANSCRIBE_DIARIZATION_MODEL=${diarizationModel}"
|
||||
"TRANSCRIBE_DIARIZATION_MODEL_NAME=${diarizationModelName}"
|
||||
"TRANSCRIBE_DIARIZATION_MODEL_REVISION=${diarizationModelRevision}"
|
||||
"TRANSCRIBE_SETTLE_SECONDS=300"
|
||||
"TRANSCRIBE_SYNC_ROOT=${home}/sync"
|
||||
];
|
||||
Restart = "on-failure";
|
||||
@@ -124,18 +120,13 @@ in
|
||||
systemd.user.paths.transcribe-recordings = {
|
||||
Unit.Description = "Watch for synchronized recordings";
|
||||
|
||||
Path = {
|
||||
PathChanged = "${home}/sync/recordings/inbox";
|
||||
Unit = "transcribe-recordings.service";
|
||||
};
|
||||
Path.PathChanged = "${home}/sync/recordings/inbox";
|
||||
|
||||
Install.WantedBy = [ "paths.target" ];
|
||||
};
|
||||
};
|
||||
|
||||
flake.modules.nixos.transcription =
|
||||
{ ... }:
|
||||
{
|
||||
home-manager.sharedModules = [ homeModules.transcription ];
|
||||
};
|
||||
flake.modules.nixos.transcription = {
|
||||
home-manager.sharedModules = [ config.flake.modules.homeManager.transcription ];
|
||||
};
|
||||
}
|
||||
@@ -1,10 +1,7 @@
|
||||
{ config, inputs, ... }:
|
||||
let
|
||||
homeModules = config.flake.modules.homeManager;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.walker = {
|
||||
home-manager.sharedModules = [ homeModules.walker ];
|
||||
home-manager.sharedModules = [ config.flake.modules.homeManager.walker ];
|
||||
|
||||
nix.settings = {
|
||||
extra-substituters = [
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
{
|
||||
flake.modules.nixos.yookr-dev =
|
||||
{ config, ... }:
|
||||
{
|
||||
security.pki.certificateFiles = [
|
||||
./yookr-dev/zenith-rootCA.pem
|
||||
./yookr-dev/polaris-rootCA.pem
|
||||
];
|
||||
flake.modules.nixos.yookr-dev = {
|
||||
security.pki.certificateFiles = [
|
||||
./yookr-dev/zenith-rootCA.pem
|
||||
./yookr-dev/polaris-rootCA.pem
|
||||
];
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
5173
|
||||
5174
|
||||
];
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
5173
|
||||
5174
|
||||
];
|
||||
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 local.management.yookr.org
|
||||
127.0.0.1 local.dashboard.yookr.org
|
||||
'';
|
||||
};
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 local.management.yookr.org
|
||||
127.0.0.1 local.dashboard.yookr.org
|
||||
'';
|
||||
};
|
||||
}
|
||||
+1
-3
@@ -266,9 +266,7 @@ in
|
||||
machines
|
||||
topology
|
||||
;
|
||||
services = lib.mapAttrs (_: service: {
|
||||
inherit (service) scheme domain;
|
||||
}) osConfig.facts.services;
|
||||
services = lib.mapAttrs (_: service: removeAttrs service [ "origin" ]) osConfig.facts.services;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -7,15 +7,10 @@
|
||||
let
|
||||
mkHost =
|
||||
name: machine:
|
||||
{ pkgs, ... }:
|
||||
hostArgs@{ pkgs, ... }:
|
||||
let
|
||||
account = config.facts.account;
|
||||
machineFacts = machine // {
|
||||
inherit name;
|
||||
};
|
||||
services = lib.mapAttrs (_: service: {
|
||||
inherit (service) scheme domain;
|
||||
}) config.facts.services;
|
||||
services = lib.mapAttrs (_: service: removeAttrs service [ "origin" ]) config.facts.services;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
@@ -30,7 +25,9 @@ let
|
||||
topology
|
||||
;
|
||||
inherit services;
|
||||
machine = machineFacts;
|
||||
machine = machine // {
|
||||
inherit name;
|
||||
};
|
||||
};
|
||||
|
||||
networking.hostName = name;
|
||||
@@ -38,9 +35,12 @@ let
|
||||
|
||||
programs.zsh.enable = true;
|
||||
|
||||
sops.secrets.hashed-password.neededForUsers = true;
|
||||
|
||||
users.users.${account.name} = {
|
||||
isNormalUser = true;
|
||||
home = account.homeDirectory;
|
||||
hashedPasswordFile = hostArgs.config.sops.secrets.hashed-password.path;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
boot = {
|
||||
name = "boot";
|
||||
size = "1M";
|
||||
type = "EF02";
|
||||
};
|
||||
@@ -25,7 +24,6 @@
|
||||
};
|
||||
};
|
||||
root = {
|
||||
name = "root";
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "lvm_pv";
|
||||
@@ -43,7 +41,6 @@
|
||||
type = "filesystem";
|
||||
format = "ext4";
|
||||
mountpoint = "/";
|
||||
mountOptions = [ "defaults" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -7,16 +7,9 @@
|
||||
boot.initrd.availableKernelModules = [
|
||||
"ata_piix"
|
||||
"uhci_hcd"
|
||||
"virtio_pci"
|
||||
"virtio_scsi"
|
||||
"sd_mod"
|
||||
"sr_mod"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
account = config.facts.account;
|
||||
in
|
||||
{
|
||||
facts.machines.orion = {
|
||||
@@ -11,29 +10,26 @@ in
|
||||
stateVersion = "24.05";
|
||||
};
|
||||
|
||||
flake.modules.nixos.orion =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
nixosModules.host-base
|
||||
flake.modules.nixos.orion = {
|
||||
imports = [
|
||||
nixosModules.host-base
|
||||
|
||||
nixosModules.sops-host-ssh-key
|
||||
nixosModules.openssh
|
||||
nixosModules.caddy
|
||||
nixosModules.server-firewall
|
||||
nixosModules.sudo-ssh-agent-auth
|
||||
# nixosModules.vps-insights
|
||||
nixosModules.vaultwarden
|
||||
nixosModules.radicale
|
||||
nixosModules.actual
|
||||
nixosModules.gitea
|
||||
nixosModules.transcription
|
||||
./_hardware.nix
|
||||
./_disk.nix
|
||||
];
|
||||
nixosModules.sops-host-ssh-key
|
||||
nixosModules.openssh
|
||||
nixosModules.caddy
|
||||
nixosModules.server-firewall
|
||||
nixosModules.sudo-ssh-agent-auth
|
||||
nixosModules.vaultwarden
|
||||
nixosModules.radicale
|
||||
nixosModules.actual
|
||||
nixosModules.gitea
|
||||
nixosModules.transcription
|
||||
./_hardware.nix
|
||||
./_disk.nix
|
||||
];
|
||||
|
||||
environment.enableAllTerminfo = true;
|
||||
environment.enableAllTerminfo = true;
|
||||
|
||||
users.users.${account.name}.linger = true;
|
||||
};
|
||||
users.users.${config.facts.account.name}.linger = true;
|
||||
};
|
||||
}
|
||||
@@ -1,9 +1,4 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
{ lib, modulesPath, ... }:
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
@@ -17,9 +12,7 @@
|
||||
"usb_storage"
|
||||
"sd_mod"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/bda7f8b9-2b3d-4190-8518-baa50490227e";
|
||||
@@ -35,10 +28,5 @@
|
||||
];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -9,48 +9,40 @@ in
|
||||
{
|
||||
facts.machines.polaris = {
|
||||
system = "x86_64-linux";
|
||||
sshKeys = {
|
||||
personal.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEVORk45HKkX7gaGGp90KsVyUy6t+fKhbWN/grjkf3cQ kiri@polaris";
|
||||
work.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM5DMV6EQzsscgEOE0912mNglUHTEl+LPnaWYjj0y57B kiri@polaris#work";
|
||||
};
|
||||
sshKeys.personal.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEVORk45HKkX7gaGGp90KsVyUy6t+fKhbWN/grjkf3cQ kiri@polaris";
|
||||
sshKeys.work.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM5DMV6EQzsscgEOE0912mNglUHTEl+LPnaWYjj0y57B kiri@polaris#work";
|
||||
|
||||
syncthingId = "6HBAKXB-DB3B4H2-BODCAXF-KD23H5W-6X5LGLC-ZJHZHLG-7U7YMGO-BB6IXQ3";
|
||||
|
||||
stateVersion = "24.05";
|
||||
|
||||
displays = {
|
||||
"LG Electronics LG ULTRAGEAR 103NTYT8R290" = {
|
||||
x = 0;
|
||||
y = 0;
|
||||
};
|
||||
"LG Electronics LG ULTRAGEAR 103NTYT8R290" = { };
|
||||
|
||||
"LG Electronics LG ULTRAGEAR 103NTJJ8R332" = {
|
||||
primary = true;
|
||||
x = 2560;
|
||||
y = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
flake.modules.nixos.polaris =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
nixosModules.workstation-base
|
||||
nixosModules.openssh
|
||||
nixosModules.steam
|
||||
./_hardware.nix
|
||||
]
|
||||
++ (with inputs.nixos-hardware.nixosModules; [
|
||||
common-pc
|
||||
common-pc-ssd
|
||||
common-cpu-amd
|
||||
common-gpu-amd
|
||||
]);
|
||||
flake.modules.nixos.polaris = {
|
||||
imports = [
|
||||
nixosModules.workstation-base
|
||||
nixosModules.openssh
|
||||
nixosModules.steam
|
||||
./_hardware.nix
|
||||
]
|
||||
++ (with inputs.nixos-hardware.nixosModules; [
|
||||
common-pc
|
||||
common-pc-ssd
|
||||
common-cpu-amd
|
||||
common-gpu-amd
|
||||
]);
|
||||
|
||||
services.openssh.openFirewall = false;
|
||||
networking.firewall.extraInputRules = ''
|
||||
ip saddr 192.168.178.0/24 tcp dport 22 accept
|
||||
'';
|
||||
};
|
||||
services.openssh.openFirewall = false;
|
||||
networking.firewall.extraInputRules = ''
|
||||
ip saddr 192.168.178.0/24 tcp dport 22 accept
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -10,9 +10,6 @@
|
||||
"usb_storage"
|
||||
"sd_mod"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/6d8f6f33-c9d9-4e90-b496-d5b3ef5e9aeb";
|
||||
@@ -28,9 +25,5 @@
|
||||
];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
}
|
||||
@@ -10,10 +10,8 @@ in
|
||||
facts.machines.zenith = {
|
||||
system = "x86_64-linux";
|
||||
|
||||
sshKeys = {
|
||||
personal.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIQy4k04gU7UpjBgyUQ57kUwxOdt79LvMCiCekXZeZhd kiri@zenith";
|
||||
work.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIHJz5uHKm0/TiMNh/cmzrODHNZ8NgEEZe+47XnJwQGk kiri@zenith#work";
|
||||
};
|
||||
sshKeys.personal.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIQy4k04gU7UpjBgyUQ57kUwxOdt79LvMCiCekXZeZhd kiri@zenith";
|
||||
sshKeys.work.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIHJz5uHKm0/TiMNh/cmzrODHNZ8NgEEZe+47XnJwQGk kiri@zenith#work";
|
||||
|
||||
syncthingId = "5VMGBZJ-NNAVCLY-YWHCJLM-EJ3SCFC-EOGCECD-DGXC7EL-J5NXAAG-4JDEMQG";
|
||||
|
||||
@@ -30,18 +28,14 @@ in
|
||||
stateVersion = "24.05";
|
||||
};
|
||||
|
||||
flake.modules.nixos.zenith =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
nixosModules.workstation-base
|
||||
nixosModules.laptop-power
|
||||
{
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
services.fwupd.enable = true;
|
||||
}
|
||||
./_hardware.nix
|
||||
inputs.nixos-hardware.nixosModules.lenovo-yoga-7-14ARH7-amdgpu
|
||||
];
|
||||
};
|
||||
flake.modules.nixos.zenith = {
|
||||
imports = [
|
||||
nixosModules.workstation-base
|
||||
nixosModules.laptop-power
|
||||
./_hardware.nix
|
||||
inputs.nixos-hardware.nixosModules.lenovo-yoga-7-14ARH7-amdgpu
|
||||
];
|
||||
|
||||
services.fwupd.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -14,7 +14,7 @@ in
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
nixosModules.nix
|
||||
nixosModules.locale
|
||||
nixosModules.sops-password
|
||||
nixosModules.sops
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
let
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
homeModules = config.flake.modules.homeManager;
|
||||
account = config.facts.account;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.workstation-base = {
|
||||
@@ -32,12 +31,10 @@ in
|
||||
nixosModules.yookr-dev
|
||||
];
|
||||
|
||||
services.dbus.implementation = "broker";
|
||||
|
||||
programs.nix-ld.enable = true;
|
||||
environment.localBinInPath = true;
|
||||
|
||||
home-manager.users.${account.name}.imports = [
|
||||
home-manager.users.${config.facts.account.name}.imports = [
|
||||
homeModules.workstation-base
|
||||
];
|
||||
};
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
keys:
|
||||
- &admin age122w85pqj508ukv0rd388mahecgfckmpgnsgz0zcyec37ljae2epsdnvxpl
|
||||
- &orion age1upsxyevxdv3xax8jhnffclryuve70k63cjrca69ffds4h2m3nvuql59ufw
|
||||
creation_rules:
|
||||
- path_regex: secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *admin
|
||||
- *orion
|
||||
age: >-
|
||||
age122w85pqj508ukv0rd388mahecgfckmpgnsgz0zcyec37ljae2epsdnvxpl,
|
||||
age1upsxyevxdv3xax8jhnffclryuve70k63cjrca69ffds4h2m3nvuql59ufw
|
||||
@@ -1,16 +0,0 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
account = config.facts.account;
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.sops-password =
|
||||
{ config, ... }:
|
||||
{
|
||||
imports = [ nixosModules.sops ];
|
||||
|
||||
sops.secrets.hashed-password.neededForUsers = true;
|
||||
|
||||
users.users.${account.name}.hashedPasswordFile = config.sops.secrets.hashed-password.path;
|
||||
};
|
||||
}
|
||||
@@ -15,23 +15,18 @@ in
|
||||
sops.defaultSopsFile = ./secrets.yaml;
|
||||
};
|
||||
|
||||
flake.modules.nixos.sops-admin-key-file =
|
||||
{ lib, ... }:
|
||||
let
|
||||
adminKeyDir = builtins.dirOf sopsAdminKeyPath;
|
||||
in
|
||||
{
|
||||
imports = [ nixosModules.sops ];
|
||||
flake.modules.nixos.sops-admin-key-file = {
|
||||
imports = [ nixosModules.sops ];
|
||||
|
||||
home-manager.sharedModules = [ hmModules.sops ];
|
||||
home-manager.sharedModules = [ hmModules.sops ];
|
||||
|
||||
sops.age.keyFile = sopsAdminKeyPath;
|
||||
sops.age.keyFile = sopsAdminKeyPath;
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${adminKeyDir} 0750 root wheel -"
|
||||
"z ${sopsAdminKeyPath} 0640 root wheel -"
|
||||
];
|
||||
};
|
||||
systemd.tmpfiles.rules = [
|
||||
"d ${builtins.dirOf sopsAdminKeyPath} 0750 root wheel -"
|
||||
"z ${sopsAdminKeyPath} 0640 root wheel -"
|
||||
];
|
||||
};
|
||||
|
||||
flake.modules.nixos.sops-host-ssh-key = {
|
||||
imports = [ nixosModules.sops ];
|
||||
|
||||
Reference in new issue
Block a user