oops thats a lot of stuff

This commit is contained in:
Mars 2024-05-16 02:40:39 -04:00
parent 8e44992e00
commit 87e6a239d5
Signed by: pupbrained
GPG key ID: 0FF5B8826803F895
23 changed files with 2012 additions and 390 deletions

2
.envrc
View file

@ -1,3 +1,3 @@
watch_file flake.in.nix watch_file flake.in.nix
nix run .#genflake flake.nix cp $(nix eval --raw .#nextFlake) flake.nix
use_flake use_flake

2
.gitignore vendored
View file

@ -1 +1,3 @@
.direnv/ .direnv/
home.nix
sys.nix

22
_sources/generated.json Normal file
View file

@ -0,0 +1,22 @@
{
"linux-wallpaperengine-latest": {
"cargoLocks": null,
"date": "2024-05-11",
"extract": null,
"name": "linux-wallpaperengine-latest",
"passthru": null,
"pinned": false,
"src": {
"deepClone": false,
"fetchSubmodules": false,
"leaveDotGit": false,
"name": null,
"owner": "Almamu",
"repo": "linux-wallpaperengine",
"rev": "13cc080410444ea72cceebdd5ea0ae7c23dd2270",
"sha256": "sha256-XdFU5BKZPyGpV0PYmmM12efMFimt3eJAsG+dzyycIzo=",
"type": "github"
},
"version": "13cc080410444ea72cceebdd5ea0ae7c23dd2270"
}
}

18
_sources/generated.nix Normal file
View file

@ -0,0 +1,18 @@
# This file was generated by nvfetcher, please do not modify it manually.
{
fetchFromGitHub,
dockerTools,
}: {
linux-wallpaperengine-latest = {
pname = "linux-wallpaperengine-latest";
version = "13cc080410444ea72cceebdd5ea0ae7c23dd2270";
src = fetchFromGitHub {
owner = "Almamu";
repo = "linux-wallpaperengine";
rev = "13cc080410444ea72cceebdd5ea0ae7c23dd2270";
fetchSubmodules = false;
sha256 = "sha256-XdFU5BKZPyGpV0PYmmM12efMFimt3eJAsG+dzyycIzo=";
};
date = "2024-05-11";
};
}

View file

