refactor
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
cursor = {
|
||||
name = "phinger-cursors-light";
|
||||
packagePath = [ "phinger-cursors" ];
|
||||
packageName = "phinger-cursors";
|
||||
size = 24;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
{ inputs, config, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
hmModules = config.flake.modules.homeManager;
|
||||
in
|
||||
{
|
||||
@@ -18,12 +17,7 @@ in
|
||||
};
|
||||
|
||||
flake.modules.homeManager.ai =
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.mcp = {
|
||||
enable = true;
|
||||
@@ -36,32 +30,5 @@ in
|
||||
home.packages = [
|
||||
pkgs.llm-agents.codex
|
||||
];
|
||||
|
||||
# programs.codex = {
|
||||
# enable = true;
|
||||
# package = pkgs.llm-agents.codex;
|
||||
# enableMcpIntegration = true;
|
||||
# settings = {
|
||||
# model = "gpt-5.5";
|
||||
# model_reasoning_effort = "high";
|
||||
# plan_mode_reasoning_effort = "high";
|
||||
# tui.status_line = [
|
||||
# "model-with-reasoning"
|
||||
# "current-dir"
|
||||
# "git-branch"
|
||||
# "context-remaining"
|
||||
# "five-hour-limit"
|
||||
# ];
|
||||
# projects.${account.nixosConfigurationPath}.trust_level = "trusted";
|
||||
# projects."${config.home.homeDirectory}/work/repos/yookr-data-science".trust_level = "trusted";
|
||||
# sandbox_mode = "workspace-write";
|
||||
# personality = "pragmatic";
|
||||
# features.undo = true;
|
||||
# mcp_servers.nixos = config.programs.mcp.servers.nixos // {
|
||||
# enabled = true;
|
||||
# default_tools_approval_mode = "approve";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,38 +1,40 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
homeModules = config.flake.modules.homeManager;
|
||||
vivaldiPackage = pkgs: pkgs.vivaldi;
|
||||
nautilusPackage = pkgs: pkgs.nautilus;
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.browser-vivaldi =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [ (vivaldiPackage pkgs) ];
|
||||
home.packages = [ pkgs.vivaldi ];
|
||||
};
|
||||
|
||||
flake.modules.homeManager.primary-browser-vivaldi =
|
||||
{ lib, pkgs, ... }:
|
||||
let
|
||||
browser = pkgs.vivaldi;
|
||||
browserCommand = lib.getExe browser;
|
||||
in
|
||||
{
|
||||
imports = [ homeModules.browser-vivaldi ];
|
||||
|
||||
facts.desktop.browserCommand = lib.getExe (vivaldiPackage pkgs);
|
||||
home.sessionVariables.BROWSER = lib.getExe (vivaldiPackage pkgs);
|
||||
xdg.mimeApps.defaultApplicationPackages = [ (vivaldiPackage pkgs) ];
|
||||
facts.desktop.browserCommand = browserCommand;
|
||||
home.sessionVariables.BROWSER = browserCommand;
|
||||
xdg.mimeApps.defaultApplicationPackages = [ browser ];
|
||||
};
|
||||
|
||||
flake.modules.homeManager.file-manager-nautilus =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [ (nautilusPackage pkgs) ];
|
||||
home.packages = [ pkgs.nautilus ];
|
||||
};
|
||||
|
||||
flake.modules.homeManager.primary-file-manager-nautilus =
|
||||
{ lib, pkgs, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ homeModules.file-manager-nautilus ];
|
||||
|
||||
xdg.mimeApps.defaultApplicationPackages = [ (nautilusPackage pkgs) ];
|
||||
xdg.mimeApps.defaultApplicationPackages = [ pkgs.nautilus ];
|
||||
};
|
||||
|
||||
flake.modules.homeManager.image-viewer-imv = {
|
||||
|
||||
@@ -13,12 +13,6 @@
|
||||
inputs.devenv.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||
];
|
||||
|
||||
# programs.direnv = {
|
||||
# enable = true;
|
||||
# enableZshIntegration = true;
|
||||
# nix-direnv.enable = true;
|
||||
# };
|
||||
|
||||
programs.zsh.initContent = ''
|
||||
eval "$(devenv hook zsh)"
|
||||
'';
|
||||
@@ -32,6 +26,5 @@
|
||||
programs.jq.enable = true;
|
||||
programs.bun.enable = true;
|
||||
programs.ripgrep.enable = true;
|
||||
#programs.uv.enable = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
account = config.facts.account;
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.git =
|
||||
{
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
machine = osConfig.facts.machine;
|
||||
machine = config.facts.machine;
|
||||
allowedSignersFile = "${config.xdg.configHome}/git/allowed_signers";
|
||||
|
||||
mkScope =
|
||||
scope:
|
||||
let
|
||||
email = account.emails.${scope}.address;
|
||||
key = lib.attrByPath [ scope ] null machine.sshKeys;
|
||||
key = machine.sshKeys.${scope} or null;
|
||||
hasSigningKey = key != null;
|
||||
privateKeyPath = key.privateKeyPath or "~/.ssh/id_${scope}";
|
||||
in
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
palette = config.repo.theme.kanagawa.palette;
|
||||
palette = config.facts.theme.kanagawa.palette;
|
||||
hex = lib.removePrefix "#";
|
||||
terminalPalette = palette.terminal;
|
||||
mkPalette = colors: lib.concatStringsSep ";" (map hex colors);
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
LC_TELEPHONE = "nl_NL.UTF-8";
|
||||
LC_NAME = "nl_NL.UTF-8";
|
||||
|
||||
# Use '.' as decimal point and ',' as thouands separator
|
||||
# Use '.' as decimal point and ',' as thousands separator
|
||||
LC_NUMERIC = "en_IE.UTF-8";
|
||||
LC_MONETARY = "en_IE.UTF-8";
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
repoTheme = config.repo.theme.kanagawa;
|
||||
account = config.facts.account;
|
||||
theme = config.facts.theme.kanagawa;
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.default-editor-neovim =
|
||||
@@ -34,19 +34,14 @@ in
|
||||
wrappers.neovim = {
|
||||
enable = true;
|
||||
|
||||
# 1. Point to your existing Lua config directory
|
||||
settings.config_directory = ./lua-config;
|
||||
|
||||
# 2. Runtime Dependencies (from lspsAndRuntimeDeps)
|
||||
# These are added to the PATH of the wrapper
|
||||
runtimePkgs = with pkgs; [
|
||||
# Tools
|
||||
universal-ctags
|
||||
ripgrep
|
||||
fd
|
||||
tree-sitter
|
||||
wl-clipboard
|
||||
# LSPs & Formatters
|
||||
stylua
|
||||
taplo
|
||||
yamlfmt
|
||||
@@ -64,15 +59,10 @@ in
|
||||
tinymist
|
||||
typstyle
|
||||
websocat
|
||||
|
||||
# ty
|
||||
# basedpyright
|
||||
ty
|
||||
ruff
|
||||
];
|
||||
|
||||
# 3. Plugins
|
||||
# Nix provisions plugins; lz.n controls when lazy specs are packadd'd.
|
||||
specs = {
|
||||
lz-n = {
|
||||
data = pkgs.vimPlugins.lz-n;
|
||||
@@ -153,9 +143,7 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
# 4. Values exposed to Lua through require("nix-info").settings.
|
||||
settings = {
|
||||
# Hostname/ConfigDir needed for nixd
|
||||
nixdExtras = {
|
||||
nixpkgs = "import ${pkgs.path} {}";
|
||||
nixos_options = ''(builtins.getFlake "path://${account.nixosConfigurationPath}").nixosConfigurations.${osConfig.facts.machine.name}.options'';
|
||||
@@ -163,22 +151,17 @@ in
|
||||
};
|
||||
|
||||
themeSetup = import ./_kanagawa-theme.nix {
|
||||
themeName = repoTheme.name;
|
||||
themeName = theme.name;
|
||||
};
|
||||
|
||||
typstPreviewDependencies = {
|
||||
tinymist = "${pkgs.tinymist}/bin/tinymist";
|
||||
websocat = "${pkgs.websocat}/bin/websocat";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
# 5. Wrapper Configuration
|
||||
# Enable Python/Node providers
|
||||
hosts.python3.nvim-host.enable = true;
|
||||
hosts.node.nvim-host.enable = true;
|
||||
|
||||
# Ensure the bin name matches what you expect
|
||||
binName = "nvim";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
config,
|
||||
facts,
|
||||
lib,
|
||||
pkgs,
|
||||
repo,
|
||||
}:
|
||||
let
|
||||
nixosConfigDir = repo.account.nixosConfigurationPath;
|
||||
nixosConfigDir = facts.account.nixosConfigurationPath;
|
||||
mkTerminalScript =
|
||||
{
|
||||
name,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
repo = config.repo;
|
||||
facts = config.facts;
|
||||
hmModules = config.flake.modules.homeManager;
|
||||
in
|
||||
{
|
||||
@@ -37,21 +37,20 @@ in
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
osConfig,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
borderPalette = repo.theme.kanagawa.palette.niri.border;
|
||||
borderPalette = facts.theme.kanagawa.palette.niri.border;
|
||||
shortcuts = import ./_shortcuts.nix {
|
||||
inherit
|
||||
config
|
||||
facts
|
||||
lib
|
||||
pkgs
|
||||
repo
|
||||
;
|
||||
};
|
||||
machine = osConfig.facts.machine;
|
||||
machine = config.facts.machine;
|
||||
in
|
||||
{
|
||||
home = {
|
||||
@@ -71,12 +70,6 @@ in
|
||||
programs.niri.settings = {
|
||||
outputs = lib.mapAttrs (
|
||||
_: display:
|
||||
let
|
||||
scale = display.scale or null;
|
||||
width = display.width or null;
|
||||
height = display.height or null;
|
||||
refresh = display.refresh or null;
|
||||
in
|
||||
{
|
||||
position = {
|
||||
x = display.x or 0;
|
||||
@@ -86,19 +79,19 @@ in
|
||||
// lib.optionalAttrs (display.primary or false) {
|
||||
"focus-at-startup" = true;
|
||||
}
|
||||
// lib.optionalAttrs (scale != null) {
|
||||
inherit scale;
|
||||
// lib.optionalAttrs (display ? scale) {
|
||||
inherit (display) scale;
|
||||
}
|
||||
// lib.optionalAttrs (width != null && height != null && refresh != null) {
|
||||
// lib.optionalAttrs (display ? width && display ? height && display ? refresh) {
|
||||
mode = {
|
||||
inherit
|
||||
width
|
||||
inherit (display)
|
||||
height
|
||||
refresh
|
||||
width
|
||||
;
|
||||
};
|
||||
}
|
||||
) (machine.displays or { });
|
||||
) machine.displays;
|
||||
|
||||
environment.DISPLAY = ":0";
|
||||
spawn-at-startup = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ inputs, config, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
account = config.facts.account;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.nix =
|
||||
|
||||
@@ -1,19 +1,31 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake.modules.homeManager.noctalia =
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
osConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
homeDir = config.home.homeDirectory;
|
||||
wallpaper = "${homeDir}/media/images/wallpapers/green-leaves.png";
|
||||
loginBox = output: {
|
||||
box_height = 70.0;
|
||||
box_width = 400.0;
|
||||
cx = 1280.0;
|
||||
cy = 1317.0;
|
||||
inherit output;
|
||||
rotation = 0.0;
|
||||
type = "login_box";
|
||||
settings = {
|
||||
background_color = "surface_variant";
|
||||
background_opacity = 0.88;
|
||||
background_radius = 12.0;
|
||||
input_opacity = 1.0;
|
||||
input_radius = 6.0;
|
||||
show_login_button = true;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [ inputs.noctalia.homeModules.default ];
|
||||
@@ -27,22 +39,16 @@
|
||||
};
|
||||
|
||||
bar.default = {
|
||||
end =
|
||||
if osConfig.facts.machine.portable then
|
||||
[
|
||||
end = [
|
||||
"tray"
|
||||
"bluetooth"
|
||||
"volume"
|
||||
]
|
||||
++ lib.optionals config.facts.machine.portable [
|
||||
"network"
|
||||
"battery"
|
||||
"clipboard"
|
||||
"control-center"
|
||||
]
|
||||
else
|
||||
[
|
||||
"tray"
|
||||
"bluetooth"
|
||||
"volume"
|
||||
++ [
|
||||
"clipboard"
|
||||
"control-center"
|
||||
];
|
||||
@@ -56,9 +62,9 @@
|
||||
account.radicale = {
|
||||
name = "Personal";
|
||||
provider = "custom";
|
||||
server_url = "https://radicale.jelles.net/";
|
||||
server_url = config.facts.services.radicale.url;
|
||||
type = "caldav";
|
||||
username = "kiri";
|
||||
username = config.facts.account.name;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -96,40 +102,8 @@
|
||||
visible = true;
|
||||
};
|
||||
widget = {
|
||||
"lockscreen-login-box@DP-2" = {
|
||||
box_height = 70.0;
|
||||
box_width = 400.0;
|
||||
cx = 1280.0;
|
||||
cy = 1317.0;
|
||||
output = "DP-2";
|
||||
rotation = 0.0;
|
||||
type = "login_box";
|
||||
settings = {
|
||||
background_color = "surface_variant";
|
||||
background_opacity = 0.88;
|
||||
background_radius = 12.0;
|
||||
input_opacity = 1.0;
|
||||
input_radius = 6.0;
|
||||
show_login_button = true;
|
||||
};
|
||||
};
|
||||
"lockscreen-login-box@DP-3" = {
|
||||
box_height = 70.0;
|
||||
box_width = 400.0;
|
||||
cx = 1280.0;
|
||||
cy = 1317.0;
|
||||
output = "DP-3";
|
||||
rotation = 0.0;
|
||||
type = "login_box";
|
||||
settings = {
|
||||
background_color = "surface_variant";
|
||||
background_opacity = 0.88;
|
||||
background_radius = 12.0;
|
||||
input_opacity = 1.0;
|
||||
input_radius = 6.0;
|
||||
show_login_button = true;
|
||||
};
|
||||
};
|
||||
"lockscreen-login-box@DP-2" = loginBox "DP-2";
|
||||
"lockscreen-login-box@DP-3" = loginBox "DP-3";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -184,11 +158,11 @@
|
||||
|
||||
wallpaper = {
|
||||
directory = "${homeDir}/media/images/wallpapers";
|
||||
default.path = "${homeDir}/media/images/wallpapers/green-leaves.png";
|
||||
last.path = "${homeDir}/media/images/wallpapers/green-leaves.png";
|
||||
default.path = wallpaper;
|
||||
last.path = wallpaper;
|
||||
monitors = {
|
||||
DP-2.path = "${homeDir}/media/images/wallpapers/green-leaves.png";
|
||||
DP-3.path = "${homeDir}/media/images/wallpapers/green-leaves.png";
|
||||
DP-2.path = wallpaper;
|
||||
DP-3.path = wallpaper;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,181 +0,0 @@
|
||||
{
|
||||
homeDirectory,
|
||||
}:
|
||||
{
|
||||
audio = {
|
||||
enable_sounds = true;
|
||||
sound_volume = 1.0;
|
||||
};
|
||||
|
||||
bar.default = {
|
||||
end = [
|
||||
"tray"
|
||||
"bluetooth"
|
||||
"volume"
|
||||
"clipboard"
|
||||
"control-center"
|
||||
];
|
||||
font_weight = 400;
|
||||
start = [ "workspaces" ];
|
||||
thickness = 30;
|
||||
};
|
||||
|
||||
calendar = {
|
||||
enabled = true;
|
||||
account.radicale = {
|
||||
name = "Personal";
|
||||
provider = "custom";
|
||||
server_url = "https://radicale.jelles.net/";
|
||||
type = "caldav";
|
||||
username = "kiri";
|
||||
};
|
||||
};
|
||||
|
||||
desktop_widgets = {
|
||||
enabled = false;
|
||||
schema_version = 2;
|
||||
widget_order = [ ];
|
||||
grid = {
|
||||
cell_size = 16;
|
||||
major_interval = 4;
|
||||
visible = true;
|
||||
};
|
||||
widget = { };
|
||||
};
|
||||
|
||||
location.address = "Meterik, The Netherlands";
|
||||
|
||||
lockscreen = {
|
||||
blur_intensity = 0.8;
|
||||
blurred_desktop = true;
|
||||
fingerprint = false;
|
||||
tint_intensity = 0.5;
|
||||
};
|
||||
|
||||
lockscreen_widgets = {
|
||||
enabled = true;
|
||||
schema_version = 2;
|
||||
widget_order = [
|
||||
"lockscreen-login-box@DP-2"
|
||||
"lockscreen-login-box@DP-3"
|
||||
];
|
||||
grid = {
|
||||
cell_size = 16;
|
||||
major_interval = 4;
|
||||
visible = true;
|
||||
};
|
||||
widget = {
|
||||
"lockscreen-login-box@DP-2" = {
|
||||
box_height = 70.0;
|
||||
box_width = 400.0;
|
||||
cx = 1280.0;
|
||||
cy = 1317.0;
|
||||
output = "DP-2";
|
||||
rotation = 0.0;
|
||||
type = "login_box";
|
||||
settings = {
|
||||
background_color = "surface_variant";
|
||||
background_opacity = 0.88;
|
||||
background_radius = 12.0;
|
||||
input_opacity = 1.0;
|
||||
input_radius = 6.0;
|
||||
show_login_button = true;
|
||||
};
|
||||
};
|
||||
"lockscreen-login-box@DP-3" = {
|
||||
box_height = 70.0;
|
||||
box_width = 400.0;
|
||||
cx = 1280.0;
|
||||
cy = 1317.0;
|
||||
output = "DP-3";
|
||||
rotation = 0.0;
|
||||
type = "login_box";
|
||||
settings = {
|
||||
background_color = "surface_variant";
|
||||
background_opacity = 0.88;
|
||||
background_radius = 12.0;
|
||||
input_opacity = 1.0;
|
||||
input_radius = 6.0;
|
||||
show_login_button = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nightlight = {
|
||||
enabled = true;
|
||||
temperature_night = 3000;
|
||||
};
|
||||
|
||||
notification = {
|
||||
layer = "overlay";
|
||||
position = "bottom_right";
|
||||
};
|
||||
|
||||
plugins = {
|
||||
enabled = [ ];
|
||||
source = [
|
||||
{
|
||||
kind = "git";
|
||||
location = "https://github.com/noctalia-dev/official-plugins";
|
||||
name = "official";
|
||||
}
|
||||
{
|
||||
kind = "git";
|
||||
location = "https://github.com/noctalia-dev/community-plugins";
|
||||
name = "community";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
shell = {
|
||||
font_family = "Lexend";
|
||||
screen_time_enabled = true;
|
||||
settings_show_advanced = true;
|
||||
ui_scale = 1.1;
|
||||
animation.speed = 1.5;
|
||||
screen_corners = {
|
||||
enabled = true;
|
||||
size = 50;
|
||||
};
|
||||
screenshot.directory = "${homeDirectory}/media/images/screenshots";
|
||||
};
|
||||
|
||||
theme = {
|
||||
builtin = "Kanagawa";
|
||||
community_palette = "Kanagawa Paper";
|
||||
wallpaper_scheme = "m3-content";
|
||||
templates = {
|
||||
enable_builtin_templates = false;
|
||||
enable_community_templates = false;
|
||||
};
|
||||
};
|
||||
|
||||
wallpaper = {
|
||||
directory = "${homeDirectory}/media/images/wallpapers";
|
||||
default.path = "${homeDirectory}/media/images/wallpapers/green-leaves.png";
|
||||
last.path = "${homeDirectory}/media/images/wallpapers/green-leaves.png";
|
||||
monitors = {
|
||||
DP-2.path = "${homeDirectory}/media/images/wallpapers/green-leaves.png";
|
||||
DP-3.path = "${homeDirectory}/media/images/wallpapers/green-leaves.png";
|
||||
};
|
||||
};
|
||||
|
||||
weather.refresh_minutes = 15;
|
||||
|
||||
widget = {
|
||||
bluetooth.hide_when_no_connected_device = true;
|
||||
cat = {
|
||||
audio_spectrum = true;
|
||||
type = "noctalia/bongocat:cat";
|
||||
};
|
||||
clock.format = "{:%b %d | %H:%M}";
|
||||
media = {
|
||||
art_size = 90.0;
|
||||
max_length = 800;
|
||||
};
|
||||
tray.drawer = true;
|
||||
volume.show_label = false;
|
||||
workspaces.display = "none";
|
||||
};
|
||||
}
|
||||
@@ -3,8 +3,8 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
repo = config.repo;
|
||||
account = repo.account;
|
||||
facts = config.facts;
|
||||
account = facts.account;
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.passwords =
|
||||
@@ -19,7 +19,7 @@ in
|
||||
programs.rbw = {
|
||||
enable = true;
|
||||
settings = {
|
||||
base_url = repo.services.vaultwarden.url;
|
||||
base_url = facts.services.vaultwarden.url;
|
||||
email = account.primaryEmail.address;
|
||||
pinentry = pinentryPackage;
|
||||
};
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
repo = config.repo;
|
||||
account = repo.account;
|
||||
facts = config.facts;
|
||||
account = facts.account;
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.email =
|
||||
@@ -138,7 +138,7 @@ in
|
||||
};
|
||||
|
||||
remote = {
|
||||
url = repo.services.radicale.url;
|
||||
url = facts.services.radicale.url;
|
||||
type = "caldav";
|
||||
userName = config.home.username;
|
||||
passwordCommand = [
|
||||
|
||||
@@ -1,21 +1,9 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
repo = config.repo;
|
||||
repoHelpers = repo.helpers;
|
||||
service = repo.services.actual;
|
||||
service = config.facts.services.actual;
|
||||
in
|
||||
{
|
||||
repo.services.actual = {
|
||||
domain = "finance.jelles.net";
|
||||
host = "127.0.0.1";
|
||||
port = 3000;
|
||||
url = "https://finance.jelles.net";
|
||||
};
|
||||
|
||||
flake.modules.nixos.actual =
|
||||
{ lib, ... }:
|
||||
lib.mkMerge [
|
||||
{
|
||||
flake.modules.nixos.actual = {
|
||||
services.actual = {
|
||||
enable = true;
|
||||
openFirewall = false;
|
||||
@@ -24,13 +12,8 @@ in
|
||||
hostname = service.host;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
(repoHelpers.mkCaddyReverseProxy {
|
||||
inherit (service)
|
||||
domain
|
||||
port
|
||||
;
|
||||
})
|
||||
];
|
||||
services.caddy.virtualHosts.${service.domain}.extraConfig =
|
||||
"reverse_proxy :${toString service.port}";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
repo = config.repo;
|
||||
facts = config.facts;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.caddy = {
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
email = repo.account.primaryEmail.address;
|
||||
email = facts.account.primaryEmail.address;
|
||||
openFirewall = true;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
account = config.facts.account;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.deluge =
|
||||
|
||||
@@ -1,21 +1,9 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
repo = config.repo;
|
||||
repoHelpers = repo.helpers;
|
||||
service = repo.services.gitea;
|
||||
service = config.facts.services.gitea;
|
||||
in
|
||||
{
|
||||
repo.services.gitea = {
|
||||
domain = "git.jelles.net";
|
||||
host = "127.0.0.1";
|
||||
port = 3001;
|
||||
url = "https://git.jelles.net/";
|
||||
};
|
||||
|
||||
flake.modules.nixos.gitea =
|
||||
{ lib, ... }:
|
||||
lib.mkMerge [
|
||||
{
|
||||
flake.modules.nixos.gitea = {
|
||||
services.gitea = {
|
||||
enable = true;
|
||||
|
||||
@@ -33,17 +21,10 @@ in
|
||||
service.DISABLE_REGISTRATION = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
services.openssh.settings.AllowUsers = [ "gitea" ];
|
||||
}
|
||||
|
||||
(repoHelpers.mkCaddyReverseProxy {
|
||||
inherit (service)
|
||||
domain
|
||||
port
|
||||
;
|
||||
})
|
||||
];
|
||||
services.caddy.virtualHosts.${service.domain}.extraConfig =
|
||||
"reverse_proxy :${toString service.port}";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
account = config.facts.account;
|
||||
personalPublicKeys =
|
||||
machines:
|
||||
map (machine: (machine.sshKeys or { }).personal.publicKey) (
|
||||
@@ -29,6 +29,6 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
users.users.${account.name}.openssh.authorizedKeys.keys = personalPublicKeys config.repo.machines;
|
||||
users.users.${account.name}.openssh.authorizedKeys.keys = personalPublicKeys config.facts.machines;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,21 +1,9 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
repo = config.repo;
|
||||
repoHelpers = repo.helpers;
|
||||
service = repo.services.radicale;
|
||||
service = config.facts.services.radicale;
|
||||
in
|
||||
{
|
||||
repo.services.radicale = {
|
||||
domain = "radicale.jelles.net";
|
||||
host = "127.0.0.1";
|
||||
port = 5232;
|
||||
url = "https://radicale.jelles.net/";
|
||||
};
|
||||
|
||||
flake.modules.nixos.radicale =
|
||||
{ lib, ... }:
|
||||
lib.mkMerge [
|
||||
{
|
||||
flake.modules.nixos.radicale = {
|
||||
services.radicale = {
|
||||
enable = true;
|
||||
settings = {
|
||||
@@ -30,27 +18,13 @@ in
|
||||
storage.filesystem_folder = "/var/lib/radicale/collections";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
(repoHelpers.mkCaddyReverseProxy {
|
||||
inherit (service)
|
||||
domain
|
||||
port
|
||||
;
|
||||
extraHeaders = [
|
||||
{
|
||||
name = "X-Script-Name";
|
||||
value = "/";
|
||||
services.caddy.virtualHosts.${service.domain}.extraConfig = ''
|
||||
reverse_proxy :${toString service.port} {
|
||||
header_up X-Script-Name /
|
||||
header_up X-Forwarded-For {remote}
|
||||
header_up X-Remote-User {http.auth.user.id}
|
||||
}
|
||||
{
|
||||
name = "X-Forwarded-For";
|
||||
value = "{remote}";
|
||||
}
|
||||
{
|
||||
name = "X-Remote-User";
|
||||
value = "{http.auth.user.id}";
|
||||
}
|
||||
];
|
||||
})
|
||||
];
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.transmission =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
services.transmission = {
|
||||
enable = true;
|
||||
package = pkgs.transmission_4;
|
||||
openPeerPorts = true;
|
||||
downloadDirPermissions = "775";
|
||||
|
||||
settings = {
|
||||
download-dir = "${account.homeDirectory}/torrents";
|
||||
incomplete-dir = "${account.homeDirectory}/torrents/.incomplete";
|
||||
peer-port = 43864;
|
||||
umask = "002";
|
||||
};
|
||||
};
|
||||
|
||||
# NOTE: Upstream bug?
|
||||
systemd.services.transmission-setup.requiredBy = [ "transmission.service" ];
|
||||
|
||||
users.users.${account.name}.extraGroups = [ config.services.transmission.group ];
|
||||
};
|
||||
}
|
||||
@@ -1,21 +1,9 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
repo = config.repo;
|
||||
repoHelpers = repo.helpers;
|
||||
service = repo.services.vaultwarden;
|
||||
service = config.facts.services.vaultwarden;
|
||||
in
|
||||
{
|
||||
repo.services.vaultwarden = {
|
||||
domain = "vault.jelles.net";
|
||||
host = "127.0.0.1";
|
||||
port = 8100;
|
||||
url = "https://vault.jelles.net";
|
||||
};
|
||||
|
||||
flake.modules.nixos.vaultwarden =
|
||||
{ lib, ... }:
|
||||
lib.mkMerge [
|
||||
{
|
||||
flake.modules.nixos.vaultwarden = {
|
||||
services.vaultwarden = {
|
||||
enable = true;
|
||||
backupDir = "/var/backup/vaultwarden";
|
||||
@@ -26,13 +14,8 @@ in
|
||||
ROCKET_LOG = "critical";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
(repoHelpers.mkCaddyReverseProxy {
|
||||
inherit (service)
|
||||
domain
|
||||
port
|
||||
;
|
||||
})
|
||||
];
|
||||
services.caddy.virtualHosts.${service.domain}.extraConfig =
|
||||
"reverse_proxy :${toString service.port}";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,28 +4,17 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
syncMachines = lib.listToAttrs (
|
||||
lib.concatLists (
|
||||
lib.mapAttrsToList (
|
||||
account = config.facts.account;
|
||||
syncMachines = lib.mapAttrs' (
|
||||
machineName: machine:
|
||||
let
|
||||
syncthingId = machine.syncthingId or null;
|
||||
name = "${account.name}@${machineName}";
|
||||
in
|
||||
lib.optional (syncthingId != null) (
|
||||
let
|
||||
name = "${config.repo.account.name}@${machineName}";
|
||||
in
|
||||
{
|
||||
lib.nameValuePair name {
|
||||
inherit name;
|
||||
value = {
|
||||
inherit name;
|
||||
id = syncthingId;
|
||||
};
|
||||
id = machine.syncthingId;
|
||||
}
|
||||
)
|
||||
) config.repo.machines
|
||||
)
|
||||
);
|
||||
) (lib.filterAttrs (_: machine: (machine.syncthingId or null) != null) config.facts.machines);
|
||||
|
||||
syncPhones = {
|
||||
"pixel-10" = {
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake.modules.nixos.systemd-boot =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
boot = {
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
consoleMode = "auto";
|
||||
configurationLimit = 5;
|
||||
extraInstallCommands = ''
|
||||
ENTRIES="${config.boot.loader.efi.efiSysMountPoint}/loader/entries"
|
||||
PROFILES="/nix/var/nix/profiles"
|
||||
|
||||
for file in "$ENTRIES"/nixos-generation-*.conf; do
|
||||
generation=$(${pkgs.coreutils}/bin/basename "$file" | ${pkgs.gnugrep}/bin/grep -o -E '[0-9]+')
|
||||
timestamp=$(${pkgs.coreutils}/bin/stat -c %y "$PROFILES/system-$generation-link" 2>/dev/null | ${pkgs.coreutils}/bin/cut -d. -f1)
|
||||
|
||||
if [ -z "$timestamp" ]; then
|
||||
timestamp="Unknown Date"
|
||||
fi
|
||||
|
||||
${pkgs.gnused}/bin/sed -i "s/^version .*/version Generation $generation - $timestamp/" "$file"
|
||||
done
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
tmp.cleanOnBoot = true;
|
||||
kernelPackages = pkgs.linuxPackages_latest;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
repo = config.repo;
|
||||
facts = config.facts;
|
||||
|
||||
kittySingleInstance =
|
||||
pkgs:
|
||||
@@ -10,10 +10,7 @@ let
|
||||
meta = pkgs.kitty.meta;
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
# Wrap the binary to always launch as a single instance
|
||||
wrapProgram $out/bin/kitty --add-flags "-1"
|
||||
|
||||
# Patch the .desktop file for strict app launchers like Vicinae
|
||||
rm $out/share/applications/kitty.desktop
|
||||
sed 's/Exec=kitty/Exec=kitty -1/g' ${pkgs.kitty}/share/applications/kitty.desktop > $out/share/applications/kitty.desktop
|
||||
'';
|
||||
@@ -28,8 +25,7 @@ in
|
||||
...
|
||||
}:
|
||||
let
|
||||
repoTheme = repo.theme.kanagawa;
|
||||
palette = repoTheme.palette;
|
||||
palette = facts.theme.kanagawa.palette;
|
||||
hex = lib.removePrefix "#";
|
||||
in
|
||||
{
|
||||
@@ -44,8 +40,6 @@ in
|
||||
font-bold-italic = "JetBrains Mono:style=Bold Italic:size=11:fontfeatures=-liga:fontfeatures=-calt";
|
||||
gamma-correct-blending = "yes";
|
||||
pad = "3x3";
|
||||
# vertical-letter-offset = -1;
|
||||
# letter-spacing = -0.2;
|
||||
};
|
||||
|
||||
tweak.box-drawing-base-thickness = 0.1;
|
||||
@@ -92,13 +86,14 @@ in
|
||||
flake.modules.homeManager.terminal-kitty =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
repoTheme = repo.theme.kanagawa;
|
||||
palette = repoTheme.palette;
|
||||
theme = facts.theme.kanagawa;
|
||||
palette = theme.palette;
|
||||
kitty = kittySingleInstance pkgs;
|
||||
in
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
package = kittySingleInstance pkgs;
|
||||
package = kitty;
|
||||
font = {
|
||||
name = "JetBrains Mono";
|
||||
size = 11;
|
||||
@@ -116,7 +111,7 @@ in
|
||||
# Nerd Fonts v3.4.0
|
||||
symbol_map U+e000-U+e00a,U+e0a0-U+e0a2,U+e0a3,U+e0b0-U+e0b3,U+e0b4-U+e0c8,U+e0ca,U+e0cc-U+e0d7,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b7,U+e700-U+e8ef,U+ea60-U+ec1e,U+ed00-U+efce,U+f000-U+f2ff,U+f300-U+f381,U+f400-U+f533,U+f0001-U+f1af0 Symbols Nerd Font Mono
|
||||
|
||||
## name: ${repoTheme.displayName}
|
||||
## name: ${theme.displayName}
|
||||
## license: MIT
|
||||
## author: Tommaso Laurenzi
|
||||
## upstream: https://github.com/rebelot/kanagawa.nvim/
|
||||
@@ -165,9 +160,7 @@ in
|
||||
WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
# Use the wrapped package (which already includes -1)
|
||||
# Start it hidden and run an infinite dummy process so the instance stays alive
|
||||
ExecStart = "${lib.getExe (kittySingleInstance pkgs)} --start-as=hidden ${pkgs.coreutils}/bin/tail -f /dev/null";
|
||||
ExecStart = "${lib.getExe kitty} --start-as=hidden ${pkgs.coreutils}/bin/tail -f /dev/null";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
};
|
||||
@@ -188,10 +181,13 @@ in
|
||||
|
||||
flake.modules.homeManager.primary-terminal-kitty =
|
||||
{ lib, pkgs, ... }:
|
||||
let
|
||||
kitty = kittySingleInstance pkgs;
|
||||
in
|
||||
{
|
||||
imports = [ config.flake.modules.homeManager.terminal-kitty ];
|
||||
|
||||
facts.desktop.terminalCommand = lib.getExe (kittySingleInstance pkgs);
|
||||
facts.desktop.terminalCommand = lib.getExe kitty;
|
||||
|
||||
xdg.terminal-exec = {
|
||||
enable = true;
|
||||
|
||||
@@ -3,26 +3,23 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
repo = config.repo;
|
||||
repoHelpers = repo.helpers;
|
||||
facts = config.facts;
|
||||
hmModules = config.flake.modules.homeManager;
|
||||
mkCursorTheme =
|
||||
pkgs:
|
||||
facts.theme.cursor
|
||||
// {
|
||||
package = pkgs.${facts.theme.cursor.packageName};
|
||||
};
|
||||
in
|
||||
{
|
||||
repo.theme = import ./_theme.nix;
|
||||
|
||||
flake.modules.nixos.theme =
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
repoTheme = repo.theme;
|
||||
cursorTheme = repoTheme.cursor // {
|
||||
package = repoHelpers.resolvePackagePath {
|
||||
inherit pkgs;
|
||||
path = repoTheme.cursor.packagePath;
|
||||
};
|
||||
};
|
||||
cursorTheme = mkCursorTheme pkgs;
|
||||
in
|
||||
{
|
||||
home-manager.sharedModules = [ hmModules.theme ];
|
||||
@@ -40,16 +37,11 @@ in
|
||||
flake.modules.homeManager.theme =
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
repoTheme = repo.theme;
|
||||
cursorTheme = repoTheme.cursor // {
|
||||
package = repoHelpers.resolvePackagePath {
|
||||
inherit pkgs;
|
||||
path = repoTheme.cursor.packagePath;
|
||||
};
|
||||
};
|
||||
theme = facts.theme;
|
||||
cursorTheme = mkCursorTheme pkgs;
|
||||
|
||||
kanagawaThemeSrc = pkgs.fetchFromGitHub {
|
||||
inherit (repoTheme.kanagawa)
|
||||
inherit (theme.kanagawa)
|
||||
hash
|
||||
owner
|
||||
repo
|
||||
@@ -58,7 +50,7 @@ in
|
||||
};
|
||||
|
||||
kanagawaOverride = {
|
||||
version = repoTheme.kanagawa.version;
|
||||
version = theme.kanagawa.version;
|
||||
src = kanagawaThemeSrc;
|
||||
};
|
||||
in
|
||||
@@ -79,12 +71,12 @@ in
|
||||
"sftp://orion Orion VPS"
|
||||
];
|
||||
theme = {
|
||||
name = repoTheme.kanagawa.gtkThemeName;
|
||||
name = theme.kanagawa.gtkThemeName;
|
||||
package = pkgs.kanagawa-gtk-theme.overrideAttrs (_: kanagawaOverride);
|
||||
};
|
||||
gtk4.theme = null;
|
||||
iconTheme = {
|
||||
name = repoTheme.kanagawa.iconThemeName;
|
||||
name = theme.kanagawa.iconThemeName;
|
||||
package = pkgs.kanagawa-icon-theme.overrideAttrs (_: kanagawaOverride);
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
repo = config.repo;
|
||||
in
|
||||
{
|
||||
flake.modules.homeManager.vicinae =
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
repoTheme = repo.theme.kanagawa;
|
||||
palette = repoTheme.palette;
|
||||
in
|
||||
{
|
||||
programs.vicinae = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
|
||||
themes.${repoTheme.name} = {
|
||||
meta = {
|
||||
version = 1;
|
||||
name = repoTheme.displayName;
|
||||
description = "A dark theme inspired by the colors of the famous painting by Katsushika Hokusai.";
|
||||
variant = "dark";
|
||||
inherits = "vicinae-dark";
|
||||
};
|
||||
colors = {
|
||||
core = {
|
||||
background = palette.background;
|
||||
foreground = palette.foreground;
|
||||
secondary_background = palette.secondaryBackground;
|
||||
border = palette.border;
|
||||
accent = palette.accents.blue;
|
||||
};
|
||||
accents = {
|
||||
inherit (palette.accents)
|
||||
blue
|
||||
cyan
|
||||
green
|
||||
magenta
|
||||
orange
|
||||
purple
|
||||
red
|
||||
yellow
|
||||
;
|
||||
};
|
||||
input.border_focus = "colors.core.accent";
|
||||
};
|
||||
};
|
||||
|
||||
settings.theme = {
|
||||
light.name = repoTheme.name;
|
||||
dark.name = repoTheme.name;
|
||||
};
|
||||
|
||||
extensions = with inputs.vicinae-extensions.packages.${pkgs.stdenv.hostPlatform.system}; [
|
||||
agenda
|
||||
brotab
|
||||
fuzzy-files
|
||||
github
|
||||
it-tools
|
||||
niri
|
||||
nix
|
||||
podman
|
||||
process-manager
|
||||
pulseaudio
|
||||
simple-bookmarks
|
||||
ssh
|
||||
];
|
||||
};
|
||||
|
||||
facts.desktop.launcherCommand = lib.getExe config.programs.vicinae.package;
|
||||
};
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
repo = {
|
||||
account = rec {
|
||||
name = "kiri";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
homeDirectory = "/home/${name}";
|
||||
nixosConfigurationPath = "${homeDirectory}/.config/nixos";
|
||||
|
||||
emails = {
|
||||
personal = {
|
||||
address = "mail@jelles.net";
|
||||
primary = true;
|
||||
type = "mxrouting";
|
||||
};
|
||||
old = {
|
||||
address = "mail@jellespreeuwenberg.nl";
|
||||
type = "mxrouting";
|
||||
};
|
||||
uni = {
|
||||
address = "j.spreeuwenberg@student.tue.nl";
|
||||
type = "office365";
|
||||
};
|
||||
work = {
|
||||
address = "jelle.spreeuwenberg@yookr.org";
|
||||
type = "office365";
|
||||
};
|
||||
};
|
||||
|
||||
primaryEmail = emails.personal;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
factsOption = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
freeformType = lib.types.attrsOf lib.types.anything;
|
||||
};
|
||||
default = { };
|
||||
};
|
||||
in
|
||||
{
|
||||
options.facts = factsOption;
|
||||
|
||||
config = {
|
||||
facts = {
|
||||
account = rec {
|
||||
name = "kiri";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
homeDirectory = "/home/${name}";
|
||||
nixosConfigurationPath = "${homeDirectory}/.config/nixos";
|
||||
|
||||
emails = {
|
||||
personal = {
|
||||
address = "mail@jelles.net";
|
||||
primary = true;
|
||||
type = "mxrouting";
|
||||
};
|
||||
old = {
|
||||
address = "mail@jellespreeuwenberg.nl";
|
||||
type = "mxrouting";
|
||||
};
|
||||
uni = {
|
||||
address = "j.spreeuwenberg@student.tue.nl";
|
||||
type = "office365";
|
||||
};
|
||||
work = {
|
||||
address = "jelle.spreeuwenberg@yookr.org";
|
||||
type = "office365";
|
||||
};
|
||||
};
|
||||
|
||||
primaryEmail = emails.personal;
|
||||
};
|
||||
|
||||
services = {
|
||||
actual = {
|
||||
domain = "finance.jelles.net";
|
||||
host = "127.0.0.1";
|
||||
port = 3000;
|
||||
url = "https://finance.jelles.net";
|
||||
};
|
||||
gitea = {
|
||||
domain = "git.jelles.net";
|
||||
host = "127.0.0.1";
|
||||
port = 3001;
|
||||
url = "https://git.jelles.net/";
|
||||
};
|
||||
radicale = {
|
||||
domain = "radicale.jelles.net";
|
||||
host = "127.0.0.1";
|
||||
port = 5232;
|
||||
url = "https://radicale.jelles.net/";
|
||||
};
|
||||
vaultwarden = {
|
||||
domain = "vault.jelles.net";
|
||||
host = "127.0.0.1";
|
||||
port = 8100;
|
||||
url = "https://vault.jelles.net";
|
||||
};
|
||||
};
|
||||
|
||||
theme = import ./capabilities/_theme.nix;
|
||||
};
|
||||
|
||||
flake.modules.nixos.facts = { lib, ... }: {
|
||||
options.facts = factsOption;
|
||||
};
|
||||
|
||||
flake.modules.homeManager.facts =
|
||||
{
|
||||
lib,
|
||||
osConfig ? { },
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.facts = factsOption;
|
||||
|
||||
config.facts = lib.optionalAttrs (osConfig ? facts) {
|
||||
inherit (osConfig.facts)
|
||||
account
|
||||
machine
|
||||
machines
|
||||
services
|
||||
theme
|
||||
;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
+58
-3
@@ -3,10 +3,65 @@
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
mkHost =
|
||||
name: machine:
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
account = config.facts.account;
|
||||
hmStateVersion = machine.hmStateVersion or machine.stateVersion;
|
||||
machineFacts = {
|
||||
displays = { };
|
||||
portable = false;
|
||||
sshKeys = { };
|
||||
syncthingId = null;
|
||||
}
|
||||
// machine
|
||||
// {
|
||||
inherit name hmStateVersion;
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
config.flake.modules.nixos.${name}
|
||||
];
|
||||
|
||||
facts = {
|
||||
inherit (config.facts)
|
||||
account
|
||||
machines
|
||||
services
|
||||
theme
|
||||
;
|
||||
machine = machineFacts;
|
||||
};
|
||||
|
||||
networking.hostName = name;
|
||||
system.stateVersion = machine.stateVersion;
|
||||
|
||||
programs.zsh.enable = true;
|
||||
|
||||
users.users.${account.name} = {
|
||||
isNormalUser = true;
|
||||
home = account.homeDirectory;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
home-manager.users.${account.name}.home = {
|
||||
username = account.name;
|
||||
homeDirectory = account.homeDirectory;
|
||||
stateVersion = hmStateVersion;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.flake-parts.flakeModules.modules
|
||||
./data.nix
|
||||
./facts.nix
|
||||
];
|
||||
|
||||
systems = [ "x86_64-linux" ];
|
||||
@@ -15,9 +70,9 @@
|
||||
name: machine:
|
||||
inputs.nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [ (config.repo.helpers.mkHost name machine) ];
|
||||
modules = [ (mkHost name machine) ];
|
||||
}
|
||||
) config.repo.machines;
|
||||
) config.facts.machines;
|
||||
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{ config, ... }:
|
||||
let
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
account = config.repo.account;
|
||||
account = config.facts.account;
|
||||
in
|
||||
{
|
||||
repo.machines.orion = {
|
||||
facts.machines.orion = {
|
||||
syncthingId = "NNRNQKZ-OWPHSVA-B6KKBHE-SDYLSTV-7SVHGPR-NEWLKPL-4MWNJG4-G5FHUAI";
|
||||
|
||||
stateVersion = "24.05";
|
||||
|
||||
@@ -7,7 +7,7 @@ let
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
in
|
||||
{
|
||||
repo.machines.polaris = {
|
||||
facts.machines.polaris = {
|
||||
sshKeys = {
|
||||
personal.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEVORk45HKkX7gaGGp90KsVyUy6t+fKhbWN/grjkf3cQ kiri@polaris";
|
||||
work.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM5DMV6EQzsscgEOE0912mNglUHTEl+LPnaWYjj0y57B kiri@polaris#work";
|
||||
|
||||
@@ -7,7 +7,7 @@ let
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
in
|
||||
{
|
||||
repo.machines.zenith = {
|
||||
facts.machines.zenith = {
|
||||
portable = true;
|
||||
|
||||
sshKeys = {
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
|
||||
resolvePackagePath =
|
||||
{
|
||||
pkgs,
|
||||
path,
|
||||
}:
|
||||
lib.attrByPath path null pkgs;
|
||||
|
||||
mkCaddyReverseProxy =
|
||||
{
|
||||
domain,
|
||||
port,
|
||||
extraHeaders ? [ ],
|
||||
extraConfigText ? "",
|
||||
}:
|
||||
let
|
||||
headerLines = map (header: " header_up ${header.name} ${header.value}") extraHeaders;
|
||||
extraConfigLines = map (line: " ${line}") (
|
||||
lib.filter (line: line != "") (lib.splitString "\n" extraConfigText)
|
||||
);
|
||||
bodyLines = headerLines ++ extraConfigLines;
|
||||
body = lib.concatStringsSep "\n" bodyLines;
|
||||
in
|
||||
{
|
||||
services.caddy.virtualHosts.${domain}.extraConfig =
|
||||
if body == "" then
|
||||
"reverse_proxy :${toString port}"
|
||||
else
|
||||
''
|
||||
reverse_proxy :${toString port} {
|
||||
${body}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
mkHost =
|
||||
name: machine:
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
accountHome = account.homeDirectory or "/home/${account.name}";
|
||||
normalizedMachine = machine // {
|
||||
inherit name;
|
||||
displays = machine.displays or { };
|
||||
hmStateVersion = machine.hmStateVersion or machine.stateVersion;
|
||||
portable = machine.portable or false;
|
||||
sshKeys = machine.sshKeys or { };
|
||||
syncthingId = machine.syncthingId or null;
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
nixosModules.${name}
|
||||
];
|
||||
|
||||
facts.machine = normalizedMachine;
|
||||
|
||||
networking.hostName = name;
|
||||
system.stateVersion = machine.stateVersion;
|
||||
|
||||
programs.zsh.enable = true;
|
||||
|
||||
users.users.${account.name} = {
|
||||
isNormalUser = true;
|
||||
home = accountHome;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
home-manager.users.${account.name} = {
|
||||
home = {
|
||||
username = account.name;
|
||||
homeDirectory = accountHome;
|
||||
stateVersion = normalizedMachine.hmStateVersion;
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
config.repo.helpers = {
|
||||
inherit
|
||||
mkCaddyReverseProxy
|
||||
mkHost
|
||||
resolvePackagePath
|
||||
;
|
||||
};
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{ lib, ... }:
|
||||
{
|
||||
options.repo = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
freeformType = lib.types.attrsOf lib.types.anything;
|
||||
|
||||
options.helpers = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.raw;
|
||||
default = { };
|
||||
internal = true;
|
||||
};
|
||||
};
|
||||
default = { };
|
||||
};
|
||||
|
||||
config.flake.modules.nixos.facts =
|
||||
{ lib, ... }:
|
||||
{
|
||||
options.facts.machine = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.anything;
|
||||
default = { };
|
||||
};
|
||||
};
|
||||
|
||||
config.flake.modules.homeManager.facts =
|
||||
{ lib, ... }:
|
||||
{
|
||||
options.facts.desktop = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.anything;
|
||||
default = { };
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
let
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
homeModules = config.flake.modules.homeManager;
|
||||
account = config.repo.account;
|
||||
account = config.facts.account;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.workstation-base = {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ config, ... }:
|
||||
let
|
||||
account = config.repo.account;
|
||||
account = config.facts.account;
|
||||
nixosModules = config.flake.modules.nixos;
|
||||
in
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user