refactor: ponytail audit

This commit is contained in:
kiri committed 2026-09-06 04:03:54 +02:00
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 $?
-1
View File
@@ -6,7 +6,6 @@
alsa.enable = true;
pulse.enable = true;
jack.enable = true;
wireplumber.enable = true;
};
};
}
+45 -64
View File
@@ -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 -5
View File
@@ -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 -3
View File
@@ -1,5 +1,3 @@
{
flake.modules.nixos.flatpak = {
services.flatpak.enable = true;
};
flake.modules.nixos.flatpak.services.flatpak.enable = true;
}
+1 -13
View File
@@ -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 -3
View File
@@ -1,5 +1,3 @@
{
flake.modules.homeManager.keyring = {
services.gnome-keyring.enable = true;
};
flake.modules.homeManager.keyring.services.gnome-keyring.enable = true;
}
+5 -8
View File
@@ -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;
};
};
};
+1 -3
View File
@@ -4,9 +4,7 @@
{
programs.mpv = {
enable = true;
bindings = {
D = "cycle deband";
};
bindings.D = "cycle deband";
config = {
profile = "high-quality";
+1 -4
View File
@@ -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,
+26 -58
View File
@@ -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 = { };
+32 -41
View File
@@ -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"
'';
}
+3 -8
View File
@@ -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;
};
};
};
+14 -17
View File
@@ -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, ... }:
+1 -13
View File
@@ -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;
+1 -4
View File
@@ -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;
};
};
};
+1 -14
View File
@@ -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 -4
View File
@@ -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 = [
+1 -3
View File
@@ -7,9 +7,7 @@
printing = {
enable = true;
browsed.enable = true;
drivers = with pkgs; [
cnijfilter2
];
drivers = [ pkgs.cnijfilter2 ];
};
avahi = {
+1 -3
View File
@@ -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;
+3 -7
View File
@@ -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";
};
}
-3
View File
@@ -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;
+13 -17
View File
@@ -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;
};
}
+2 -9
View File
@@ -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
'';
};
}
+4 -33
View File
@@ -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;
+12 -18
View File
@@ -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 = {
+4 -15
View File
@@ -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;
};
+4 -13
View File
@@ -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 -4
View File
@@ -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 = [
+14 -16
View File
@@ -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
View File
@@ -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;
};
};
};
+8 -8
View File
@@ -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"
-3
View File
@@ -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
View File
@@ -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";
}
+19 -23
View File
@@ -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 -13
View File
@@ -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;
}
+21 -29
View File
@@ -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
'';
};
}
-7
View File
@@ -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";
}
+12 -18
View File
@@ -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;
};
}
+1 -1
View File
@@ -14,7 +14,7 @@ in
inputs.home-manager.nixosModules.home-manager
nixosModules.nix
nixosModules.locale
nixosModules.sops-password
nixosModules.sops
];
home-manager = {
+1 -4
View File
@@ -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
];
};
+3 -7
View File
@@ -1,9 +1,5 @@
keys:
- &admin age122w85pqj508ukv0rd388mahecgfckmpgnsgz0zcyec37ljae2epsdnvxpl
- &orion age1upsxyevxdv3xax8jhnffclryuve70k63cjrca69ffds4h2m3nvuql59ufw
creation_rules:
- path_regex: secrets.yaml$
key_groups:
- age:
- *admin
- *orion
age: >-
age122w85pqj508ukv0rd388mahecgfckmpgnsgz0zcyec37ljae2epsdnvxpl,
age1upsxyevxdv3xax8jhnffclryuve70k63cjrca69ffds4h2m3nvuql59ufw
-16
View File
@@ -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;
};
}
+9 -14
View File
@@ -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 ];