@ -1,5 +1,9 @@
{ {
inputs = let inputs = let
mkCustomUrl = url: {
inherit url;
};
mkInput = url: { mkInput = url: {
url = "github:${url}"; url = "github:${url}";
}; };
@ -10,26 +14,29 @@
}; };
in { in {
agenix = mkInput "ryantm/agenix"; agenix = mkInput "ryantm/agenix";
catppuccin = mkInput "catppuccin/nix";
chaotic = mkInput "chaotic-cx/nyx/nyxpkgs-unstable"; chaotic = mkInput "chaotic-cx/nyx/nyxpkgs-unstable";
flakegen = mkInput "jorsn/flakegen";
impermanence = mkInput "nix-community/impermanence"; impermanence = mkInput "nix-community/impermanence";
nixpkgs = mkInput "nixos/nixpkgs/nixos-unstable"; nixpkgs = mkInput "arianvp/nixpkgs/soft-reboot";
nix-super = mkCustomUrl "git+https://git.privatevoid.net/max/nix-super";
nixvim = mkInput "pupbrained/nixvim"; nixvim = mkInput "pupbrained/nixvim";
schizofox = mkInput "schizofox/schizofox";
sops-nix = mkInput "Mic92/sops-nix"; sops-nix = mkInput "Mic92/sops-nix";
treefmt-nix = mkInput "numtide/treefmt-nix"; treefmt-nix = mkInput "numtide/treefmt-nix";
xmonad-contrib = mkInput "xmonad/xmonad-contrib";
home-manager = mkFollowingNixpkgs "nix-community/home-manager"; home-manager = mkFollowingNixpkgs "nix-community/home-manager";
kwin-effects-forceblur = mkFollowingNixpkgs "taj-ny/kwin-effects-forceblur";
nix-index-database = mkFollowingNixpkgs "nix-community/nix-index-database"; nix-index-database = mkFollowingNixpkgs "nix-community/nix-index-database";
snowfall-flake = mkFollowingNixpkgs "snowfallorg/flake";
snowfall-lib = mkFollowingNixpkgs "snowfallorg/lib/dev"; snowfall-lib = mkFollowingNixpkgs "snowfallorg/lib/dev";
}; };
outputs = inputs: let outputs = {...} @ inputs:
pkgs = import inputs.nixpkgs {inherit system;}; with inputs; let
system = "x86_64-linux"; pkgs = import nixpkgs {inherit system;};
in system = "x86_64-linux";
with inputs; in
inputs.snowfall-lib.mkFlake { snowfall-lib.mkFlake {
inherit inputs; inherit inputs;
src = ./.; src = ./.;
@ -41,30 +48,49 @@
}; };
}; };
overlays = [
snowfall-flake.overlays.default
(_: _: {
nixSuper = nix-super.packages.${system}.default;
})
];
channels-config = { channels-config = {
allowAliases = true;
allowUnfree = true; allowUnfree = true;
allowUnsupportedSystem = true;
cudaSupport = true;
permittedInsecurePackages = ["freeimage-unstable-2021-11-01"];
home-manager.useGlobalPkgs = true;
}; };
homes.modules = [ homes.modules = [
chaotic.homeManagerModules.default chaotic.homeManagerModules.default
catppuccin.homeManagerModules.catppuccin
nix-index-database.hmModules.nix-index nix-index-database.hmModules.nix-index
schizofox.homeManagerModules.default
]; ];
systems.modules.nixos = [ systems.modules.nixos =
agenix.nixosModules.default [
chaotic.nixosModules.default agenix.nixosModules.default
impermanence.nixosModules.impermanence catppuccin.nixosModules.catppuccin
]; chaotic.nixosModules.default
impermanence.nixosModules.impermanence
xmonad-contrib.modernise.${system}
]
++ xmonad-contrib.nixosModules;
devShells.${system}.default = with pkgs; devShells.${system}.default = with pkgs;
mkShellNoCC { mkShellNoCC {
packages = [ packages = [
alejandra alejandra
git git
nvfetcher
statix statix
(writeScriptBin "build" '' (writeScriptBin "build" ''
nix fmt nix fmt
nh os switch nh os switch . -- --impure
nh home switch nh home switch
'') '')
(writeScriptBin "up" "nix flake update") (writeScriptBin "up" "nix flake update")

1204
flake.lock

File diff suppressed because it is too large Load diff

View file

@ -3,6 +3,7 @@
{ {
inputs = { inputs = {
agenix.url = "github:ryantm/agenix"; agenix.url = "github:ryantm/agenix";
catppuccin.url = "github:catppuccin/nix";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
flakegen.url = "github:jorsn/flakegen"; flakegen.url = "github:jorsn/flakegen";
home-manager = { home-manager = {
@ -10,22 +11,25 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
}; };
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
kwin-effects-forceblur = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:taj-ny/kwin-effects-forceblur";
};
nix-index-database = { nix-index-database = {
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/nix-index-database"; url = "github:nix-community/nix-index-database";
}; };
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nix-super.url = "git+https://git.privatevoid.net/max/nix-super";
nixpkgs.url = "github:arianvp/nixpkgs/soft-reboot";
nixvim.url = "github:pupbrained/nixvim"; nixvim.url = "github:pupbrained/nixvim";
schizofox.url = "github:schizofox/schizofox";
snowfall-flake = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:snowfallorg/flake";
};
snowfall-lib = { snowfall-lib = {
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
url = "github:snowfallorg/lib/dev"; url = "github:snowfallorg/lib/dev";
}; };
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
treefmt-nix.url = "github:numtide/treefmt-nix"; treefmt-nix.url = "github:numtide/treefmt-nix";
xmonad-contrib.url = "github:xmonad/xmonad-contrib";
}; };
outputs = inputs: inputs.flakegen ./flake.in.nix inputs; outputs = inputs: inputs.flakegen ./flake.in.nix inputs;
} }

View file

@ -7,9 +7,41 @@
home = { home = {
packages = with pkgs; packages = with pkgs;
[ [
eternal-terminal
firefox
grc grc
iamb
jamesdsp jamesdsp
vesktop jetbrains-toolbox
kdePackages.neochat
killall
lm_sensors
mpv
playerctl
prismlauncher
quickemu
quickgui
telegram-desktop
xdotool
youki
(xwinwrap.overrideAttrs {
src = fetchFromGitHub {
owner = "camonater62";
repo = "xwinwrap";
rev = "ec74e730072225ffa740bf5076a1dd0a343bb113";
sha256 = "0vfwbcx5y1aphiaix2zps1bl7lhbhdvm6vhys2m0kwvl6igy0cc8";
};
buildPhase = ''
make all
'';
installPhase = ''
mkdir -p $out/bin
mv xwinwrap $out/bin
'';
})
(vesktop.overrideAttrs {withSystemVencord = false;})
] ]
++ (with inputs; [ ++ (with inputs; [
nixvim.packages.${pkgs.system}.default nixvim.packages.${pkgs.system}.default
@ -18,19 +50,138 @@
distrobox_git distrobox_git
]); ]);
pointerCursor = {
gtk.enable = true;
x11.enable = true;
name = "Catppuccin-Mocha-Green-Cursors";
package = pkgs.catppuccin-cursors.mochaGreen;
size = 24;
};
stateVersion = "24.05"; stateVersion = "24.05";
}; };
dconf.settings = {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
};
xdg.enable = true;
catppuccin = {
enable = true;
flavour = "mocha";
accent = "green";
};
gtk = {
enable = true;
catppuccin = {
enable = true;
icon.enable = true;
cursor.enable = true;
size = "standard";
tweaks = ["normal"];
};
};
programs = { programs = {
nheko.enable = true;
nix-index-database.comma.enable = true; nix-index-database.comma.enable = true;
nix-index.enable = true; nix-index.enable = true;
ripgrep.enable = true;
xmobar.enable = true;
eza = {
enable = true;
git = true;
icons = true;
};
btop = {
enable = true;
catppuccin.enable = true;
};
direnv = { direnv = {
enable = true; enable = true;
nix-direnv.enable = true; nix-direnv.enable = true;
}; };
rofi = {
enable = true;
catppuccin.enable = true;
extraConfig = {
modi = "run,drun,window";
icon-theme = "Oranchelo";
show-icons = true;
terminal = "wezterm";
drun-display-format = "{icon} {name}";
location = 0;
disable-history = false;
hide-scrollbar = true;
display-drun = " Apps ";
display-run = " Run ";
display-window = " 󰍲 Window";
display-Network = " 󰤨 Network";
sidebar-mode = true;
};
theme = {
"*".font = "Maple Mono NF 14";
};
};
}; };
nix.package = lib.mkForce pkgs.nixVersions.git; services = {
picom = {
enable = true;
backend = "glx";
fadeDelta = 5;
fade = true;
shadow = true;
vSync = true;
shadowExclude = [
"class_g = 'firefox' && argb"
"class_g *?= 'slop'"
];
settings = {
corner-radius = 10;
blur-background-exclude = [
"class_g = 'slop'"
];
rounded-corners-exclude = [
"window_type = 'dock'"
"window_type = 'desktop'"
];
blur = {
method = "gaussian";
size = 10;
deviation = 5.0;
};
};
};
dunst = {
enable = true;
settings.global = {
corner_radius = 10;
offset = "18x53";
frame_width = 2;
font = "SN Pro 12";
frame_color = lib.mkForce "#a6e3a1";
};
catppuccin.enable = true;
};
};
nix.package = lib.mkForce pkgs.nixSuper;
} }

View file

