chore: bump all
build / build (push) Failing after 53s

This commit is contained in:
2026-06-07 13:26:45 -06:00
parent ce31e48d42
commit 3ad33b734a
19 changed files with 741 additions and 726 deletions
-25
View File
@@ -1,25 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.dank-material-shell;
json = pkgs.formats.json {};
in {
options.sydnix.dank-material-shell = {
enable = lib.mkEnableOption "DMS";
settings = lib.mkOption {
type = json.type;
default = { };
description = ''
DankMaterialShell configuration settings as an attribute set,
to be written to ~/.config/DankMaterialShell/settings.json.
'';
};
};
config = lib.mkIf cfg.enable {
xdg.configFile = {
"DankMaterialShell/settings.json".source =
json.generate "settings.json" cfg.settings;
};
};
}
+15
View File
@@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.guile;
in {
options.sydnix.guile = {
enable = lib.mkEnableOption "Guile Scheme";
};
config = lib.mkIf cfg.enable {
home.file.".guile".text = ''
(use-modules (ice-9 readline))
(activate-readline)
'';
};
}
+2 -2
View File
@@ -45,8 +45,8 @@ in {
config = mkIf cfg.enable {
home.persistence = {
"/persist/home/${config.home.username}" = {
allowOther = true;
"/persist" = {
# allowOther = true;
directories = cfg.directories ++ cfg.cache.directories;
files = cfg.files ++ cfg.cache.files;
};
+1 -1
View File
@@ -20,7 +20,7 @@ in {
# https://github.com/ValveSoftware/steam-for-linux/issues/10552
# https://github.com/nix-community/impermanence/issues/165
# { directory = ".local/share/Steam"; method = "symlink"; }
{ directory = ".steam"; method = "symlink"; }
{ directory = ".steam"; }
];
home.packages = [
+1 -1
View File
@@ -7,6 +7,6 @@ in {
};
config = lib.mkIf cfg.overlay.enable {
nixpkgs.overlays = [ inputs.sydpkgs.overlays.default ];
# nixpkgs.overlays = [ inputs.sydpkgs.overlays.default ];
};
}
+8 -23
View File
@@ -13,34 +13,17 @@ in {
#
# For an overview of important files in the profile directory, see
# https://support.mozilla.org/en-US/kb/recovering-important-data-from-an-old-profile.
sydnix.impermanence =
{ directories = [ ".mozilla/firefox/msyds" ]; };
# let p = ".mozilla/firefox/msyds";
# in {
# files = [
# # Passwords
# "${p}/key4.db"
# "${p}/logins.json"
# "${p}/logins-backup.json"
# # Site-specific permissions
# "${p}/permissions.sqlite"
# # Bookmarks, downloads and browsing history
# "${p}/places.sqlite"
# # Cached favicons for use in the history menu.
# "${p}/favicons.sqlite"
# # Cookies
# "${p}/cookies.sqlite"
# # Security certificate settings
# "${p}/cert9.db"
# # Form history (for completions)
# "${p}/formhistory.sqlite"
# ];
# };
sydnix.impermanence.directories = [
"${config.xdg.configHome}/mozilla/firefox"
".cache/mozilla/firefox"
".mozilla"
];
stylix.targets.firefox.profileNames = [ "msyds" ];
programs.firefox = {
enable = true;
# configPath = "${config.xdg.configHome}/mozilla/firefox";
# Available language codes can be found on the releases page:
# https://releases.mozilla.org/pub/firefox/releases/134.0.2/linux-x86_64/xpi/.
@@ -177,6 +160,8 @@ in {
sidebery
adaptive-tab-bar-colour
adnauseam
yomitan
bitwarden
# tree-style-tab
# tab-unload-for-tree-style-tab
# tst-tab-search
-4
View File
@@ -342,10 +342,6 @@ in {
place-within-backdrop = true;
}
];
# debug = {
# wait-for-frame-completion-in-pipewire = {};
# };
};
};
};
+313 -409
View File
@@ -11,416 +11,320 @@ in {
enable = lib.mkEnableOption "Dank Material Shell";
};
config = lib.mkIf cfg.enable
(let
theme = {
dark = with config.lib.stylix.colors.withHashtag; {
name = "Stylix generatated dark theme";
primary = base0D;
primaryText = base00;
primaryContainer = base0C;
secondary = base0E;
surface = base01;
surfaceText = base05;
surfaceVariant = base02;
surfaceVariantText = base04;
surfaceTint = base0D;
background = base00;
backgroundText = base05;
outline = base03;
surfaceContainer = base01;
surfaceContainerHigh = base02;
surfaceContainerHighest = base03;
error = base08;
warning = base0A;
info = base0C;
} // {
primary = base06;
surfaceContainerHigh = "#2a2a37"; # Sunk Ink 2
surfaceContainerHighest = base05;
};
light = with config.lib.stylix.colors.withHashtag; {
name = "Stylix generatated light theme";
primary = base0D;
primaryText = base07;
primaryContainer = base0C;
secondary = base0E;
surface = base06;
surfaceText = base01;
surfaceVariant = base07;
surfaceVariantText = base02;
surfaceTint = base0D;
background = base07;
backgroundText = base00;
outline = base04;
surfaceContainer = base06;
surfaceContainerHigh = base05;
surfaceContainerHighest = base04;
error = base08;
warning = base0A;
info = base0C;
};
};
in {
programs.niri.settings = {
# Open DMS windows as floating by default
window-rules = [
{
matches = [{app-id = "#org.quickshell$";}];
open-floating = true;
}
];
# Blur wallpaper when overview is open.
layer-rules = [
{
matches = [{ namespace = "dms:blurwallpaper"; }];
place-within-backdrop = true;
}
];
spawn-at-startup = [
{
command = [
(lib.getExe' pkgs.wl-clipboard "wl-paste")
"--watch" "cliphist" "store"
];
}
];
};
sydnix.users.crumb.niri = {
polkit.enable = false;
swaylock.enable = false;
portal.enable = false;
swaync.enable = false;
gammastep.enable = false;
binds =
let dms-ipc = config.lib.niri.actions.spawn "dms" "ipc";
in {
"Mod+D" = {
action = dms-ipc "spotlight" "toggle";
hotkey-overlay.title = "Toggle Application Launcher";
};
"Mod+P" = {
action = dms-ipc "notepad" "toggle";
hotkey-overlay.title = "Toggle Notepad";
};
"Mod+Ctrl+L" = {
action = dms-ipc "lock" "lock";
hotkey-overlay.title = "Toggle Lock Screen";
};
"XF86AudioRaiseVolume" = {
allow-when-locked = true;
action = dms-ipc "audio" "increment" "3";
};
"XF86AudioLowerVolume" = {
allow-when-locked = true;
action = dms-ipc "audio" "decrement" "3";
};
"XF86AudioMute" = {
allow-when-locked = true;
action = dms-ipc "audio" "mute";
};
"XF86AudioMicMute" = {
allow-when-locked = true;
action = dms-ipc "audio" "micmute";
};
"XF86MonBrightnessUp" = {
allow-when-locked = true;
action = dms-ipc "brightness" "increment" "5" "";
};
"XF86MonBrightnessDown" = {
allow-when-locked = true;
action = dms-ipc "brightness" "decrement" "5" "";
};
config = lib.mkIf cfg.enable {
programs.niri.settings = {
# Open DMS windows as floating by default
window-rules = [
{
matches = [{app-id = "#org.quickshell$";}];
open-floating = true;
}
];
# Blur wallpaper when overview is open.
layer-rules = [
{
matches = [{ namespace = "dms:blurwallpaper"; }];
place-within-backdrop = true;
}
];
spawn-at-startup = [
{
command = [
(lib.getExe' pkgs.wl-clipboard "wl-paste")
"--watch" "cliphist" "store"
];
}
];
};
stylix.targets.dank-material-shell.enable = true;
sydnix.users.crumb.niri = {
polkit.enable = false;
swaylock.enable = false;
portal.enable = false;
swaync.enable = false;
gammastep.enable = false;
binds =
let dms-ipc = config.lib.niri.actions.spawn "dms" "ipc";
in {
"Mod+D" = {
action = dms-ipc "spotlight" "toggle";
hotkey-overlay.title = "Toggle Application Launcher";
};
"Mod+P" = {
action = dms-ipc "notepad" "toggle";
hotkey-overlay.title = "Toggle Notepad";
};
"Mod+Ctrl+L" = {
action = dms-ipc "lock" "lock";
hotkey-overlay.title = "Toggle Lock Screen";
};
"XF86AudioRaiseVolume" = {
allow-when-locked = true;
action = dms-ipc "audio" "increment" "3";
};
"XF86AudioLowerVolume" = {
allow-when-locked = true;
action = dms-ipc "audio" "decrement" "3";
};
"XF86AudioMute" = {
allow-when-locked = true;
action = dms-ipc "audio" "mute";
};
"XF86AudioMicMute" = {
allow-when-locked = true;
action = dms-ipc "audio" "micmute";
};
"XF86MonBrightnessUp" = {
allow-when-locked = true;
action = dms-ipc "brightness" "increment" "5" "";
};
"XF86MonBrightnessDown" = {
allow-when-locked = true;
action = dms-ipc "brightness" "decrement" "5" "";
};
};
sydnix.dank-material-shell = {
enable = true;
settings = {
theme = "dark";
currentThemeName = "custom";
customThemeFile =
pkgs.writeText
"dankMaterialShell-stylix-theme.json"
(builtins.toJSON theme);
popupTransparency = 1;
dockTransparency = 1;
use24HourClock = true;
showSeconds = false;
useFahrenheit = false;
nightModeEnabled = true;
animationSpeed = 1;
customAnimationDuration = 500;
wallpaperFillMode = "Fill";
blurredWallpaperLayer = false;
blurWallpaperOnOverview = true;
showLauncherButton = true;
showWorkspaceSwitcher = true;
showFocusedWindow = true;
showWeather = false;
showMusic = true;
showClipboard = true;
showCpuUsage = true;
showMemUsage = true;
showCpuTemp = true;
showGpuTemp = true;
selectedGpuIndex = 0;
enabledGpuPciIds = [];
showSystemTray = true;
showClock = true;
showNotificationButton = true;
showBattery = true;
showControlCenterButton = true;
showCapsLockIndicator = true;
controlCenterShowNetworkIcon = true;
controlCenterShowBluetoothIcon = on ["fruitbook"];
controlCenterShowAudioIcon = true;
controlCenterShowVpnIcon = true;
controlCenterShowBrightnessIcon = false;
controlCenterShowMicIcon = false;
controlCenterShowBatteryIcon = false;
controlCenterShowPrinterIcon = false;
showPrivacyButton = true;
privacyShowMicIcon = false;
privacyShowCameraIcon = false;
privacyShowScreenShareIcon = false;
controlCenterWidgets = [
{
id = "volumeSlider";
enabled = true;
width = 50;
}
{
id = "brightnessSlider";
enabled = true;
width = 50;
}
{
id = "wifi";
enabled = true;
width = 50;
}
{
id = "bluetooth";
enabled = true;
width = 50;
}
{
id = "audioOutput";
enabled = true;
width = 50;
}
{
id = "audioInput";
enabled = true;
width = 50;
}
{
id = "nightMode";
enabled = true;
width = 50;
}
{
id = "darkMode";
enabled = true;
width = 50;
}
];
showWorkspaceIndex = false;
showWorkspacePadding = false;
workspaceScrolling = false;
showWorkspaceApps = false;
maxWorkspaceIcons = 3;
workspacesPerMonitor = true;
showOccupiedWorkspacesOnly = false;
dwlShowAllTags = false;
workspaceNameIcons = {};
waveProgressEnabled = true;
scrollTitleEnabled = true;
clockCompactMode = false;
focusedWindowCompactMode = false;
runningAppsCompactMode = true;
keyboardLayoutNameCompactMode = false;
runningAppsCurrentWorkspace = false;
runningAppsGroupByApp = false;
centeringMode = "index";
clockDateFormat = "";
lockDateFormat = "";
mediaSize = 1;
appLauncherViewMode = "list";
spotlightModalViewMode = "list";
sortAppsAlphabetically = false;
appLauncherGridColumns = 4;
spotlightCloseNiriOverview = true;
niriOverviewOverlayEnabled = true;
weatherLocation = "Arvada, Colorado";
weatherCoordinates = "39.8005505,-105.0811573";
useAutoLocation = false;
weatherEnabled = true;
networkPreference = "auto";
vpnLastConnected = "";
iconTheme = "System Default";
launcherLogoMode = "apps";
launcherLogoCustomPath = "";
launcherLogoColorOverride = "";
launcherLogoColorInvertOnMode = false;
launcherLogoBrightness = 0.5;
launcherLogoContrast = 1;
launcherLogoSizeOffset = 0;
fontFamily = "Inter Variable";
monoFontFamily = "Fira Code";
fontWeight = 400;
fontScale = 1;
notepadUseMonospace = true;
notepadFontFamily = "";
notepadFontSize = 14;
notepadShowLineNumbers = false;
notepadTransparencyOverride = -1;
notepadLastCustomTransparency = 0.7;
soundsEnabled = true;
useSystemSoundTheme = false;
soundNewNotification = true;
soundVolumeChanged = true;
soundPluggedIn = true;
acMonitorTimeout = 0;
acLockTimeout = 0;
acSuspendTimeout = 0;
acSuspendBehavior = 0;
acProfileName = "";
batteryMonitorTimeout = 0;
batteryLockTimeout = 0;
batterySuspendTimeout = 0;
batterySuspendBehavior = 0;
batteryProfileName = "";
lockBeforeSuspend = true;
loginctlLockIntegration = true;
fadeToLockEnabled = true;
fadeToLockGracePeriod = 5;
launchPrefix = "";
brightnessDevicePins = {};
wifiNetworkPins = {};
bluetoothDevicePins = {};
audioInputDevicePins.preferredInput =
"alsa_input.usb-Generic_Blue_Microphones_2041BAB03EZ8-00.analog-stereo";
audioOutputDevicePins.preferredOutput =
"alsa_output.usb-Jieli_Technology_CA-2890_USB_Speaker_Bar_4250315A3537380E-00.analog-stereo";
gtkThemingEnabled = false;
qtThemingEnabled = false;
syncModeWithPortal = true;
terminalsAlwaysDark = false;
showDock = false;
dockAutoHide = false;
dockGroupByApp = false;
dockOpenOnOverview = false;
dockPosition = 1;
dockSpacing = 4;
dockBottomGap = 0;
dockMargin = 0;
dockIconSize = 40;
dockIndicatorStyle = "circle";
dockBorderEnabled = false;
dockBorderColor = "surfaceText";
dockBorderOpacity = 1;
dockBorderThickness = 1;
notificationOverlayEnabled = false;
modalDarkenBackground = true;
lockScreenShowPowerActions = true;
enableFprint = false;
maxFprintTries = 15;
lockScreenActiveMonitor = "all";
lockScreenInactiveColor = "#000000";
hideBrightnessSlider = false;
notificationTimeoutLow = 5000;
notificationTimeoutNormal = 5000;
notificationTimeoutCritical = 0;
notificationPopupPosition = 0;
osdAlwaysShowValue = false;
osdPosition = 5;
osdVolumeEnabled = true;
osdMediaVolumeEnabled = true;
osdBrightnessEnabled = true;
osdIdleInhibitorEnabled = true;
osdMicMuteEnabled = true;
osdCapsLockEnabled = true;
osdPowerProfileEnabled = false;
osdAudioOutputEnabled = true;
powerActionConfirm = true;
powerActionHoldDuration = 0.5;
powerMenuActions = [
"reboot"
"logout"
"poweroff"
"lock"
"suspend"
"restart"
];
powerMenuDefaultAction = "logout";
powerMenuGridLayout = false;
customPowerActionLock = "";
customPowerActionLogout = "";
customPowerActionSuspend = "";
customPowerActionHibernate = "";
customPowerActionReboot = "";
customPowerActionPowerOff = "";
updaterUseCustomCommand = false;
updaterCustomCommand = "";
updaterTerminalAdditionalParams = "";
displayNameMode = "system";
screenPreferences.wallpaper = [];
showOnLastDisplay = {};
barConfigs = [
{
id = "default";
name = "Main Bar";
enabled = true;
position = 2;
screenPreferences = [
"all"
];
showOnLastDisplay = true;
leftWidgets = [
"launcherButton"
"workspaceSwitcher"
"focusedWindow"
];
centerWidgets = [
"music"
"clock"
"weather"
];
rightWidgets = [
"systemTray"
"clipboard"
"cpuUsage"
"memUsage"
"notificationButton"
"battery"
"controlCenterButton"
];
spacing = 4;
innerPadding = 4;
bottomGap = 0;
transparency = 1;
widgetTransparency = 1;
squareCorners = false;
noBackground = false;
gothCornersEnabled = false;
gothCornerRadiusOverride = false;
gothCornerRadiusValue = 12;
borderEnabled = false;
borderColor = "surfaceText";
borderOpacity = 1;
borderThickness = 1;
fontScale = 1;
autoHide = false;
autoHideDelay = 250;
openOnOverview = false;
visible = true;
popupGapsAuto = true;
popupGapsManual = 4;
}
];
configVersion = 2;
};
};
programs.dank-material-shell = {
enable = true;
settings = {
theme = "dark";
currentThemeName = "custom";
use24HourClock = true;
showSeconds = false;
useFahrenheit = false;
nightModeEnabled = true;
animationSpeed = 1;
customAnimationDuration = 500;
wallpaperFillMode = "Fill";
blurredWallpaperLayer = false;
blurWallpaperOnOverview = true;
showLauncherButton = true;
showWorkspaceSwitcher = true;
showFocusedWindow = true;
showWeather = false;
showMusic = true;
showClipboard = true;
showCpuUsage = true;
showMemUsage = true;
showCpuTemp = true;
showGpuTemp = true;
selectedGpuIndex = 0;
enabledGpuPciIds = [];
showSystemTray = true;
showClock = true;
showNotificationButton = true;
showBattery = true;
showControlCenterButton = true;
showCapsLockIndicator = true;
controlCenterShowNetworkIcon = true;
controlCenterShowBluetoothIcon = on ["fruitbook"];
controlCenterShowAudioIcon = true;
controlCenterShowVpnIcon = true;
controlCenterShowBrightnessIcon = false;
controlCenterShowMicIcon = false;
controlCenterShowBatteryIcon = false;
controlCenterShowPrinterIcon = false;
showPrivacyButton = true;
privacyShowMicIcon = false;
privacyShowCameraIcon = false;
privacyShowScreenShareIcon = false;
controlCenterWidgets = [
{
id = "volumeSlider";
enabled = true;
width = 50;
}
{
id = "brightnessSlider";
enabled = true;
width = 50;
}
{
id = "wifi";
enabled = true;
width = 50;
}
{
id = "bluetooth";
enabled = true;
width = 50;
}
{
id = "audioOutput";
enabled = true;
width = 50;
}
{
id = "audioInput";
enabled = true;
width = 50;
}
{
id = "nightMode";
enabled = true;
width = 50;
}
{
id = "darkMode";
enabled = true;
width = 50;
}
];
showWorkspaceIndex = false;
showWorkspacePadding = false;
workspaceScrolling = false;
showWorkspaceApps = false;
maxWorkspaceIcons = 3;
workspacesPerMonitor = true;
showOccupiedWorkspacesOnly = false;
dwlShowAllTags = false;
workspaceNameIcons = {};
waveProgressEnabled = true;
scrollTitleEnabled = true;
clockCompactMode = false;
focusedWindowCompactMode = false;
runningAppsCompactMode = true;
keyboardLayoutNameCompactMode = false;
runningAppsCurrentWorkspace = false;
runningAppsGroupByApp = false;
centeringMode = "index";
clockDateFormat = "";
lockDateFormat = "";
mediaSize = 1;
appLauncherViewMode = "list";
spotlightModalViewMode = "list";
sortAppsAlphabetically = false;
appLauncherGridColumns = 4;
spotlightCloseNiriOverview = true;
niriOverviewOverlayEnabled = true;
weatherLocation = "Arvada, Colorado";
weatherCoordinates = "39.8005505,-105.0811573";
useAutoLocation = false;
weatherEnabled = true;
networkPreference = "auto";
iconTheme = "System Default";
launcherLogoMode = "apps";
launcherLogoCustomPath = "";
launcherLogoBrightness = 0.5;
launcherLogoContrast = 1;
launcherLogoSizeOffset = 0;
fontWeight = 400;
fontScale = 1;
notepadUseMonospace = true;
notepadFontSize = 14;
notepadShowLineNumbers = false;
soundsEnabled = true;
useSystemSoundTheme = false;
soundNewNotification = true;
soundVolumeChanged = true;
soundPluggedIn = true;
lockBeforeSuspend = true;
loginctlLockIntegration = true;
fadeToLockEnabled = true;
gtkThemingEnabled = false;
qtThemingEnabled = false;
syncModeWithPortal = true;
terminalsAlwaysDark = false;
showDock = false;
dockAutoHide = false;
dockGroupByApp = false;
dockOpenOnOverview = false;
dockPosition = 1;
dockSpacing = 4;
dockBottomGap = 0;
dockMargin = 0;
dockIconSize = 40;
dockIndicatorStyle = "circle";
dockBorderEnabled = false;
dockBorderOpacity = 1;
dockBorderThickness = 1;
notificationOverlayEnabled = false;
modalDarkenBackground = true;
lockScreenShowPowerActions = true;
enableFprint = false;
maxFprintTries = 15;
lockScreenActiveMonitor = "all";
hideBrightnessSlider = false;
notificationTimeoutLow = 5000;
notificationTimeoutNormal = 5000;
notificationTimeoutCritical = 0;
notificationPopupPosition = 0;
osdAlwaysShowValue = false;
osdPosition = 5;
osdVolumeEnabled = true;
osdMediaVolumeEnabled = true;
osdBrightnessEnabled = true;
osdIdleInhibitorEnabled = true;
osdMicMuteEnabled = true;
osdCapsLockEnabled = true;
osdPowerProfileEnabled = false;
osdAudioOutputEnabled = true;
powerActionConfirm = true;
powerActionHoldDuration = 0.5;
powerMenuActions = [
"reboot"
"logout"
"poweroff"
"lock"
"suspend"
# "restart"
];
powerMenuDefaultAction = "logout";
powerMenuGridLayout = false;
displayNameMode = "system";
screenPreferences.wallpaper = [];
showOnLastDisplay = {};
barConfigs = [
{
id = "default";
name = "Main Bar";
enabled = true;
position = 2;
screenPreferences = [
"all"
];
showOnLastDisplay = true;
leftWidgets = [
"launcherButton"
"workspaceSwitcher"
"focusedWindow"
];
centerWidgets = [
"music"
"clock"
"weather"
];
rightWidgets = [
"systemTray"
"clipboard"
"cpuUsage"
"memUsage"
"notificationButton"
"battery"
"controlCenterButton"
];
spacing = 4;
innerPadding = 4;
bottomGap = 0;
squareCorners = false;
noBackground = false;
gothCornersEnabled = false;
gothCornerRadiusOverride = false;
gothCornerRadiusValue = 12;
borderEnabled = false;
borderOpacity = 1;
borderThickness = 1;
fontScale = 1;
autoHide = false;
autoHideDelay = 250;
openOnOverview = false;
visible = true;
popupGapsAuto = true;
popupGapsManual = 4;
}
];
configVersion = 2;
};
});
};
};
}
+31 -2
View File
@@ -7,9 +7,13 @@ in {
};
config = lib.mkIf cfg.enable {
programs.dms-shell = {
programs.dank-material-shell = {
enable = true;
enableDynamicTheming = false;
systemd = {
enable = true;
restartIfChanged = true;
};
};
# Start after xwayland-satellite, if possible. So DMS can start
@@ -19,10 +23,35 @@ in {
after = ["xwayland-satellite.service"];
};
# services.greetd.settings.default_session.command = "";
services.displayManager.dms-greeter = {
enable = true;
compositor.name = assert config.sydnix.niri.enable; "niri";
compositor = {
name = assert config.sydnix.niri.enable; "niri";
# see: https://github.com/AvengeMedia/DankMaterialShell/commit/5ceb908b8b69c253e259b5437020192dcad4bfde
customConfig = ''
hotkey-overlay {
skip-at-startup
}
environment {
DMS_RUN_GREETER "1"
}
gestures {
hot-corners {
off
}
}
layout {
background-color "#000000"
}
'';
};
configHome = "/home/msyds"; # Really stupid.
logs = {
save = true;
path = "/var/lib/dms-greeter/log";
};
};
};
}
+3 -1
View File
@@ -14,10 +14,12 @@ in {
ROCKET_PORT = 8222;
DOMAIN = "https://vault.deertopia.net";
};
backupDir = "/var/backup/vaultwarden";
};
sydnix.impermanence.directories = [
"/var/backup/vaultwarden"
config.services.vaultwarden.backupDir
"/var/lib/bitwarden_rs"
];
services.nginx.upstreams.vaultwarden.servers =
+66 -27
View File
@@ -24,36 +24,75 @@ in {
};
config = mkIf cfg.enable {
boot.initrd.postDeviceCommands = ''
# Mount the btrfs filesystem.
mkdir -p /btrfs-tmp
mount -t btrfs "${cfg.device}" /btrfs-tmp
boot.initrd.systemd = {
services.impermance-btrfs-rolling-root = {
description = "Archiving existing BTRFS root subvolume and creating a fresh one";
unitConfig.DefaultDependencies = false;
serviceConfig = {
# The script needs to run to completion before this service
# is done
Type = "oneshot";
# NOTE: to be able to see errors in your script do this
StandardOutput = "journal+console";
StandardError = "journal+console";
};
# This service is required for boot to succeed
requiredBy = ["initrd.target"];
# Should complete before any file systems are mounted
before = ["sysroot.mount"];
# If the moribund subvolume exists, send it do 'death row' (old-roots),
# where live for about three days before its eventual deletion.
if [[ -e "/btrfs-tmp/${cfg.subvolume}" ]]; then
mkdir -p /btrfs-tmp/old-roots
timestamp=$(date --date="@$(stat -c %Y "/btrfs-tmp/${cfg.subvolume}")" "+%Y-%m-%-d_%H:%M:%S")
mv "/btrfs-tmp/${cfg.subvolume}" "/btrfs-tmp/old-roots/$timestamp"
fi
# Wait until the root device is available
# If you're altering a different device, specify its device unit explicitly.
# see: systemd-escape(1)
requires = ["initrd-root-device.target"];
after = [
"initrd-root-device.target"
# Allow hibernation to resume before trying to alter any data
"local-fs-pre.target"
];
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs-tmp/$i"
done
btrfs subvolume delete "$1"
}
script = ''
# Mount the btrfs filesystem.
mkdir -p /btrfs-tmp
mount -t btrfs "${cfg.device}" /btrfs-tmp
# Delete previous roots older than three days.
# TODO: I would prefer archiving the last N previous roots, rather than
# time.
for i in $(find /btrfs-tmp/old-roots/ -maxdepth 1 -mtime +3); do
delete_subvolume_recursively "$i"
done
# If the moribund subvolume exists, send it do 'death row' (old-roots),
# where live for about three days before its eventual deletion.
if [[ -e "/btrfs-tmp/${cfg.subvolume}" ]]; then
mkdir -p /btrfs-tmp/old-roots
timestamp=$(date --date="@$(stat -c %Y "/btrfs-tmp/${cfg.subvolume}")" "+%Y-%m-%-d_%H:%M:%S")
mv "/btrfs-tmp/${cfg.subvolume}" "/btrfs-tmp/old-roots/$timestamp"
fi
btrfs subvolume create "/btrfs-tmp/${cfg.subvolume}"
umount /btrfs-tmp
'';
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs-tmp/$i"
done
btrfs subvolume delete "$1"
}
# Delete previous roots older than three days.
# TODO: I would prefer archiving the last N previous roots, rather than
# time.
for i in $(find /btrfs-tmp/old-roots/ -maxdepth 1 -mtime +3); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create "/btrfs-tmp/${cfg.subvolume}"
umount /btrfs-tmp
'';
};
# NOTE: path = [...]; doesnt work for initrd, use full paths in
# your script or extraBin
extraBin = {
"mkdir" = "${pkgs.coreutils}/bin/mkdir";
"date" = "${pkgs.coreutils}/bin/date";
"stat" = "${pkgs.coreutils}/bin/stat";
"mv" = "${pkgs.coreutils}/bin/mv";
"find" = "${pkgs.findutils}/bin/find";
"btrfs" = "${pkgs.btrfs-progs}/bin/btrfs";
};
};
};
}
+1 -1
View File
@@ -14,7 +14,7 @@ in {
package = pkgs.niri-unstable;
};
security.pam.services.swaylock = {};
# security.pam.services.swaylock = {};
};
}