@ -1,5 +0,0 @@
{...}: {
programs.plasma = {
enable = true;
};
}

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="#cdd6f4" viewBox="0 0 256 256"><path d="M208,48V216a8,8,0,0,1-8,8H56a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8H96a39.83,39.83,0,0,0-8,24v8h80V64a39.83,39.83,0,0,0-8-24h40A8,8,0,0,1,208,48Z" opacity="0.2"></path><path d="M200,32H163.74a47.92,47.92,0,0,0-71.48,0H56A16,16,0,0,0,40,48V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V48A16,16,0,0,0,200,32Zm-72,0a32,32,0,0,1,32,32H96A32,32,0,0,1,128,32Zm72,184H56V48H82.75A47.93,47.93,0,0,0,80,64v8a8,8,0,0,0,8,8h80a8,8,0,0,0,8-8V64a47.93,47.93,0,0,0-2.75-16H200Z"></path></svg>

After

Width:  |  Height:  |  Size: 578 B

View file

@ -0,0 +1,80 @@
{pkgs, ...}:
with pkgs; {
home.packages = [
(writeScriptBin "screenshot" ''
notify_user() {
${pulseaudio}/bin/paplay ${sound-theme-freedesktop}/share/sounds/freedesktop/stereo/screen-capture.oga 2>/dev/null &
${libnotify}/bin/notify-send \
-a Clipboard \
-i ${builtins.toString ./clipboard.svg} \
-u low \
-r 699 "Clipboard" "Screenshot saved on clipboard"
}
screen() {
${maim}/bin/maim -u -f png | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png
notify_user
}
window() {
${maim}/bin/maim -u -f png -i "$(${xdotool}/bin/xdotool getactivewindow)" | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png
notify_user
}
area() {
${maim}/bin/maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png
notify_user
}
menu() {
screen="󰍹"
area="󰒉"
window=""
chosen="$(printf "%s\n%s\n%s\n%s\n" "$screen" "$area" "$window" | rofi -theme ${builtins.toString ./screenshot.rasi} -p 'Take Screenshot' -dmenu -selected-row 0 -theme-str 'listview {lines: 3;}')"
case $chosen in
"$screen")
screen
;;
"$area")
area
;;
"$window")
window
;;
esac
}
docs() {
echo "
Usage: screenshot [Options]
--help - Prints this message
Options:
--screen - Take screenshot of the screen
--window - Take screenshot of the focused window
--area - Take screenshot of the selected area
--menu - Opens a gui selector
"
}
case $1 in
--screen)
screen
;;
--window)
window
;;
--area)
area
;;
--menu)
menu
;;
--help | *)
docs
;;
esac
'')
];
}

View file

@ -0,0 +1,67 @@
* {
font: "Maple Mono NF 12";
accent: #a6e3a1;
base: #1e1e2e;
mantle: #181825;
text: #cdd6f4;
}
configuration {
location: 4;
show-icons: false;
click-to-exit: true;
}
window {
transparency: "real";
background-color: @base;
text-color: @text;
border: 2px solid;
border-color: @mantle;
border-radius: 12px;
width: 100px;
x-offset: -10;
}
mainbox {
background-color: @base;
spacing: 10px;
padding: 20px;
children: [ listview ];
}
listview {
background-color: @mantle;
border-radius: 100%;
columns: 1;
cycle: true;
dynamic: true;
fixed-height: true;
fixed-columns: true;
layout: vertical;
}
element {
background-color: transparent;
text-color: @text;
orientation: horizontal;
border-radius: 100%;
padding: 14px;
cursor: pointer;
}
element-text {
background-color: inherit;
text-color: inherit;
font: "Phosphor 16";
horizontal-align: 0.25;
vertical-align: 0.5;
margin: 0px;
cursor: inherit;
}
element selected.normal {
background-color: @accent;
text-color: @mantle;
}

View file

@ -1,27 +1,25 @@
{pkgs, ...}: {...}: {
with pkgs; {
imports = [ imports = [
./fish.nix ./fish.nix
./git.nix ./git.nix
./wezterm.nix ./wezterm.nix
./macchina.nix ./macchina.nix
./nushell
]; ];
programs = { programs = {
atuin = {
enable = true;
settings = {
inline_height = 20;
show_preview = true;
style = "compact";
};
};
bat = { bat = {
enable = true; enable = true;
config.theme = "catppuccin"; catppuccin.enable = true;
themes.catppuccin = {
src = fetchFromGitHub {
owner = "catppuccin";
repo = "bat";
rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1";
hash = "sha256-6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw=";
};
file = "/Catppuccin-mocha.tmTheme";
};
}; };
zoxide = { zoxide = {

View file

@ -95,41 +95,7 @@ with pkgs; {
starship = { starship = {
enable = true; enable = true;
catppuccin.enable = true;
settings = {
jobs.disabled = true;
palette = "catppuccin_mocha";
nix_shell.symbol = " ";
palettes.catppuccin_mocha = {
rosewater = "#f5e0dc";
flamingo = "#f2cdcd";
pink = "#f5c2e7";
mauve = "#cba6f7";
red = "#f38ba8";
maroon = "#eba0ac";
peach = "#fab387";
yellow = "#f9e2af";
green = "#a6e3a1";
teal = "#94e2d5";
sky = "#89dceb";
sapphire = "#74c7ec";
blue = "#89b4fa";
lavender = "#b4befe";
text = "#cdd6f4";
subtext1 = "#bac2de";
subtext0 = "#a6adc8";
overlay2 = "#9399b2";
overlay1 = "#7f849c";
overlay0 = "#6c7086";
surface2 = "#585b70";
surface1 = "#45475a";
surface0 = "#313244";
base = "#1e1e2e";
mantle = "#181825";
crust = "#11111b";
};
};
}; };
}; };
} }

View file

@ -12,7 +12,6 @@ with pkgs; {
"Distribution" "Distribution"
"Kernel" "Kernel"
"LocalIP" "LocalIP"
"Machine"
"Memory" "Memory"
"Packages" "Packages"
"ProcessorLoad" "ProcessorLoad"

View file

@ -0,0 +1,113 @@
const color_palette = {
rosewater: "#f5e0dc"
flamingo: "#f2cdcd"
pink: "#f5c2e7"
mauve: "#cba6f7"
red: "#f38ba8"
maroon: "#eba0ac"
peach: "#fab387"
yellow: "#f9e2af"
green: "#a6e3a1"
teal: "#94e2d5"
sky: "#89dceb"
sapphire: "#74c7ec"
blue: "#89b4fa"
lavender: "#b4befe"
text: "#cdd6f4"
subtext1: "#bac2de"
subtext0: "#a6adc8"
overlay2: "#9399b2"
overlay1: "#7f849c"
overlay0: "#6c7086"
surface2: "#585b70"
surface1: "#45475a"
surface0: "#313244"
base: "#1e1e2e"
mantle: "#181825"
crust: "#11111b"
}
$env.config.color_config = {
separator: $color_palette.overlay0
leading_trailing_space_bg: { attr: "n" }
header: { fg: $color_palette.blue attr: "b" }
empty: $color_palette.lavender
bool: $color_palette.lavender
int: $color_palette.peach
duration: $color_palette.text
filesize: {|e|
if $e < 1mb {
$color_palette.green
} else if $e < 100mb {
$color_palette.yellow
} else if $e < 500mb {
$color_palette.peach
} else if $e < 800mb {
$color_palette.maroon
} else if $e > 800mb {
$color_palette.red
}
}
date: {|| (date now) - $in |
if $in < 1hr {
$color_palette.green
} else if $in < 1day {
$color_palette.yellow
} else if $in < 3day {
$color_palette.peach
} else if $in < 1wk {
$color_palette.maroon
} else if $in > 1wk {
$color_palette.red
}
}
range: $color_palette.text
float: $color_palette.text
string: $color_palette.text
nothing: $color_palette.text
binary: $color_palette.text
cellpath: $color_palette.text
row_index: { fg: $color_palette.mauve attr: "b" }
record: $color_palette.text
list: $color_palette.text
block: $color_palette.text
hints: $color_palette.overlay1
search_result: { fg: $color_palette.red bg: $color_palette.text }
shape_and: { fg: $color_palette.pink attr: "b" }
shape_binary: { fg: $color_palette.pink attr: "b" }
shape_block: { fg: $color_palette.blue attr: "b" }
shape_bool: $color_palette.teal
shape_custom: $color_palette.green
shape_datetime: { fg: $color_palette.teal attr: "b" }
shape_directory: $color_palette.teal
shape_external: $color_palette.teal
shape_externalarg: { fg: $color_palette.green attr: "b" }
shape_filepath: $color_palette.teal
shape_flag: { fg: $color_palette.blue attr: "b" }
shape_float: { fg: $color_palette.pink attr: "b" }
shape_garbage: { fg: $color_palette.text bg: $color_palette.red attr: "b" }
shape_globpattern: { fg: $color_palette.teal attr: "b" }
shape_int: { fg: $color_palette.pink attr: "b" }
shape_internalcall: { fg: $color_palette.teal attr: "b" }
shape_list: { fg: $color_palette.teal attr: "b" }
shape_literal: $color_palette.blue
shape_match_pattern: $color_palette.green
shape_matching_brackets: { attr: "u" }
shape_nothing: $color_palette.teal
shape_operator: $color_palette.peach
shape_or: { fg: $color_palette.pink attr: "b" }
shape_pipe: { fg: $color_palette.pink attr: "b" }
shape_range: { fg: $color_palette.peach attr: "b" }
shape_record: { fg: $color_palette.teal attr: "b" }
shape_redirection: { fg: $color_palette.pink attr: "b" }
shape_signature: { fg: $color_palette.green attr: "b" }
shape_string: $color_palette.green
shape_string_interpolation: { fg: $color_palette.teal attr: "b" }
shape_table: { fg: $color_palette.blue attr: "b" }
shape_variable: $color_palette.pink
background: $color_palette.base
foreground: $color_palette.text
cursor: $color_palette.blue
}

View file

@ -0,0 +1,11 @@
{pkgs, ...}:
with pkgs; {
programs = {
carapace.enable = true;
nushell = {
enable = true;
configFile.source = ./config.nu;
};
};
}

View file

@ -59,36 +59,44 @@
}, },
{ {
key = 'h', key = 'h',
mods = 'ALT', mods = 'ALT|SHIFT',
action = act.ActivatePaneDirection('Left'), action = act.ActivatePaneDirection('Left'),
}, },
{ {
key = 'l', key = 'l',
mods = 'ALT', mods = 'ALT|SHIFT',
action = act.ActivatePaneDirection 'Right', action = act.ActivatePaneDirection 'Right',
}, },
{ {
key = 'k', key = 'k',
mods = 'ALT', mods = 'ALT|SHIFT',
action = act.ActivatePaneDirection 'Up', action = act.ActivatePaneDirection 'Up',
}, },
{ {
key = 'j', key = 'j',
mods = 'ALT', mods = 'ALT|SHIFT',
action = act.ActivatePaneDirection 'Down', action = act.ActivatePaneDirection 'Down',
}, },
{
key = 't',
mods = 'CTRL|SHIFT',
action = act.SpawnCommandInNewTab { cwd = wezterm.home_dir },
}
} }
local config = { local config = {
initial_cols = 160,
adjust_window_size_when_changing_font_size = false, adjust_window_size_when_changing_font_size = false,
color_scheme = 'Catppuccin Mocha', color_scheme = 'Catppuccin Mocha',
cursor_blink_ease_in = 'Constant', cursor_blink_ease_in = 'Constant',
cursor_blink_ease_out = 'Constant', cursor_blink_ease_out = 'Constant',
cursor_blink_rate = 500, cursor_blink_rate = 500,
default_cursor_style = 'BlinkingBar', default_cursor_style = 'BlinkingBar',
enable_kitty_graphics = true,
enable_scroll_bar = false, enable_scroll_bar = false,
font_size = 12, font_size = 12,
font = wezterm.font('Maple Mono NF'), font = wezterm.font('Maple Mono NF'),
keys = keybinds,
front_end = 'WebGpu', front_end = 'WebGpu',
underline_position = -4, underline_position = -4,
use_fancy_tab_bar = false, use_fancy_tab_bar = false,

3
nvfetcher.toml Normal file
View file

@ -0,0 +1,3 @@
[linux-wallpaperengine-latest]
src.git = "https://github.com/Almamu/linux-wallpaperengine"
fetch.github = "Almamu/linux-wallpaperengine"

View file

@ -0,0 +1,50 @@
{
lib,
stdenv,
pkgs,
...
}:
with pkgs;
stdenv.mkDerivation {
pname = "lightly-boehs-qt6";
version = "v0.4.2";
src = fetchFromGitHub {
owner = "boehs";
repo = "Lightly";
rev = "00ca23447844114d41bfc0d37cf8823202c082e8";
sha256 = "sha256-NpgOcN9sDqgQMjqcfx92bfKohxaJpnwMgxb9MCu9uJM=";
};
buildInputs = with kdePackages; [
kcmutils
kconfig
kdecoration
kirigami
kguiaddons
kcolorscheme
kcoreaddons
ki18n
kiconthemes
kwindowsystem
];
extraCmakeFlags = ["-DBUILD_TESTING=OFF"];
nativeBuildInputs = [
cmake
kdePackages.qttools
kdePackages.extra-cmake-modules
kdePackages.wrapQtAppsHook
];
patches = [./missing.patch];
meta = with lib; {
description = "A fork of the Lightly breeze theme style that aims to be visually modern and minimalistic";
mainProgram = "lightly-settings";
homepage = "https://github.com/boehs/Lightly";
license = licenses.gpl2Plus;
maintainers = [maintainers.hikari];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,186 @@
diff --git a/kdecoration/config/CMakeLists.txt b/kdecoration/config/CMakeLists.txt
new file mode 100644
index 00000000..e4b08f0a
--- /dev/null
+++ b/kdecoration/config/CMakeLists.txt
@@ -0,0 +1,37 @@
+##### config classes ææææææ
+
+set(lightlydecoration_config_SRCS
+ ../lightlyexceptionlist.cpp
+ lightlyconfigwidget.cpp
+ lightlydetectwidget.cpp
+ lightlyexceptiondialog.cpp
+ lightlyexceptionlistwidget.cpp
+ lightlyexceptionmodel.cpp
+ lightlyitemmodel.cpp
+)
+ki18n_wrap_ui(lightlydecoration_config_SRCS
+ ui/lightlyconfigurationui.ui
+ ui/lightlydetectwidget.ui
+ ui/lightlyexceptiondialog.ui
+ ui/lightlyexceptionlistwidget.ui
+)
+
+kcoreaddons_add_plugin(kcm_lightlydecoration SOURCES kcm_lightlydecoration.cpp ${lightlydecoration_config_SRCS} INSTALL_NAMESPACE "${KDECORATION_KCM_PLUGIN_DIR}")
+kconfig_add_kcfg_files(kcm_lightlydecoration ../lightlysettings.kcfgc)
+target_include_directories(kcm_lightlydecoration PRIVATE ${CMAKE_SOURCE_DIR}/kdecoration ${CMAKE_BINARY_DIR}/kdecoration/)
+target_link_libraries(kcm_lightlydecoration
+ PUBLIC
+ Qt6::Core
+ Qt6::Gui
+ Qt6::DBus
+ KDecoration2::KDecoration
+ PRIVATE
+ KF6::CoreAddons
+ KF6::ConfigWidgets
+ KF6::GuiAddons
+ KF6::I18n
+ KF6::IconThemes
+ KF6::WindowSystem
+ KF6::KCMUtils
+)
+kcmutils_generate_desktop_file(kcm_lightlydecoration)
diff --git a/kdecoration/config/kcm_lightlydecoration.cpp b/kdecoration/config/kcm_lightlydecoration.cpp
new file mode 100644
index 00000000..de9ac802
--- /dev/null
+++ b/kdecoration/config/kcm_lightlydecoration.cpp
@@ -0,0 +1,6 @@
+#include "lightlyconfigwidget.h"
+#include <KPluginFactory>
+
+K_PLUGIN_CLASS_WITH_JSON(Lightly::ConfigWidget, "kcm_lightlydecoration.json")
+
+#include "kcm_lightlydecoration.moc"
diff --git a/kdecoration/config/kcm_lightlydecoration.json b/kdecoration/config/kcm_lightlydecoration.json
new file mode 100644
index 00000000..d2013276
--- /dev/null
+++ b/kdecoration/config/kcm_lightlydecoration.json
@@ -0,0 +1,60 @@
+{
+ "KPlugin": {
+ "Description": "Modify the appearance of window decorations",
+ "Description[ar]": "عدّل مظهر زخرفات النّوافذ",
+ "Description[az]": "Pəncərə tərtibatının görünüşünü dəyişdirin",
+ "Description[bg]": "Настройване на външния изглед на прозорците",
+ "Description[ca@valencia]": "Modifica l'aparença de les decoracions de les finestres",
+ "Description[ca]": "Modifica l'aparença de les decoracions de les finestres",
+ "Description[cs]": "Změnit vzhled dekorace oken",
+ "Description[da]": "Ændr vinduesdekorationers udseende",
+ "Description[de]": "Das Erscheinungsbild der Fensterdekoration ändern",
+ "Description[el]": "Τροποποίηση εμφάνισης της διακόσμησης παραθύρου",
+ "Description[en_GB]": "Modify the appearance of window decorations",
+ "Description[es]": "Modificar el aspecto de las decoraciones de las ventanas",
+ "Description[et]": "Akna dekoratsioonide välimuse muutmine",
+ "Description[eu]": "Aldatu leiho apainduren itxura",
+ "Description[fi]": "Muuta ikkunoiden kehysten ulkoasua",
+ "Description[fr]": "Modifier l'apparence des décorations des fenêtres",
+ "Description[gl]": "Modifica a aparencia da decoración da xanela",
+ "Description[he]": "התאם את מראה מסגרות החלונות",
+ "Description[hi]": "विंडो सजावटों की दिखावट को परिवर्तित करें",
+ "Description[hu]": "Az ablakdekorációk megjelenésének módosítása",
+ "Description[ia]": "Modifica le apparentia de decorationes de fenestra",
+ "Description[id]": "Memodifikasi penampilan dekorasi window",
+ "Description[it]": "Modifica l'aspetto delle decorazioni delle finestre",
+ "Description[ja]": "ウィンドウ装飾の外観を編集",
+ "Description[ko]": "창 장식의 모습을 수정합니다",
+ "Description[lt]": "Keisti lango dekoracijų išvaizdą",
+ "Description[nb]": "Endre utseende for vindusdekorasjoner",
+ "Description[nl]": "Wijzig het uiterlijk van vensterdecoraties",
+ "Description[nn]": "Endra utsjånad på vindaugspynt",
+ "Description[pa]": "ਵਿੰਡੋ ਸਜਾਵਟ ਦੀ ਦਿੱਖ ਨੂੰ ਸੋਧੋ",
+ "Description[pl]": "Zmień wygląd i wystrój okien",
+ "Description[pt]": "Modificar a aparência das decorações das janelas",
+ "Description[pt_BR]": "Modifica a aparência das decorações da janela",
+ "Description[ro]": "Modifică aspectul decorațiilor pentru ferestre",
+ "Description[ru]": "Настройка заголовков окон в стиле Breeze",
+ "Description[sk]": "Zmena vzhľadu dekorácie okien",
+ "Description[sl]": "Spremenite videz okrasitve oken",
+ "Description[sr@ijekavian]": "Измијените изглед декорација прозора",
+ "Description[sr@ijekavianlatin]": "Izmijenite izgled dekoracija prozora",
+ "Description[sr@latin]": "Izmenite izgled dekoracija prozora",
+ "Description[sr]": "Измените изглед декорација прозора",
+ "Description[sv]": "Ändra utseendet hos fönsterdekorationer",
+ "Description[tg]": "Тағйир додани ороиши намуди зоҳирии равзанаҳо",
+ "Description[tr]": "Pencere dekorasyonlarının görünümünü değiştir",
+ "Description[uk]": "Зміна вигляду декорацій вікон",
+ "Description[x-test]": "xxModify the appearance of window decorationsxx",
+ "Description[zh_CN]": "修改窗口装饰外观",
+ "Description[zh_TW]": "變更視窗裝飾外觀",
+ "Icon": "preferences-system-windows",
+ "Name": "Lightly: Window Decoration",
+ "ServiceTypes": [
+ "KCModule"
+ ]
+ },
+ "X-KDE-Keywords": "Lightly,decoration",
+ "X-KDE-ParentApp": "kcontrol",
+ "X-KDE-Weight": 50
+}
diff --git a/kstyle/config/lightlystyleconfig.json b/kstyle/config/lightlystyleconfig.json
new file mode 100644
index 00000000..f4f58aeb
--- /dev/null
+++ b/kstyle/config/lightlystyleconfig.json
@@ -0,0 +1,59 @@
+{
+ "KPlugin": {
+ "Description": "Modify the appearance of widgets",
+ "Description[ar]": "عدّل مظهر الودجات",
+ "Description[az]": "Vidjetin görünüşünü dəyişin",
+ "Description[bg]": "Настройване на външния изглед на приставките",
+ "Description[ca@valencia]": "Modifica l'aparença dels ginys",
+ "Description[ca]": "Modifica l'aparença dels ginys",
+ "Description[cs]": "Změnit vzhled widgetů",
+ "Description[da]": "Ændr kontrollers udseende",
+ "Description[de]": "Das Erscheinungsbild der Bedienelemente ändern",
+ "Description[el]": "Τροποποίηση εμφάνισης συστατικών",
+ "Description[en_GB]": "Modify the appearance of widgets",
+ "Description[es]": "Modificar el aspecto de los elementos gráficos",
+ "Description[et]": "Vidinate välimuse muutmine",
+ "Description[eu]": "Aldatu trepeten itxura",
+ "Description[fi]": "Muuta elementtien ulkoasua",
+ "Description[fr]": "Modifier l'apparence des composants graphiques",
+ "Description[gl]": "Modifica a aparencia dos trebellos",
+ "Description[he]": "התאם את המראה של היישומונים",
+ "Description[hi]": "विजेट की दिखावट को परिवर्तित करें",
+ "Description[hu]": "Az elemek megjelenésének módosítása",
+ "Description[ia]": "Modifica le apparentia de widgets",
+ "Description[id]": "Memodifikasi penampilan widget",
+ "Description[it]": "Modifica l'aspetto degli oggetti",
+ "Description[ja]": "ウィジェットの外観を編集",
+ "Description[ko]": "위젯의 모습을 수정합니다",
+ "Description[lt]": "Keisti valdiklių išvaizdą",
+ "Description[nb]": "Endre utseende for skjermelementer",
+ "Description[nl]": "Wijzig het uiterlijk van widgets",
+ "Description[nn]": "Endra utsjånaden på skjermkontrollar",
+ "Description[pl]": "Zmień wygląd interfejsu",
+ "Description[pt]": "Modificar a aparência dos elementos gráficos",
+ "Description[pt_BR]": "Modifica a aparência dos widgets",
+ "Description[ro]": "Modifică aspectul controalelor",
+ "Description[ru]": "Настройка элементов интерфейса в стиле Breeze",
+ "Description[sk]": "Zmena vzhľadu miniaplikácií",
+ "Description[sl]": "Spremenite videz gradnikov",
+ "Description[sr@ijekavian]": "Измијените изглед виџета̂",
+ "Description[sr@ijekavianlatin]": "Izmijenite izgled vidžetâ̂",
+ "Description[sr@latin]": "Izmenite izgled vidžetâ̂",
+ "Description[sr]": "Измените изглед виџета̂",
+ "Description[sv]": "Ändra utseende hos grafiska komponenter",
+ "Description[tg]": "Тағйир додани намуди зоҳирии виҷетҳо",
+ "Description[tr]": "Araç takımlarının görünümünü değiştir",
+ "Description[uk]": "Зміна вигляду віджетів",
+ "Description[x-test]": "xxModify the appearance of widgetsxx",
+ "Description[zh_CN]": "调整窗口部件外观",
+ "Description[zh_TW]": "變更元件外觀",
+ "Icon": "preferences-desktop-theme",
+ "Name": "Lightly: Widget Style",
+ "ServiceTypes": [
+ "KCModule"
+ ]
+ },
+ "X-KDE-Keywords": "lightly,widget,style",
+ "X-KDE-ParentApp": "kcontrol",
+ "X-KDE-Weight": 60
+}

View file

@ -2,11 +2,44 @@
pkgs, pkgs,
config, config,
inputs, inputs,
lib,
... ...
}: }:
with pkgs; { with lib // pkgs // inputs; {
imports = [./hardware.nix]; imports = [./hardware.nix];
security.sudo.extraConfig = ''
Defaults lecture = never, pwfeedback
'';
security.pam.loginLimits = [
{
domain = "*";
item = "nofile";
type = "-";
value = "32768";
}
{
domain = "*";
item = "memlock";
type = "-";
value = "32768";
}
];
console.catppuccin.enable = true;
systemd.user.extraConfig = let
path = lib.concatStringsSep ":" [
"/run/wrappers/bin"
"/etc/profiles/per-user/%u/bin"
"/nix/var/nix/profiles/default/bin"
"/run/current-system/sw/bin"
];
in ''
DefaultEnvironment="PATH=${path}"
'';
age = { age = {
secrets.passwd.file = /etc/secrets/passwd.age; secrets.passwd.file = /etc/secrets/passwd.age;
identityPaths = [ identityPaths = [
@ -26,23 +59,41 @@ with pkgs; {
]; ];
}; };
virtualisation.podman.enable = true; virtualisation = {
virtualisation.podman.enableNvidia = true; spiceUSBRedirection.enable = true;
libvirtd = {
enable = true;
qemu = {
package = qemu_kvm;
swtpm.enable = true;
ovmf.enable = true;
ovmf.packages = [OVMFFull.fd];
};
};
podman = {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
};
};
environment = { environment = {
sessionVariables = { sessionVariables = {
NIXOS_OZONE_WL = "1";
EDITOR = "nvim"; EDITOR = "nvim";
DIRENV_WARN_TIMEOUT = "100s";
}; };
systemPackages = systemPackages = [
[ agenix.packages.${system}.default
kde-rounded-corners gnome.nautilus
] internal.lightly-boehs-qt6
++ (with inputs; [ snowfallorg.flake
agenix.packages.${system}.default sound-theme-freedesktop
kwin-effects-forceblur.packages.${system}.default xclip
]); yt-dlp
];
persistence."/persist" = { persistence."/persist" = {
hideMounts = true; hideMounts = true;
@ -53,73 +104,151 @@ with pkgs; {
"/var/lib/bluetooth" "/var/lib/bluetooth"
"/var/lib/nixos" "/var/lib/nixos"
"/var/lib/systemd/coredump" "/var/lib/systemd/coredump"
"/etc/NetworkManager/system-connections" "/etc/NetworkManager"
{
directory = "/var/lib/colord";
user = "colord";
group = "colord";
mode = "u=rwx,g=rx,o=";
}
];
files = [
"/etc/machine-id"
{
file = "/var/keys/secret_file";
parentDirectory = {mode = "u=rwx,g=,o=";};
}
]; ];
files = ["/etc/machine-id"];
}; };
}; };
boot = { boot = {
#initrd.systemd.enable = true; blacklistedKernelModules = ["nouveau"];
#plymouth.enable = true;
blacklistedKernelModules = ["i915"];
kernelPackages = linuxPackages_cachyos; kernelPackages = linuxPackages_cachyos;
kernelParams = ["module_blacklist=i915" "quiet"];
supportedFilesystems = ["btrfs" "ntfs"]; supportedFilesystems = ["btrfs" "ntfs"];
binfmt.registrations.appimage = {
wrapInterpreterInShell = false;
interpreter = "${appimage-run}/bin/appimage-run";
recognitionType = "magic";
offset = 0;
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
magicOrExtension = ''\x7fELF....AI\x02'';
};
initrd.systemd = {
enable = true;
emergencyAccess = true; # No password needed bc of LUKS
};
plymouth = {
enable = true;
catppuccin.enable = true;
};
extraModprobeConfig =
"options nvidia "
+ concatStringsSep " " [
"NVreg_UsePageAttributeTable=1"
"NVreg_EnablePCIeGen3=1"
"NVreg_RegistryDwords=RMUseSwI2c=0x01;RMI2cSpeed=100"
];
kernelParams = [
"intel_iommu=on"
"iommu=pt"
"kvm.ignore_msrs=1"
"modprobe.blacklist=nouveau"
];
loader = { loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
systemd-boot = {
enable = true;
configurationLimit = 20;
};
}; };
}; };
nix = { nix = let
package = nixVersions.git; mappedRegistry = pipe inputs [
(filterAttrs (_: isType "flake"))
(mapAttrs (_: flake: {inherit flake;}))
(x: x // {nixpkgs.flake = nixpkgs;})
];
in {
package = mkForce nixSuper;
registry = mappedRegistry // optionalAttrs (config.nix.package == nixSuper) {default = mappedRegistry.nixpkgs;};
nixPath = mapAttrsToList (key: _: "${key}=flake:${key}") config.nix.registry;
daemonCPUSchedPolicy = "batch";
daemonIOSchedClass = "idle";
daemonIOSchedPriority = 7;
gc = {
automatic = true;
dates = "Sat *-*-* 03:00";
options = "--delete-older-than 30d";
};
optimise = {
automatic = true;
dates = ["04:00"];
};
settings = { settings = {
trusted-users = ["marshall"]; auto-optimise-store = true;
builders-use-substitutes = true;
flake-registry = "/etc/nix/registry.json";
keep-going = true;
log-lines = 30;
max-jobs = "auto";
sandbox-fallback = false;
sandbox = true;
system-features = ["nixos-test" "kvm" "recursive-nix" "big-parallel"];
use-cgroups = true;
use-xdg-base-directories = true;
warn-dirty = false;
allowed-users = ["root" "@wheel" "nix-builder"];
trusted-users = ["root" "@wheel" "nix-builder"];
min-free = "${toString (5 * 1024 * 1024 * 1024)}";
max-free = "${toString (10 * 1024 * 1024 * 1024)}";
extra-experimental-features = [
"flakes" # flakes
"nix-command" # experimental nix commands
"recursive-nix" # let nix invoke itself
"ca-derivations" # content addressed nix
"auto-allocate-uids" # allow nix to automatically pick UIDs, rather than creating nixbld* user accounts
"cgroups" # allow nix to execute builds inside cgroups
];
substituters = [ substituters = [
"https://cache.nixos.org" "https://cache.nixos.org"
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://cache.iog.io"
"https://nyx.chaotic.cx/" "https://nyx.chaotic.cx/"
"https://cuda-maintainers.cachix.org"
"https://cache.privatevoid.net"
]; ];
trusted-substituters = [ trusted-substituters = [
"cache.nixos.org" "cache.nixos.org"
"nix-community.cachix.org" "nix-community.cachix.org"
"cache.iog.io"
"nyx.chaotic.cx" "nyx.chaotic.cx"
"cuda-maintainers.cachix.org"
"cache.privatevoid.net"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
"nyx.chaotic.cx-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" "nyx.chaotic.cx-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
"cache.privatevoid.net:SErQ8bvNWANeAvtsOESUwVYr2VJynfuc9JRwlzTTkVg="
]; ];
}; };
}; };
programs = { programs = {
dconf.enable = true;
fish.enable = true; fish.enable = true;
gamemode.enable = true; gamemode.enable = true;
nix-ld.enable = true;
steam.enable = true; steam.enable = true;
gnupg.agent.enable = true; gnupg.agent.enable = true;
virt-manager.enable = true;
nh = { nh = {
enable = true; enable = true;
@ -131,8 +260,10 @@ with pkgs; {
networking = { networking = {
hostName = "navis"; hostName = "navis";
networkmanager.enable = true;
firewall.enable = false; firewall.enable = false;
nameservers = ["1.1.1.1" "1.0.0.1"];
networkmanager.dns = "none";
networkmanager.enable = true;
}; };
time.timeZone = "America/New_York"; time.timeZone = "America/New_York";
@ -141,17 +272,50 @@ with pkgs; {
services = { services = {
btrfs.autoScrub.enable = true; btrfs.autoScrub.enable = true;
desktopManager.plasma6.enable = true;
displayManager.sddm.enable = true;
flatpak.enable = true; flatpak.enable = true;
libinput.enable = true; gnome.gnome-keyring.enable = true;
libinput.touchpad.naturalScrolling = true; mullvad-vpn.enable = true;
ollama.enable = true;
openssh.enable = true; openssh.enable = true;
spice-vdagentd.enable = true;
displayManager.autoLogin = {
enable = true;
user = "marshall";
};
libinput = {
enable = true;
touchpad.naturalScrolling = true;
};
xserver = { xserver = {
enable = true; enable = true;
videoDrivers = ["nvidia"]; videoDrivers = ["nvidia"];
xkb.layout = "us"; xkb.layout = "us";
displayManager.startx = {
enable = true;
};
xrandrHeads = [
{
output = "DP-0";
monitorConfig = ''
Option "PreferredMode" "2560x1440_165.08"
'';
}
];
windowManager.xmonad = {
enable = true;
enableContribAndExtras = true;
enableConfiguredRecompile = true;
flake = {
enable = true;
compiler = "ghc982";
};
};
}; };
pipewire = { pipewire = {
@ -165,29 +329,52 @@ with pkgs; {
users.marshall = { users.marshall = {
isNormalUser = true; isNormalUser = true;
extraGroups = ["wheel" "gamemode"]; extraGroups = ["wheel" "gamemode" "libvirtd" "networkmanager"];
shell = fish; shell = fish;
hashedPasswordFile = config.age.secrets.passwd.path; hashedPasswordFile = config.age.secrets.passwd.path;
packages = [
firefox
neovim
telegram-desktop
];
}; };
}; };
hardware = { hardware = {
bluetooth.enable = true;
opengl = { opengl = {
enable = true; enable = true;
driSupport = true; driSupport = true;
driSupport32Bit = true; driSupport32Bit = true;
extraPackages = [
vaapiVdpau
nvidia-vaapi-driver
];
}; };
nvidia-container-toolkit.enable = true;
nvidia = { nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.latest; package = config.boot.kernelPackages.nvidiaPackages.latest;
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = true;
prime = {
sync.enable = true;
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
}; };
}; };
xdg.portal = {
enable = true;
config.common.default = "*";
xdgOpenUsePortal = true;
extraPortals = [
kdePackages.xdg-desktop-portal-kde
xdg-desktop-portal-gtk
xdg-desktop-portal-shana
];
};
system.stateVersion = "24.05"; system.stateVersion = "24.05";
} }

View file

@ -22,30 +22,35 @@
options = ["subvol=root"]; options = ["subvol=root"];
}; };
boot.initrd.postDeviceCommands = lib.mkAfter '' boot.initrd.systemd.services.wipe-root = {
mkdir /btrfs_tmp requires = ["dev-mapper-enc.device"];
mount /dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b /btrfs_tmp after = ["dev-mapper-enc.device"];
if [[ -e /btrfs_tmp/root ]]; then wantedBy = ["initrd.target"];
mkdir -p /btrfs_tmp/old_roots script = lib.mkAfter ''
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") mkdir /btrfs_tmp
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" mount /dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b /btrfs_tmp
fi if [[ -e /btrfs_tmp/root ]]; then
mkdir -p /btrfs_tmp/old_roots
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() { delete_subvolume_recursively() {
IFS=$'\n' IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i" delete_subvolume_recursively "/btrfs_tmp/$i"
done done
btrfs subvolume delete "$1" btrfs subvolume delete "$1"
} }
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
delete_subvolume_recursively "$i" delete_subvolume_recursively "$i"
done done
btrfs subvolume create /btrfs_tmp/root btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp umount /btrfs_tmp
''; '';
};
boot.initrd.luks.devices."enc".device = "/dev/disk/by-uuid/9952fcd1-46eb-4c9c-ab7d-361d31fdb9a2"; boot.initrd.luks.devices."enc".device = "/dev/disk/by-uuid/9952fcd1-46eb-4c9c-ab7d-361d31fdb9a2";