Compare commits

..

7 commits

Author SHA1 Message Date
Leon Schwarzäugl
41240db5c9
feat[client]: improve tridactyl binds
Some checks are pending
Flake check / Check flake (push) Waiting to run
2025-10-21 13:20:05 +02:00
Leon Schwarzäugl
deaa3d5889
chore[work]: disable awscli config 2025-10-21 13:20:04 +02:00
Leon Schwarzäugl
9ce9a7ec6a
feat[client]: reduce file clobbering 2025-10-21 13:20:03 +02:00
Leon Schwarzäugl
101f4d3183
fix[client]: make network config more stable 2025-10-21 13:20:02 +02:00
Leon Schwarzäugl
fb37690bc0
chore: update flake 2025-10-21 13:19:58 +02:00
Leon Schwarzäugl
e07b3c2b6e
chore[work]: improve suspend behaviour 2025-10-21 13:19:53 +02:00
Leon Schwarzäugl
9da6bd15ab
feat[work]: add git-replace 2025-10-21 13:19:48 +02:00
22 changed files with 3815 additions and 1291 deletions

View file

@ -412,8 +412,9 @@ A short overview over each input and what it does:
swarsel-modules.url = "github:Swarsel/swarsel-modules/main"; swarsel-modules.url = "github:Swarsel/swarsel-modules/main";
swarsel-nix.url = "github:Swarsel/swarsel-nix/main"; swarsel-nix.url = "github:Swarsel/swarsel-nix/main";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; # url = "github:nix-community/home-manager";
# url = "github:Swarsel/home-manager/module/pizauth"; # url = "github:Swarsel/home-manager/main";
url = "github:JuneStepp/home-manager/anki-fix-booleans";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
swarsel.url = "github:Swarsel/.dotfiles"; swarsel.url = "github:Swarsel/.dotfiles";
@ -1988,8 +1989,8 @@ My work machine. Built for more security, this is the gold standard of my config
# ''; # '';
boot = { boot = {
# kernelPackages = lib.mkDefault pkgs.kernel.linuxPackages; kernelPackages = lib.mkDefault pkgs.kernel.linuxPackages;
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; # kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
binfmt.emulatedSystems = [ "aarch64-linux" ]; binfmt.emulatedSystems = [ "aarch64-linux" ];
initrd = { initrd = {
availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "cryptd" "usbhid" "sd_mod" "r8152" ]; availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "cryptd" "usbhid" "sd_mod" "r8152" ];
@ -2005,7 +2006,8 @@ My work machine. Built for more security, this is the gold standard of my config
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
kernelParams = [ kernelParams = [
"mem_sleep_default=deep" # deep sleep is discontinued by amd
# "mem_sleep_default=deep"
# supposedly, this helps save power on laptops # supposedly, this helps save power on laptops
# in reality (at least on this model), this just generate excessive heat on the CPUs # in reality (at least on this model), this just generate excessive heat on the CPUs
# "amd_pstate=passive" # "amd_pstate=passive"
@ -4225,6 +4227,7 @@ We enable the use of =home-manager= as a NixoS module. A nice trick here is the
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
verbose = true; verbose = true;
backupFileExtension = "hm-bak";
users.${config.swarselsystems.mainUser}.imports = [ users.${config.swarselsystems.mainUser}.imports = [
inputs.nix-index-database.homeModules.nix-index inputs.nix-index-database.homeModules.nix-index
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops
@ -4728,6 +4731,9 @@ Mostly used to install some compilers and lsp's that I want to have available wh
"jitsi-meet-1.0.8043" "jitsi-meet-1.0.8043"
"electron-29.4.6" "electron-29.4.6"
"SDL_ttf-2.0.11" "SDL_ttf-2.0.11"
# audacity?
"mbedtls-2.28.10"
# "qtwebengine-5.15.19"
]; ];
}; };
} }
@ -10536,9 +10542,16 @@ This holds configuration that is specific to framework laptops.
boot = { boot = {
kernelParams = [ kernelParams = [
"resume_offset=${builtins.toString config.swarselsystems.hibernation.offset}" "resume_offset=${builtins.toString config.swarselsystems.hibernation.offset}"
# "mem_sleep_default=deep"
]; ];
inherit (config.swarselsystems.hibernation) resumeDevice; inherit (config.swarselsystems.hibernation) resumeDevice;
}; };
systemd.services."systemd-suspend-then-hibernate".aliases = [ "systemd-suspend.service" ];
powerManagement.enable = true;
systemd.sleep.extraConfig = ''
HibernateDelaySec=120m
SuspendState=freeze
'';
}; };
} }
#+end_src #+end_src
@ -10664,11 +10677,13 @@ Options that I need specifically at work. There are more options at [[#h:f0b2ea9
id = "VBC"; id = "VBC";
type = "wifi"; type = "wifi";
autoconnect-priority = "500"; autoconnect-priority = "500";
uuid = "3988f10e-6451-381f-9330-a12e66f45051";
secondaries = "48d09de4-0521-47d7-9bd5-43f97e23ff82"; # vpn uuid secondaries = "48d09de4-0521-47d7-9bd5-43f97e23ff82"; # vpn uuid
}; };
ipv4 = { method = "auto"; }; ipv4 = { method = "auto"; };
ipv6 = { ipv6 = {
addr-gen-mode = "default"; # addr-gen-mode = "default";
addr-gen-mode = "stable-privacy";
method = "auto"; method = "auto";
}; };
proxy = { }; proxy = { };
@ -10681,7 +10696,7 @@ Options that I need specifically at work. There are more options at [[#h:f0b2ea9
ssid = "VBC"; ssid = "VBC";
}; };
wifi-security = { wifi-security = {
auth-alg = "open"; # auth-alg = "open";
key-mgmt = "wpa-eap"; key-mgmt = "wpa-eap";
}; };
}; };
@ -10711,20 +10726,22 @@ Options that I need specifically at work. There are more options at [[#h:f0b2ea9
runAsRoot = true; runAsRoot = true;
swtpm.enable = true; swtpm.enable = true;
vhostUserPackages = with pkgs; [ virtiofsd ]; vhostUserPackages = with pkgs; [ virtiofsd ];
ovmf = { # ovmf = {
enable = true; # enable = true;
packages = [ # packages = [
(pkgs.OVMFFull.override { # (pkgs.OVMFFull.override {
secureBoot = true; # secureBoot = true;
tpmSupport = true; # tpmSupport = true;
}).fd # }).fd
]; # ];
}; # };
}; };
}; };
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
remmina
# gp-onsaml-gui
stable24_11.python39 stable24_11.python39
qemu qemu
packer packer
@ -10778,6 +10795,7 @@ Options that I need specifically at work. There are more options at [[#h:f0b2ea9
}; };
}; };
# ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.kanshi}/bin/kanshictl switch laptoponly"
udev.extraRules = '' udev.extraRules = ''
# lock screen when yubikey removed # lock screen when yubikey removed
ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.systemd}/bin/systemctl suspend" ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.systemd}/bin/systemctl suspend"
@ -11328,6 +11346,7 @@ This is just a separate container for derivations defined in [[#h:64a5cc16-6b16-
swarselzellij swarselzellij
sshrm sshrm
endme endme
git-replace
rustdesk-vbc rustdesk-vbc
]; ];
@ -11559,7 +11578,9 @@ TODO: Non-NixOS machines (=sp3) should not use these by default, but instead the
}; };
xdg.mimeApps = { xdg = {
configFile."mimeapps.list".force = true;
mimeApps = {
enable = true; enable = true;
defaultApplications = { defaultApplications = {
"application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ];
@ -11605,6 +11626,7 @@ TODO: Non-NixOS machines (=sp3) should not use these by default, but instead the
}; };
}; };
}; };
};
} }
#+end_src #+end_src
@ -11736,7 +11758,53 @@ This section is for programs that require no further configuration. zsh Integrat
sioyek.enable = true; sioyek.enable = true;
swayr.enable = true; swayr.enable = true;
timidity.enable = true; timidity.enable = true;
wlogout.enable = true; wlogout ={
enable = true;
layout = [
{
label = "lock";
action = "loginctl lock-session";
text = "Lock";
keybind = "l";
circular = true;
}
{
label = "hibernate";
action = "systemctl hibernate";
text = "Hibernate";
keybind = "h";
circular = true;
}
{
label = "logout";
action = "loginctl terminate-user $USER";
text = "Logout";
keybind = "u";
circular = true;
}
{
label = "shutdown";
action = "systemctl poweroff";
text = "Shutdown";
keybind = "p";
circular = true;
}
{
label = "suspend";
action = "systemctl suspend";
text = "Suspend";
keybind = "s";
circular = true;
}
{
label = "reboot";
action = "systemctl reboot";
text = "Reboot";
keybind = "r";
circular = true;
}
];
};
yt-dlp.enable = true; yt-dlp.enable = true;
zoxide = { zoxide = {
enable = true; enable = true;
@ -14298,7 +14366,10 @@ Currently, I am too lazy to explain every option here, but most of it is very se
in in
{ {
name = "lidopen"; name = "lidopen";
exec = [ "${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/standwp.png --mode ${config.stylix.imageScalingMode}" ]; exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/standwp.png --mode ${config.stylix.imageScalingMode}"
];
outputs = [ outputs = [
{ {
criteria = config.swarselsystems.sharescreen; criteria = config.swarselsystems.sharescreen;
@ -14441,7 +14512,7 @@ This service changes the screen hue at night. I am not sure if that really does
programs.spicetify = { programs.spicetify = {
enable = true; enable = true;
# spotifyPackage = pkgs.stable24_11.spotify; # spotifyPackage = pkgs.stable24_11.spotify;
spotifyPackage = pkgs.spotify; spotifyPackage = pkgs.stable.spotify;
enabledExtensions = with spicePkgs.extensions; [ enabledExtensions = with spicePkgs.extensions; [
fullAppDisplay fullAppDisplay
shuffle shuffle
@ -14462,14 +14533,19 @@ This service changes the screen hue at night. I am not sure if that really does
let let
moduleName = "obsidian"; moduleName = "obsidian";
inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters; inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters;
name = "Main";
in in
{ {
options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} with settings"; options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} with settings";
config = lib.mkIf config.swarselmodules.${moduleName} { config = lib.mkIf config.swarselmodules.${moduleName} {
home.file = {
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/app.json".force = true;
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/appearance.json".force = true;
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/core-plugins.json".force = true;
};
programs.obsidian = programs.obsidian =
let
name = "Main";
in
{ {
enable = true; enable = true;
package = pkgs.obsidian; package = pkgs.obsidian;
@ -14614,7 +14690,7 @@ This service changes the screen hue at night. I am not sure if that really does
programs.anki = { programs.anki = {
enable = true; enable = true;
package = pkgs.anki; # # package = pkgs.anki;
hideBottomBar = true; hideBottomBar = true;
hideBottomBarMode = "always"; hideBottomBarMode = "always";
hideTopBar = true; hideTopBar = true;
@ -14625,6 +14701,7 @@ This service changes the screen hue at night. I am not sure if that really does
sync = { sync = {
autoSync = false; # sync on profile close will delay system shutdown autoSync = false; # sync on profile close will delay system shutdown
syncMedia = true; syncMedia = true;
autoSyncMediaMinutes = 5;
url = "https://${globals.services.ankisync.domain}"; url = "https://${globals.services.ankisync.domain}";
usernameFile = nixosConfig.sops.secrets.anki-user.path; usernameFile = nixosConfig.sops.secrets.anki-user.path;
# this is not the password but the syncKey # this is not the password but the syncKey
@ -14853,6 +14930,18 @@ This service changes the screen hue at night. I am not sure if that really does
config = lib.mkIf config.swarselmodules.${moduleName} { config = lib.mkIf config.swarselmodules.${moduleName} {
services.${moduleName} = { services.${moduleName} = {
enable = true; enable = true;
extraArgs = [
"-W"
" Consider charging the battery"
"-C"
" Battery is low; plug in charger now"
"-D"
" Device will lose power in a few seconds"
"-c"
"10"
"-d"
"5"
];
}; };
}; };
@ -14892,7 +14981,7 @@ This service changes the screen hue at night. I am not sure if that really does
let let
brightnessctl = "${lib.getExe pkgs.brightnessctl}"; brightnessctl = "${lib.getExe pkgs.brightnessctl}";
swaylock = "${lib.getExe pkgs.swaylock-effects}"; swaylock = "${lib.getExe pkgs.swaylock-effects}";
suspend = "${pkgs.systemd}/bin/systemctl"; suspend = "${pkgs.systemd}/bin/systemctl suspend";
in in
{ {
enable = true; enable = true;
@ -14907,6 +14996,7 @@ This service changes the screen hue at night. I am not sure if that really does
]; ];
events = [ events = [
# { event = "before-sleep"; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; } # { event = "before-sleep"; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; }
# { event = "after-resume"; command = "${swaylock} -f "; }
{ event = "before-sleep"; command = "${swaylock} -f "; } { event = "before-sleep"; command = "${swaylock} -f "; }
{ event = "lock"; command = "${swaylock} -f "; } { event = "lock"; command = "${swaylock} -f "; }
]; ];
@ -15242,16 +15332,16 @@ The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]
awscli = { awscli = {
enable = true; enable = true;
package = pkgs.stable24_05.awscli2; package = pkgs.stable24_05.awscli2;
settings = { # settings = {
"default" = { }; # "default" = { };
"profile s3-imagebuilder-prod" = { }; # "profile s3-imagebuilder-prod" = { };
}; # };
credentials = { # credentials = {
"s3-imagebuilder-prod" = { # "s3-imagebuilder-prod" = {
aws_access_key_id = "5OYXY4879EJG9I91K1B6"; # aws_access_key_id = "5OYXY4879EJG9I91K1B6";
credential_process = "${pkgs.pass}/bin/pass show work/awscli/s3-imagebuilder-prod/secret-key"; # credential_process = "${pkgs.pass}/bin/pass show work/awscli/s3-imagebuilder-prod/secret-key";
}; # };
}; # };
}; };
git.userEmail = lib.mkForce gitMail; git.userEmail = lib.mkForce gitMail;
@ -15415,6 +15505,7 @@ The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]
profile = { profile = {
name = "lidopen"; name = "lidopen";
exec = [ exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output 'HP Inc. HP 732pk CNC4080YL5' --image ${self}/files/wallpaper/botanicswp.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output 'HP Inc. HP 732pk CNC4080YL5' --image ${self}/files/wallpaper/botanicswp.png --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output 'Hewlett Packard HP Z24i CN44250RDT' --image ${self}/files/wallpaper/op6wp.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output 'Hewlett Packard HP Z24i CN44250RDT' --image ${self}/files/wallpaper/op6wp.png --mode ${config.stylix.imageScalingMode}"
]; ];
@ -15449,6 +15540,7 @@ The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]
{ {
name = "lidopen"; name = "lidopen";
exec = [ exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/navidrome.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/navidrome.png --mode ${config.stylix.imageScalingMode}"
"${pkgs.kanshare}/bin/kanshare ${config.swarselsystems.sharescreen} '${monitor}'" "${pkgs.kanshare}/bin/kanshare ${config.swarselsystems.sharescreen} '${monitor}'"
]; ];
@ -18047,6 +18139,25 @@ Sometimes my DE crashes after putting it to suspend - to be precise, it happens
#+end_src #+end_src
*** git-replace
This script allows for quick git replace of a string.
#+begin_src nix-ts :tangle pkgs/git-replace/default.nix
{ name, writeShellApplication, git, gnugrep, findutils, ... }:
writeShellApplication {
inherit name;
runtimeInputs = [ git gnugrep findutils ];
text = ''
git grep -l "$1" | xargs sed -i "s/$1/$2/g"
'';
}
#+end_src
** Profiles ** Profiles
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: h:f0f1c961-3e7a-47b8-99ab-1654bb45dffc :CUSTOM_ID: h:f0f1c961-3e7a-47b8-99ab-1654bb45dffc
@ -22093,10 +22204,13 @@ bind gd tabdetach
bind gD composite tabduplicate; tabdetach bind gD composite tabduplicate; tabdetach
bind d composite tabprev; tabclose # bind d composite tabprev; tabclose #
bind D tabclose bind D tabclose
bind c hint bind c hint -J
bindurl ^http(s)?://www\.google\.com c hint -Jc [class="LC20lb MBeuO DKV0Md"],[class="YmvwI"],[class="YyVfkd"],[class="fl"] bindurl ^http(s)?://www\.google\.com c hint -Jc [class="LC20lb MBeuO DKV0Md"],[class="YmvwI"],[class="YyVfkd"],[class="fl"]
bindurl ^http(s)?://news\.ycombinator\.com c hint -Jc [class="titleline"],[class="age"] bindurl ^http(s)?://news\.ycombinator\.com c hint -Jc [class="titleline"],[class="age"]
bindurl ^http(s)?://lobste\.rs c hint -Jc [class="u-url"],[class="comments_label"] bindurl ^http(s)?://lobste\.rs c hint -Jc [class="u-url"],[class="comments_label"]
bindurl ^http(s)?://reddit\.com c hint -Jc [class="title may-blank loggedin"],[class="bylink comments may-blank"]
bindurl ^http(s)?://github\.com c hint -Jc [class="Link--primary"],[class="AppHeader-button Button--secondary Button--medium Button p-0 color-fg-muted"],[class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"],[class="prc-ActionList-ItemLabel-TmBhn"],[class="PRIVATE_TreeView-item-content-text prc-TreeView-TreeViewItemContentText-smZM-"]
bindurl ^http(s)?://vbc\.atlassian\.net\/wiki c hint -Jc [class="_1reo15vq _18m915vq _1bto1l2s _kqswh2mm _o5721q9c _syaz1fxt"],[class="_11c81ixg _1reo15vq _18m915vq _18s81b66 _kqswh2mm _k48p1wq8 _o5721q9c _1bto1l2s _u5f31b66"],[class="_1r04ze3t _kqswstnw"],[class="css-a61etj"],[class="jira-macro-table-underline-pdfexport"]
bindurl ^http(s)?://www\.google\.com gi composite focusinput -l ; text.end_of_line bindurl ^http(s)?://www\.google\.com gi composite focusinput -l ; text.end_of_line
" Work " Work

View file

@ -25,10 +25,13 @@ bind gd tabdetach
bind gD composite tabduplicate; tabdetach bind gD composite tabduplicate; tabdetach
bind d composite tabprev; tabclose # bind d composite tabprev; tabclose #
bind D tabclose bind D tabclose
bind c hint bind c hint -J
bindurl ^http(s)?://www\.google\.com c hint -Jc [class="LC20lb MBeuO DKV0Md"],[class="YmvwI"],[class="YyVfkd"],[class="fl"] bindurl ^http(s)?://www\.google\.com c hint -Jc [class="LC20lb MBeuO DKV0Md"],[class="YmvwI"],[class="YyVfkd"],[class="fl"]
bindurl ^http(s)?://news\.ycombinator\.com c hint -Jc [class="titleline"],[class="age"] bindurl ^http(s)?://news\.ycombinator\.com c hint -Jc [class="titleline"],[class="age"]
bindurl ^http(s)?://lobste\.rs c hint -Jc [class="u-url"],[class="comments_label"] bindurl ^http(s)?://lobste\.rs c hint -Jc [class="u-url"],[class="comments_label"]
bindurl ^http(s)?://reddit\.com c hint -Jc [class="title may-blank loggedin"],[class="bylink comments may-blank"]
bindurl ^http(s)?://github\.com c hint -Jc [class="Link--primary"],[class="AppHeader-button Button--secondary Button--medium Button p-0 color-fg-muted"],[class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"],[class="prc-ActionList-ItemLabel-TmBhn"],[class="PRIVATE_TreeView-item-content-text prc-TreeView-TreeViewItemContentText-smZM-"]
bindurl ^http(s)?://vbc\.atlassian\.net\/wiki c hint -Jc [class="_1reo15vq _18m915vq _1bto1l2s _kqswh2mm _o5721q9c _syaz1fxt"],[class="_11c81ixg _1reo15vq _18m915vq _18s81b66 _kqswh2mm _k48p1wq8 _o5721q9c _1bto1l2s _u5f31b66"],[class="_1r04ze3t _kqswstnw"],[class="css-a61etj"],[class="jira-macro-table-underline-pdfexport"]
bindurl ^http(s)?://www\.google\.com gi composite focusinput -l ; text.end_of_line bindurl ^http(s)?://www\.google\.com gi composite focusinput -l ; text.end_of_line
" Work " Work

3757
flake.lock generated

File diff suppressed because it is too large Load diff

View file

@ -20,8 +20,9 @@
swarsel-modules.url = "github:Swarsel/swarsel-modules/main"; swarsel-modules.url = "github:Swarsel/swarsel-modules/main";
swarsel-nix.url = "github:Swarsel/swarsel-nix/main"; swarsel-nix.url = "github:Swarsel/swarsel-nix/main";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; # url = "github:nix-community/home-manager";
# url = "github:Swarsel/home-manager/module/pizauth"; # url = "github:Swarsel/home-manager/main";
url = "github:JuneStepp/home-manager/anki-fix-booleans";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
swarsel.url = "github:Swarsel/.dotfiles"; swarsel.url = "github:Swarsel/.dotfiles";

View file

@ -22,8 +22,8 @@
# ''; # '';
boot = { boot = {
# kernelPackages = lib.mkDefault pkgs.kernel.linuxPackages; kernelPackages = lib.mkDefault pkgs.kernel.linuxPackages;
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; # kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
binfmt.emulatedSystems = [ "aarch64-linux" ]; binfmt.emulatedSystems = [ "aarch64-linux" ];
initrd = { initrd = {
availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "cryptd" "usbhid" "sd_mod" "r8152" ]; availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "cryptd" "usbhid" "sd_mod" "r8152" ];
@ -39,7 +39,8 @@
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
kernelParams = [ kernelParams = [
"mem_sleep_default=deep" # deep sleep is discontinued by amd
# "mem_sleep_default=deep"
# supposedly, this helps save power on laptops # supposedly, this helps save power on laptops
# in reality (at least on this model), this just generate excessive heat on the CPUs # in reality (at least on this model), this just generate excessive heat on the CPUs
# "amd_pstate=passive" # "amd_pstate=passive"

View file

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2025-10-11 Sa 23:49 --> <!-- 2025-10-21 Di 13:09 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>SwarselSystems: NixOS + Emacs Configurationo</title> <title>SwarselSystems: NixOS + Emacs Configurationo</title>
@ -443,8 +443,8 @@
<li><a href="#h:15b581ab-09fe-4f84-af26-2f1fbf7d726b">3.2.5.8. Hibernation</a></li> <li><a href="#h:15b581ab-09fe-4f84-af26-2f1fbf7d726b">3.2.5.8. Hibernation</a></li>
<li><a href="#h:86fb3236-9e18-43f0-8a08-3a2acd61cc98">3.2.5.9. BTRFS</a></li> <li><a href="#h:86fb3236-9e18-43f0-8a08-3a2acd61cc98">3.2.5.9. BTRFS</a></li>
<li><a href="#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf">3.2.5.10. work</a></li> <li><a href="#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf">3.2.5.10. work</a></li>
<li><a href="#org1dbc3ca">3.2.5.11. microvm-host</a></li> <li><a href="#orgcb2fcb7">3.2.5.11. microvm-host</a></li>
<li><a href="#orgbf7a0ff">3.2.5.12. microvm-guest</a></li> <li><a href="#orgcf7e090">3.2.5.12. microvm-guest</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -472,7 +472,7 @@
<li><a href="#h:4486b02f-4fb8-432b-bfa2-2e786206341d">3.3.1.12. Sourcing environment variables</a></li> <li><a href="#h:4486b02f-4fb8-432b-bfa2-2e786206341d">3.3.1.12. Sourcing environment variables</a></li>
<li><a href="#h:f0e0b580-2e1c-4ca6-a983-f05d3ebbbcde">3.3.1.13. General Programs: bottom, imv, less, lesspipe, sioyek, bat, carapace, wlogout, swayr, yt-dlp, mpv, jq, nix-index, ripgrep, pandoc, fzf, zoxide, timidity</a></li> <li><a href="#h:f0e0b580-2e1c-4ca6-a983-f05d3ebbbcde">3.3.1.13. General Programs: bottom, imv, less, lesspipe, sioyek, bat, carapace, wlogout, swayr, yt-dlp, mpv, jq, nix-index, ripgrep, pandoc, fzf, zoxide, timidity</a></li>
<li><a href="#h:64dbbb9e-8097-4c1b-813c-8c10cf9b9748">3.3.1.14. nix-index</a></li> <li><a href="#h:64dbbb9e-8097-4c1b-813c-8c10cf9b9748">3.3.1.14. nix-index</a></li>
<li><a href="#orge4d0c6e">3.3.1.15. nix-your-shell</a></li> <li><a href="#org0bc7fbc">3.3.1.15. nix-your-shell</a></li>
<li><a href="#h:ac0e5e62-0dbf-4782-9a96-9e558eae86ae">3.3.1.16. password-store</a></li> <li><a href="#h:ac0e5e62-0dbf-4782-9a96-9e558eae86ae">3.3.1.16. password-store</a></li>
<li><a href="#h:1ab84307-b3fb-4c32-9def-4b89a53a8547">3.3.1.17. direnv</a></li> <li><a href="#h:1ab84307-b3fb-4c32-9def-4b89a53a8547">3.3.1.17. direnv</a></li>
<li><a href="#h:1bd6b0c7-f201-43e2-9624-6c50de00a1f6">3.3.1.18. eza</a></li> <li><a href="#h:1bd6b0c7-f201-43e2-9624-6c50de00a1f6">3.3.1.18. eza</a></li>
@ -495,12 +495,12 @@
<li><a href="#h:99d05729-df35-4958-9940-3319d6a41359">3.3.1.31.3. Mako</a></li> <li><a href="#h:99d05729-df35-4958-9940-3319d6a41359">3.3.1.31.3. Mako</a></li>
<li><a href="#h:388e71be-f00a-4d45-ade1-218ce942057d">3.3.1.31.4. SwayOSD</a></li> <li><a href="#h:388e71be-f00a-4d45-ade1-218ce942057d">3.3.1.31.4. SwayOSD</a></li>
<li><a href="#h:1598c90b-f195-41a0-9132-94612edf3586">3.3.1.31.5. yubikey-touch-detector</a></li> <li><a href="#h:1598c90b-f195-41a0-9132-94612edf3586">3.3.1.31.5. yubikey-touch-detector</a></li>
<li><a href="#orga8387ad">3.3.1.31.6. blueman-applet</a></li> <li><a href="#org2568de8">3.3.1.31.6. blueman-applet</a></li>
<li><a href="#org3e03cb0">3.3.1.31.7. network-manager-applet</a></li> <li><a href="#org84c1201">3.3.1.31.7. network-manager-applet</a></li>
<li><a href="#org2248ba5">3.3.1.31.8. obsidian service for tray</a></li> <li><a href="#org43f6e21">3.3.1.31.8. obsidian service for tray</a></li>
<li><a href="#org349a389">3.3.1.31.9. anki service for tray</a></li> <li><a href="#orgaa41ee3">3.3.1.31.9. anki service for tray</a></li>
<li><a href="#org367079d">3.3.1.31.10. element service for tray</a></li> <li><a href="#orgcb4f253">3.3.1.31.10. element service for tray</a></li>
<li><a href="#orga654c87">3.3.1.31.11. vesktop service for tray</a></li> <li><a href="#orgb766ab8">3.3.1.31.11. vesktop service for tray</a></li>
</ul> </ul>
</li> </li>
<li><a href="#h:02df9dfc-d1af-4a37-a7a0-d8da0af96a20">3.3.1.32. Sway</a></li> <li><a href="#h:02df9dfc-d1af-4a37-a7a0-d8da0af96a20">3.3.1.32. Sway</a></li>
@ -509,17 +509,17 @@
<li><a href="#h:7d384e3b-1be7-4644-b304-ada4af0b692b">3.3.1.35. gpg-agent</a></li> <li><a href="#h:7d384e3b-1be7-4644-b304-ada4af0b692b">3.3.1.35. gpg-agent</a></li>
<li><a href="#h:74e236be-a977-4d38-b8c5-0b9feef8af91">3.3.1.36. gammastep</a></li> <li><a href="#h:74e236be-a977-4d38-b8c5-0b9feef8af91">3.3.1.36. gammastep</a></li>
<li><a href="#h:d1fb3075-ad52-4c1b-ba45-5ddbd0d3b708">3.3.1.37. Spicetify</a></li> <li><a href="#h:d1fb3075-ad52-4c1b-ba45-5ddbd0d3b708">3.3.1.37. Spicetify</a></li>
<li><a href="#org76d116f">3.3.1.38. Obsidian</a></li> <li><a href="#org3f19616">3.3.1.38. Obsidian</a></li>
<li><a href="#orga008c2b">3.3.1.39. Anki</a></li> <li><a href="#orgd0e6499">3.3.1.39. Anki</a></li>
<li><a href="#org890c5fe">3.3.1.40. Element-desktop</a></li> <li><a href="#orgb6ac1d9">3.3.1.40. Element-desktop</a></li>
<li><a href="#orgc19c8f7">3.3.1.41. Hexchat</a></li> <li><a href="#org68fbf73">3.3.1.41. Hexchat</a></li>
<li><a href="#org4080c55">3.3.1.42. obs-studio</a></li> <li><a href="#orgea285a9">3.3.1.42. obs-studio</a></li>
<li><a href="#org0a8046e">3.3.1.43. spotify-player</a></li> <li><a href="#orgd003fee">3.3.1.43. spotify-player</a></li>
<li><a href="#orga246a4c">3.3.1.44. vesktop</a></li> <li><a href="#org8616bfa">3.3.1.44. vesktop</a></li>
<li><a href="#org47c4dda">3.3.1.45. batsignal</a></li> <li><a href="#orgab3d85e">3.3.1.45. batsignal</a></li>
<li><a href="#orgafe3a00">3.3.1.46. autotiling</a></li> <li><a href="#orgde9dc92">3.3.1.46. autotiling</a></li>
<li><a href="#orgc152f86">3.3.1.47. swayidle</a></li> <li><a href="#orge7185ca">3.3.1.47. swayidle</a></li>
<li><a href="#orgd6d4110">3.3.1.48. swaylock</a></li> <li><a href="#org4e801e4">3.3.1.48. swaylock</a></li>
</ul> </ul>
</li> </li>
<li><a href="#h:b1a00339-6e9b-4ae4-b5dc-6fd5669a2ddb">3.3.2. Server</a> <li><a href="#h:b1a00339-6e9b-4ae4-b5dc-6fd5669a2ddb">3.3.2. Server</a>
@ -584,7 +584,8 @@
<li><a href="#h:c3362d4e-d3a8-43e8-9ef7-272b6de0572e">3.5.31. swarsel-build</a></li> <li><a href="#h:c3362d4e-d3a8-43e8-9ef7-272b6de0572e">3.5.31. swarsel-build</a></li>
<li><a href="#h:95ebfd13-1f6b-427f-950d-e30c1ed6f9fa">3.5.32. swarsel-instantiate</a></li> <li><a href="#h:95ebfd13-1f6b-427f-950d-e30c1ed6f9fa">3.5.32. swarsel-instantiate</a></li>
<li><a href="#h:02842543-caca-4d4c-a4d2-7ac749b5c136">3.5.33. sshrm</a></li> <li><a href="#h:02842543-caca-4d4c-a4d2-7ac749b5c136">3.5.33. sshrm</a></li>
<li><a href="#orgfa84748">3.5.34. endme</a></li> <li><a href="#org6a36b50">3.5.34. endme</a></li>
<li><a href="#orgb3faf9e">3.5.35. git-replace</a></li>
</ul> </ul>
</li> </li>
<li><a href="#h:f0f1c961-3e7a-47b8-99ab-1654bb45dffc">3.6. Profiles</a> <li><a href="#h:f0f1c961-3e7a-47b8-99ab-1654bb45dffc">3.6. Profiles</a>
@ -593,7 +594,7 @@
<ul> <ul>
<li><a href="#h:32d654de-8db2-403a-9a27-4c46d7b9172d">3.6.1.1. Personal</a></li> <li><a href="#h:32d654de-8db2-403a-9a27-4c46d7b9172d">3.6.1.1. Personal</a></li>
<li><a href="#h:b926f0c8-7968-4079-924c-a5d0ae4d3a45">3.6.1.2. Minimal</a></li> <li><a href="#h:b926f0c8-7968-4079-924c-a5d0ae4d3a45">3.6.1.2. Minimal</a></li>
<li><a href="#org76fa275">3.6.1.3. Optionals</a></li> <li><a href="#orgefd2161">3.6.1.3. Optionals</a></li>
<li><a href="#h:b79fbb59-9cf2-48eb-b469-2589223dda95">3.6.1.4. Chaostheatre</a></li> <li><a href="#h:b79fbb59-9cf2-48eb-b469-2589223dda95">3.6.1.4. Chaostheatre</a></li>
<li><a href="#h:cb3631a8-9c1b-42f2-ab01-502c7b4c273d">3.6.1.5. Work</a></li> <li><a href="#h:cb3631a8-9c1b-42f2-ab01-502c7b4c273d">3.6.1.5. Work</a></li>
<li><a href="#h:87a83b10-3c2f-407c-89aa-922ad77748a4">3.6.1.6. Uni</a></li> <li><a href="#h:87a83b10-3c2f-407c-89aa-922ad77748a4">3.6.1.6. Uni</a></li>
@ -836,7 +837,7 @@
</div> </div>
</div> </div>
<p> <p>
<b>This file has 95668 words spanning 24729 lines and was last revised on 2025-10-11 23:49:08 +0200.</b> <b>This file has 96128 words spanning 24842 lines and was last revised on 2025-10-21 13:09:36 +0200.</b>
</p> </p>
<p> <p>
@ -905,7 +906,7 @@ This section defines my Emacs configuration. For a while, I considered to use ry
</p> </p>
<p> <p>
My emacs is built using the emacs-overlay nix flake, which builds a bleeding edge emacs on wayland (pgtk) with utilities like treesitter support. By executing the below source block, the current build setting can be updated at any time, and you can see my most up-to-date build options (last updated: 2025-10-11 23:49:08 +0200) My emacs is built using the emacs-overlay nix flake, which builds a bleeding edge emacs on wayland (pgtk) with utilities like treesitter support. By executing the below source block, the current build setting can be updated at any time, and you can see my most up-to-date build options (last updated: 2025-10-21 13:09:36 +0200)
</p></li> </p></li>
</ul> </ul>
@ -917,7 +918,7 @@ system-configuration-options
</div> </div>
<pre class="example"> <pre class="example">
--prefix=/nix/store/qrqw5n6fivwcqfpg83x28bj1klpgfzg8-emacs-git-pgtk-20250928.0 --disable-build-details --with-modules --with-pgtk --with-compress-install --with-toolkit-scroll-bars --with-native-compilation --without-imagemagick --with-mailutils --without-small-ja-dic --with-tree-sitter --without-xinput2 --without-xwidgets --with-dbus --with-selinux --prefix=/nix/store/x7csgsyxznfca0sn3mank9rp0xd7dh5n-emacs-git-pgtk-20251013.0 --disable-build-details --with-modules --with-pgtk --disable-gc-mark-trace --with-compress-install --with-toolkit-scroll-bars --with-native-compilation --without-imagemagick --with-mailutils --without-small-ja-dic --with-tree-sitter --without-xinput2 --without-xwidgets --with-dbus --with-selinux
</pre> </pre>
@ -1352,8 +1353,9 @@ This provides devshell support for flake-parts</li>
swarsel-modules.url = "github:Swarsel/swarsel-modules/main"; swarsel-modules.url = "github:Swarsel/swarsel-modules/main";
swarsel-nix.url = "github:Swarsel/swarsel-nix/main"; swarsel-nix.url = "github:Swarsel/swarsel-nix/main";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; # url = "github:nix-community/home-manager";
# url = "github:Swarsel/home-manager/module/pizauth"; # url = "github:Swarsel/home-manager/main";
url = "github:JuneStepp/home-manager/anki-fix-booleans";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
swarsel.url = "github:Swarsel/.dotfiles"; swarsel.url = "github:Swarsel/.dotfiles";
@ -3074,8 +3076,8 @@ in
# ''; # '';
boot = { boot = {
# kernelPackages = lib.mkDefault pkgs.kernel.linuxPackages; kernelPackages = lib.mkDefault pkgs.kernel.linuxPackages;
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; # kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
binfmt.emulatedSystems = [ "aarch64-linux" ]; binfmt.emulatedSystems = [ "aarch64-linux" ];
initrd = { initrd = {
availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "cryptd" "usbhid" "sd_mod" "r8152" ]; availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "cryptd" "usbhid" "sd_mod" "r8152" ];
@ -3091,7 +3093,8 @@ in
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
kernelParams = [ kernelParams = [
"mem_sleep_default=deep" # deep sleep is discontinued by amd
# "mem_sleep_default=deep"
# supposedly, this helps save power on laptops # supposedly, this helps save power on laptops
# in reality (at least on this model), this just generate excessive heat on the CPUs # in reality (at least on this model), this just generate excessive heat on the CPUs
# "amd_pstate=passive" # "amd_pstate=passive"
@ -5372,6 +5375,7 @@ We enable the use of <code>home-manager</code> as a NixoS module. A nice trick h
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
verbose = true; verbose = true;
backupFileExtension = "hm-bak";
users.${config.swarselsystems.mainUser}.imports = [ users.${config.swarselsystems.mainUser}.imports = [
inputs.nix-index-database.homeModules.nix-index inputs.nix-index-database.homeModules.nix-index
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops
@ -5896,6 +5900,9 @@ Mostly used to install some compilers and lsp's that I want to have available wh
"jitsi-meet-1.0.8043" "jitsi-meet-1.0.8043"
"electron-29.4.6" "electron-29.4.6"
"SDL_ttf-2.0.11" "SDL_ttf-2.0.11"
# audacity?
"mbedtls-2.28.10"
# "qtwebengine-5.15.19"
]; ];
}; };
} }
@ -11830,7 +11837,7 @@ This holds configuration that is specific to framework laptops.
<div class="outline-text-5" id="text-h:15b581ab-09fe-4f84-af26-2f1fbf7d726b"> <div class="outline-text-5" id="text-h:15b581ab-09fe-4f84-af26-2f1fbf7d726b">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
{ {
options.swarselmodules.optional.hibernation = lib.mkEnableOption "optional amd gpu settings"; options.swarselmodules.optional.hibernation = lib.mkEnableOption "optional amd gpu settings";
options.swarselsystems = { options.swarselsystems = {
hibernation = { hibernation = {
@ -11848,11 +11855,18 @@ This holds configuration that is specific to framework laptops.
boot = { boot = {
kernelParams = [ kernelParams = [
"resume_offset=${builtins.toString config.swarselsystems.hibernation.offset}" "resume_offset=${builtins.toString config.swarselsystems.hibernation.offset}"
# "mem_sleep_default=deep"
]; ];
inherit (config.swarselsystems.hibernation) resumeDevice; inherit (config.swarselsystems.hibernation) resumeDevice;
}; };
systemd.services."systemd-suspend-then-hibernate".aliases = [ "systemd-suspend.service" ];
powerManagement.enable = true;
systemd.sleep.extraConfig = ''
HibernateDelaySec=120m
SuspendState=freeze
'';
}; };
} }
</pre> </pre>
</div> </div>
</div> </div>
@ -11978,11 +11992,13 @@ in
id = "VBC"; id = "VBC";
type = "wifi"; type = "wifi";
autoconnect-priority = "500"; autoconnect-priority = "500";
uuid = "3988f10e-6451-381f-9330-a12e66f45051";
secondaries = "48d09de4-0521-47d7-9bd5-43f97e23ff82"; # vpn uuid secondaries = "48d09de4-0521-47d7-9bd5-43f97e23ff82"; # vpn uuid
}; };
ipv4 = { method = "auto"; }; ipv4 = { method = "auto"; };
ipv6 = { ipv6 = {
addr-gen-mode = "default"; # addr-gen-mode = "default";
addr-gen-mode = "stable-privacy";
method = "auto"; method = "auto";
}; };
proxy = { }; proxy = { };
@ -11995,7 +12011,7 @@ in
ssid = "VBC"; ssid = "VBC";
}; };
wifi-security = { wifi-security = {
auth-alg = "open"; # auth-alg = "open";
key-mgmt = "wpa-eap"; key-mgmt = "wpa-eap";
}; };
}; };
@ -12025,20 +12041,22 @@ in
runAsRoot = true; runAsRoot = true;
swtpm.enable = true; swtpm.enable = true;
vhostUserPackages = with pkgs; [ virtiofsd ]; vhostUserPackages = with pkgs; [ virtiofsd ];
ovmf = { # ovmf = {
enable = true; # enable = true;
packages = [ # packages = [
(pkgs.OVMFFull.override { # (pkgs.OVMFFull.override {
secureBoot = true; # secureBoot = true;
tpmSupport = true; # tpmSupport = true;
}).fd # }).fd
]; # ];
}; # };
}; };
}; };
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
remmina
# gp-onsaml-gui
stable24_11.python39 stable24_11.python39
qemu qemu
packer packer
@ -12092,6 +12110,7 @@ in
}; };
}; };
# ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.kanshi}/bin/kanshictl switch laptoponly"
udev.extraRules = '' udev.extraRules = ''
# lock screen when yubikey removed # lock screen when yubikey removed
ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.systemd}/bin/systemctl suspend" ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.systemd}/bin/systemctl suspend"
@ -12115,8 +12134,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org1dbc3ca" class="outline-5"> <div id="outline-container-orgcb2fcb7" class="outline-5">
<h5 id="org1dbc3ca"><span class="section-number-5">3.2.5.11.</span> microvm-host</h5> <h5 id="orgcb2fcb7"><span class="section-number-5">3.2.5.11.</span> microvm-host</h5>
<div class="outline-text-5" id="text-3-2-5-11"> <div class="outline-text-5" id="text-3-2-5-11">
<p> <p>
Some standard options that should be set for every microvm host. Some standard options that should be set for every microvm host.
@ -12142,8 +12161,8 @@ Some standard options that should be set for every microvm host.
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgbf7a0ff" class="outline-5"> <div id="outline-container-orgcf7e090" class="outline-5">
<h5 id="orgbf7a0ff"><span class="section-number-5">3.2.5.12.</span> microvm-guest</h5> <h5 id="orgcf7e090"><span class="section-number-5">3.2.5.12.</span> microvm-guest</h5>
<div class="outline-text-5" id="text-3-2-5-12"> <div class="outline-text-5" id="text-3-2-5-12">
<p> <p>
Some standard options that should be set vor every microvm guest. We set the default Some standard options that should be set vor every microvm guest. We set the default
@ -12672,6 +12691,7 @@ This is just a separate container for derivations defined in <a href="#h:64a5cc1
swarselzellij swarselzellij
sshrm sshrm
endme endme
git-replace
rustdesk-vbc rustdesk-vbc
]; ];
@ -12924,7 +12944,9 @@ TODO: Non-NixOS machines (=sp3) should not use these by default, but instead the
}; };
xdg.mimeApps = { xdg = {
configFile."mimeapps.list".force = true;
mimeApps = {
enable = true; enable = true;
defaultApplications = { defaultApplications = {
"application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ];
@ -12970,6 +12992,7 @@ TODO: Non-NixOS machines (=sp3) should not use these by default, but instead the
}; };
}; };
}; };
};
} }
</pre> </pre>
</div> </div>
@ -13085,7 +13108,7 @@ This section is for programs that require no further configuration. zsh Integrat
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }: <pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
{ {
options.swarselmodules.programs = lib.mkEnableOption "programs settings"; options.swarselmodules.programs = lib.mkEnableOption "programs settings";
config = lib.mkIf config.swarselmodules.programs { config = lib.mkIf config.swarselmodules.programs {
programs = { programs = {
@ -13111,7 +13134,53 @@ This section is for programs that require no further configuration. zsh Integrat
sioyek.enable = true; sioyek.enable = true;
swayr.enable = true; swayr.enable = true;
timidity.enable = true; timidity.enable = true;
wlogout.enable = true; wlogout ={
enable = true;
layout = [
{
label = "lock";
action = "loginctl lock-session";
text = "Lock";
keybind = "l";
circular = true;
}
{
label = "hibernate";
action = "systemctl hibernate";
text = "Hibernate";
keybind = "h";
circular = true;
}
{
label = "logout";
action = "loginctl terminate-user $USER";
text = "Logout";
keybind = "u";
circular = true;
}
{
label = "shutdown";
action = "systemctl poweroff";
text = "Shutdown";
keybind = "p";
circular = true;
}
{
label = "suspend";
action = "systemctl suspend";
text = "Suspend";
keybind = "s";
circular = true;
}
{
label = "reboot";
action = "systemctl reboot";
text = "Reboot";
keybind = "r";
circular = true;
}
];
};
yt-dlp.enable = true; yt-dlp.enable = true;
zoxide = { zoxide = {
enable = true; enable = true;
@ -13122,7 +13191,7 @@ This section is for programs that require no further configuration. zsh Integrat
}; };
}; };
}; };
} }
</pre> </pre>
</div> </div>
</div> </div>
@ -13163,8 +13232,8 @@ nix-index provides a way to find out which packages are provided by which deriva
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orge4d0c6e" class="outline-5"> <div id="outline-container-org0bc7fbc" class="outline-5">
<h5 id="orge4d0c6e"><span class="section-number-5">3.3.1.15.</span> nix-your-shell</h5> <h5 id="org0bc7fbc"><span class="section-number-5">3.3.1.15.</span> nix-your-shell</h5>
<div class="outline-text-5" id="text-3-3-1-15"> <div class="outline-text-5" id="text-3-3-1-15">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -14877,8 +14946,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orga8387ad" class="outline-6"> <div id="outline-container-org2568de8" class="outline-6">
<h6 id="orga8387ad"><span class="section-number-6">3.3.1.31.6.</span> blueman-applet</h6> <h6 id="org2568de8"><span class="section-number-6">3.3.1.31.6.</span> blueman-applet</h6>
<div class="outline-text-6" id="text-3-3-1-31-6"> <div class="outline-text-6" id="text-3-3-1-31-6">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -14892,8 +14961,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org3e03cb0" class="outline-6"> <div id="outline-container-org84c1201" class="outline-6">
<h6 id="org3e03cb0"><span class="section-number-6">3.3.1.31.7.</span> network-manager-applet</h6> <h6 id="org84c1201"><span class="section-number-6">3.3.1.31.7.</span> network-manager-applet</h6>
<div class="outline-text-6" id="text-3-3-1-31-7"> <div class="outline-text-6" id="text-3-3-1-31-7">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -14908,8 +14977,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org2248ba5" class="outline-6"> <div id="outline-container-org43f6e21" class="outline-6">
<h6 id="org2248ba5"><span class="section-number-6">3.3.1.31.8.</span> obsidian service for tray</h6> <h6 id="org43f6e21"><span class="section-number-6">3.3.1.31.8.</span> obsidian service for tray</h6>
<div class="outline-text-6" id="text-3-3-1-31-8"> <div class="outline-text-6" id="text-3-3-1-31-8">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -14943,8 +15012,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org349a389" class="outline-6"> <div id="outline-container-orgaa41ee3" class="outline-6">
<h6 id="org349a389"><span class="section-number-6">3.3.1.31.9.</span> anki service for tray</h6> <h6 id="orgaa41ee3"><span class="section-number-6">3.3.1.31.9.</span> anki service for tray</h6>
<div class="outline-text-6" id="text-3-3-1-31-9"> <div class="outline-text-6" id="text-3-3-1-31-9">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -14982,8 +15051,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org367079d" class="outline-6"> <div id="outline-container-orgcb4f253" class="outline-6">
<h6 id="org367079d"><span class="section-number-6">3.3.1.31.10.</span> element service for tray</h6> <h6 id="orgcb4f253"><span class="section-number-6">3.3.1.31.10.</span> element service for tray</h6>
<div class="outline-text-6" id="text-3-3-1-31-10"> <div class="outline-text-6" id="text-3-3-1-31-10">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }: <pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
@ -15017,8 +15086,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orga654c87" class="outline-6"> <div id="outline-container-orgb766ab8" class="outline-6">
<h6 id="orga654c87"><span class="section-number-6">3.3.1.31.11.</span> vesktop service for tray</h6> <h6 id="orgb766ab8"><span class="section-number-6">3.3.1.31.11.</span> vesktop service for tray</h6>
<div class="outline-text-6" id="text-3-3-1-31-11"> <div class="outline-text-6" id="text-3-3-1-31-11">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }: <pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
@ -15311,10 +15380,9 @@ Currently, I am too lazy to explain every option here, but most of it is very se
{ command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; } { command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; }
]; ];
seat = { seat = {
"*" = [ "*" = {
{ hide_cursor = "when-typing enable"; } hide_cursor = "when-typing enable";
{ hide_cursor = "2000"; } };
];
}; };
window = { window = {
border = 1; border = 1;
@ -15481,7 +15549,7 @@ Currently, I am too lazy to explain every option here, but most of it is very se
exec systemctl --user import-environment exec systemctl --user import-environment
# exec swayidle -w # exec swayidle -w
# seat * hide_cursor 2000 seat * hide_cursor 2000
exec_always kill -1 $(pidof kanshi) exec_always kill -1 $(pidof kanshi)
@ -15768,7 +15836,10 @@ Currently, I am too lazy to explain every option here, but most of it is very se
in in
{ {
name = "lidopen"; name = "lidopen";
exec = [ "${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/standwp.png --mode ${config.stylix.imageScalingMode}" ]; exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/standwp.png --mode ${config.stylix.imageScalingMode}"
];
outputs = [ outputs = [
{ {
criteria = config.swarselsystems.sharescreen; criteria = config.swarselsystems.sharescreen;
@ -15914,7 +15985,7 @@ in
programs.spicetify = { programs.spicetify = {
enable = true; enable = true;
# spotifyPackage = pkgs.stable24_11.spotify; # spotifyPackage = pkgs.stable24_11.spotify;
spotifyPackage = pkgs.spotify; spotifyPackage = pkgs.stable.spotify;
enabledExtensions = with spicePkgs.extensions; [ enabledExtensions = with spicePkgs.extensions; [
fullAppDisplay fullAppDisplay
shuffle shuffle
@ -15930,22 +16001,27 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org76d116f" class="outline-5"> <div id="outline-container-org3f19616" class="outline-5">
<h5 id="org76d116f"><span class="section-number-5">3.3.1.38.</span> Obsidian</h5> <h5 id="org3f19616"><span class="section-number-5">3.3.1.38.</span> Obsidian</h5>
<div class="outline-text-5" id="text-3-3-1-38"> <div class="outline-text-5" id="text-3-3-1-38">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, nixosConfig ? config, ... }: <pre class="src src-nix-ts">{ lib, config, pkgs, nixosConfig ? config, ... }:
let let
moduleName = "obsidian"; moduleName = "obsidian";
inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters; inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters;
name = "Main";
in in
{ {
options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} with settings"; options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} with settings";
config = lib.mkIf config.swarselmodules.${moduleName} { config = lib.mkIf config.swarselmodules.${moduleName} {
home.file = {
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/app.json".force = true;
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/appearance.json".force = true;
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/core-plugins.json".force = true;
};
programs.obsidian = programs.obsidian =
let
name = "Main";
in
{ {
enable = true; enable = true;
package = pkgs.obsidian; package = pkgs.obsidian;
@ -16070,8 +16146,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orga008c2b" class="outline-5"> <div id="outline-container-orgd0e6499" class="outline-5">
<h5 id="orga008c2b"><span class="section-number-5">3.3.1.39.</span> Anki</h5> <h5 id="orgd0e6499"><span class="section-number-5">3.3.1.39.</span> Anki</h5>
<div class="outline-text-5" id="text-3-3-1-39"> <div class="outline-text-5" id="text-3-3-1-39">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, globals, nixosConfig ? config, ... }: <pre class="src src-nix-ts">{ lib, config, pkgs, globals, nixosConfig ? config, ... }:
@ -16092,7 +16168,7 @@ in
programs.anki = { programs.anki = {
enable = true; enable = true;
package = pkgs.anki; # # package = pkgs.anki;
hideBottomBar = true; hideBottomBar = true;
hideBottomBarMode = "always"; hideBottomBarMode = "always";
hideTopBar = true; hideTopBar = true;
@ -16103,6 +16179,7 @@ in
sync = { sync = {
autoSync = false; # sync on profile close will delay system shutdown autoSync = false; # sync on profile close will delay system shutdown
syncMedia = true; syncMedia = true;
autoSyncMediaMinutes = 5;
url = "https://${globals.services.ankisync.domain}"; url = "https://${globals.services.ankisync.domain}";
usernameFile = nixosConfig.sops.secrets.anki-user.path; usernameFile = nixosConfig.sops.secrets.anki-user.path;
# this is not the password but the syncKey # this is not the password but the syncKey
@ -16142,8 +16219,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org890c5fe" class="outline-5"> <div id="outline-container-orgb6ac1d9" class="outline-5">
<h5 id="org890c5fe"><span class="section-number-5">3.3.1.40.</span> Element-desktop</h5> <h5 id="orgb6ac1d9"><span class="section-number-5">3.3.1.40.</span> Element-desktop</h5>
<div class="outline-text-5" id="text-3-3-1-40"> <div class="outline-text-5" id="text-3-3-1-40">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -16179,8 +16256,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgc19c8f7" class="outline-5"> <div id="outline-container-org68fbf73" class="outline-5">
<h5 id="orgc19c8f7"><span class="section-number-5">3.3.1.41.</span> Hexchat</h5> <h5 id="org68fbf73"><span class="section-number-5">3.3.1.41.</span> Hexchat</h5>
<div class="outline-text-5" id="text-3-3-1-41"> <div class="outline-text-5" id="text-3-3-1-41">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, nixosConfig ? config, ... }: <pre class="src src-nix-ts">{ lib, config, nixosConfig ? config, ... }:
@ -16204,8 +16281,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org4080c55" class="outline-5"> <div id="outline-container-orgea285a9" class="outline-5">
<h5 id="org4080c55"><span class="section-number-5">3.3.1.42.</span> obs-studio</h5> <h5 id="orgea285a9"><span class="section-number-5">3.3.1.42.</span> obs-studio</h5>
<div class="outline-text-5" id="text-3-3-1-42"> <div class="outline-text-5" id="text-3-3-1-42">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -16225,8 +16302,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org0a8046e" class="outline-5"> <div id="outline-container-orgd003fee" class="outline-5">
<h5 id="org0a8046e"><span class="section-number-5">3.3.1.43.</span> spotify-player</h5> <h5 id="orgd003fee"><span class="section-number-5">3.3.1.43.</span> spotify-player</h5>
<div class="outline-text-5" id="text-3-3-1-43"> <div class="outline-text-5" id="text-3-3-1-43">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -16246,8 +16323,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orga246a4c" class="outline-5"> <div id="outline-container-org8616bfa" class="outline-5">
<h5 id="orga246a4c"><span class="section-number-5">3.3.1.44.</span> vesktop</h5> <h5 id="org8616bfa"><span class="section-number-5">3.3.1.44.</span> vesktop</h5>
<div class="outline-text-5" id="text-3-3-1-44"> <div class="outline-text-5" id="text-3-3-1-44">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -16333,29 +16410,41 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org47c4dda" class="outline-5"> <div id="outline-container-orgab3d85e" class="outline-5">
<h5 id="org47c4dda"><span class="section-number-5">3.3.1.45.</span> batsignal</h5> <h5 id="orgab3d85e"><span class="section-number-5">3.3.1.45.</span> batsignal</h5>
<div class="outline-text-5" id="text-3-3-1-45"> <div class="outline-text-5" id="text-3-3-1-45">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
let let
moduleName = "batsignal"; moduleName = "batsignal";
in in
{ {
options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} and settings"; options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} and settings";
config = lib.mkIf config.swarselmodules.${moduleName} { config = lib.mkIf config.swarselmodules.${moduleName} {
services.${moduleName} = { services.${moduleName} = {
enable = true; enable = true;
extraArgs = [
"-W"
" Consider charging the battery"
"-C"
" Battery is low; plug in charger now"
"-D"
" Device will lose power in a few seconds"
"-c"
"10"
"-d"
"5"
];
}; };
}; };
} }
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgafe3a00" class="outline-5"> <div id="outline-container-orgde9dc92" class="outline-5">
<h5 id="orgafe3a00"><span class="section-number-5">3.3.1.46.</span> autotiling</h5> <h5 id="orgde9dc92"><span class="section-number-5">3.3.1.46.</span> autotiling</h5>
<div class="outline-text-5" id="text-3-3-1-46"> <div class="outline-text-5" id="text-3-3-1-46">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -16376,8 +16465,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgc152f86" class="outline-5"> <div id="outline-container-orge7185ca" class="outline-5">
<h5 id="orgc152f86"><span class="section-number-5">3.3.1.47.</span> swayidle</h5> <h5 id="orge7185ca"><span class="section-number-5">3.3.1.47.</span> swayidle</h5>
<div class="outline-text-5" id="text-3-3-1-47"> <div class="outline-text-5" id="text-3-3-1-47">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }: <pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
@ -16391,7 +16480,7 @@ in
let let
brightnessctl = "${lib.getExe pkgs.brightnessctl}"; brightnessctl = "${lib.getExe pkgs.brightnessctl}";
swaylock = "${lib.getExe pkgs.swaylock-effects}"; swaylock = "${lib.getExe pkgs.swaylock-effects}";
suspend = "${pkgs.systemd}/bin/systemctl"; suspend = "${pkgs.systemd}/bin/systemctl suspend";
in in
{ {
enable = true; enable = true;
@ -16406,6 +16495,7 @@ in
]; ];
events = [ events = [
# { event = "before-sleep"; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; } # { event = "before-sleep"; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; }
# { event = "after-resume"; command = "${swaylock} -f "; }
{ event = "before-sleep"; command = "${swaylock} -f "; } { event = "before-sleep"; command = "${swaylock} -f "; }
{ event = "lock"; command = "${swaylock} -f "; } { event = "lock"; command = "${swaylock} -f "; }
]; ];
@ -16417,8 +16507,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgd6d4110" class="outline-5"> <div id="outline-container-org4e801e4" class="outline-5">
<h5 id="orgd6d4110"><span class="section-number-5">3.3.1.48.</span> swaylock</h5> <h5 id="org4e801e4"><span class="section-number-5">3.3.1.48.</span> swaylock</h5>
<div class="outline-text-5" id="text-3-3-1-48"> <div class="outline-text-5" id="text-3-3-1-48">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, pkgs, ... }: <pre class="src src-nix-ts">{ lib, config, pkgs, ... }:
@ -16759,16 +16849,16 @@ The rest of the settings is at <a href="#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf"
awscli = { awscli = {
enable = true; enable = true;
package = pkgs.stable24_05.awscli2; package = pkgs.stable24_05.awscli2;
settings = { # settings = {
"default" = { }; # "default" = { };
"profile s3-imagebuilder-prod" = { }; # "profile s3-imagebuilder-prod" = { };
}; # };
credentials = { # credentials = {
"s3-imagebuilder-prod" = { # "s3-imagebuilder-prod" = {
aws_access_key_id = "5OYXY4879EJG9I91K1B6"; # aws_access_key_id = "5OYXY4879EJG9I91K1B6";
credential_process = "${pkgs.pass}/bin/pass show work/awscli/s3-imagebuilder-prod/secret-key"; # credential_process = "${pkgs.pass}/bin/pass show work/awscli/s3-imagebuilder-prod/secret-key";
}; # };
}; # };
}; };
git.userEmail = lib.mkForce gitMail; git.userEmail = lib.mkForce gitMail;
@ -16932,6 +17022,7 @@ The rest of the settings is at <a href="#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf"
profile = { profile = {
name = "lidopen"; name = "lidopen";
exec = [ exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output 'HP Inc. HP 732pk CNC4080YL5' --image ${self}/files/wallpaper/botanicswp.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output 'HP Inc. HP 732pk CNC4080YL5' --image ${self}/files/wallpaper/botanicswp.png --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output 'Hewlett Packard HP Z24i CN44250RDT' --image ${self}/files/wallpaper/op6wp.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output 'Hewlett Packard HP Z24i CN44250RDT' --image ${self}/files/wallpaper/op6wp.png --mode ${config.stylix.imageScalingMode}"
]; ];
@ -16966,6 +17057,7 @@ The rest of the settings is at <a href="#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf"
{ {
name = "lidopen"; name = "lidopen";
exec = [ exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/navidrome.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/navidrome.png --mode ${config.stylix.imageScalingMode}"
"${pkgs.kanshare}/bin/kanshare ${config.swarselsystems.sharescreen} '${monitor}'" "${pkgs.kanshare}/bin/kanshare ${config.swarselsystems.sharescreen} '${monitor}'"
]; ];
@ -19621,8 +19713,8 @@ writeShellApplication {
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgfa84748" class="outline-4"> <div id="outline-container-org6a36b50" class="outline-4">
<h4 id="orgfa84748"><span class="section-number-4">3.5.34.</span> endme</h4> <h4 id="org6a36b50"><span class="section-number-4">3.5.34.</span> endme</h4>
<div class="outline-text-4" id="text-3-5-34"> <div class="outline-text-4" id="text-3-5-34">
<p> <p>
Sometimes my DE crashes after putting it to suspend - to be precise, it happens when I put it into suspend when I have multiple screens plugged in. I have never taken the time to debug the issue, but instead just switch to a different TTY and then use this script to kill the hanging session. Sometimes my DE crashes after putting it to suspend - to be precise, it happens when I put it into suspend when I have multiple screens plugged in. I have never taken the time to debug the issue, but instead just switch to a different TTY and then use this script to kill the hanging session.
@ -19639,6 +19731,30 @@ writeShellApplication {
''; '';
} }
</pre>
</div>
</div>
</div>
<div id="outline-container-orgb3faf9e" class="outline-4">
<h4 id="orgb3faf9e"><span class="section-number-4">3.5.35.</span> git-replace</h4>
<div class="outline-text-4" id="text-3-5-35">
<p>
This script allows for quick git replace of a string.
</p>
<div class="org-src-container">
<pre class="src src-nix-ts">{ name, writeShellApplication, git, gnugrep, findutils, ... }:
writeShellApplication {
inherit name;
runtimeInputs = [ git gnugrep findutils ];
text = ''
git grep -l "$1" | xargs sed -i "s/$1/$2/g"
'';
}
</pre> </pre>
</div> </div>
</div> </div>
@ -19782,8 +19898,8 @@ in
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org76fa275" class="outline-5"> <div id="outline-container-orgefd2161" class="outline-5">
<h5 id="org76fa275"><span class="section-number-5">3.6.1.3.</span> Optionals</h5> <h5 id="orgefd2161"><span class="section-number-5">3.6.1.3.</span> Optionals</h5>
<div class="outline-text-5" id="text-3-6-1-3"> <div class="outline-text-5" id="text-3-6-1-3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix-ts">{ lib, config, ... }: <pre class="src src-nix-ts">{ lib, config, ... }:
@ -24088,10 +24204,13 @@ bind gd tabdetach
bind gD composite tabduplicate; tabdetach bind gD composite tabduplicate; tabdetach
bind d composite tabprev; tabclose # bind d composite tabprev; tabclose #
bind D tabclose bind D tabclose
bind c hint bind c hint -J
bindurl ^http(s)?://www\.google\.com c hint -Jc [class="LC20lb MBeuO DKV0Md"],[class="YmvwI"],[class="YyVfkd"],[class="fl"] bindurl ^http(s)?://www\.google\.com c hint -Jc [class="LC20lb MBeuO DKV0Md"],[class="YmvwI"],[class="YyVfkd"],[class="fl"]
bindurl ^http(s)?://news\.ycombinator\.com c hint -Jc [class="titleline"],[class="age"] bindurl ^http(s)?://news\.ycombinator\.com c hint -Jc [class="titleline"],[class="age"]
bindurl ^http(s)?://lobste\.rs c hint -Jc [class="u-url"],[class="comments_label"] bindurl ^http(s)?://lobste\.rs c hint -Jc [class="u-url"],[class="comments_label"]
bindurl ^http(s)?://reddit\.com c hint -Jc [class="title may-blank loggedin"],[class="bylink comments may-blank"]
bindurl ^http(s)?://github\.com c hint -Jc [class="Link--primary"],[class="AppHeader-button Button--secondary Button--medium Button p-0 color-fg-muted"],[class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"],[class="prc-ActionList-ItemLabel-TmBhn"],[class="PRIVATE_TreeView-item-content-text prc-TreeView-TreeViewItemContentText-smZM-"]
bindurl ^http(s)?://vbc\.atlassian\.net\/wiki c hint -Jc [class="_1reo15vq _18m915vq _1bto1l2s _kqswh2mm _o5721q9c _syaz1fxt"],[class="_11c81ixg _1reo15vq _18m915vq _18s81b66 _kqswh2mm _k48p1wq8 _o5721q9c _1bto1l2s _u5f31b66"],[class="_1r04ze3t _kqswstnw"],[class="css-a61etj"],[class="jira-macro-table-underline-pdfexport"]
bindurl ^http(s)?://www\.google\.com gi composite focusinput -l ; text.end_of_line bindurl ^http(s)?://www\.google\.com gi composite focusinput -l ; text.end_of_line
" Work " Work
@ -26874,7 +26993,7 @@ similarly, there exists an version that starts from the right.
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Leon Schwarzäugl</p> <p class="author">Author: Leon Schwarzäugl</p>
<p class="date">Created: 2025-10-11 Sa 23:49</p> <p class="date">Created: 2025-10-21 Di 13:09</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p> <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div> </div>
</body> </body>

View file

@ -16,7 +16,7 @@ in
programs.anki = { programs.anki = {
enable = true; enable = true;
package = pkgs.anki; # # package = pkgs.anki;
hideBottomBar = true; hideBottomBar = true;
hideBottomBarMode = "always"; hideBottomBarMode = "always";
hideTopBar = true; hideTopBar = true;
@ -27,6 +27,7 @@ in
sync = { sync = {
autoSync = false; # sync on profile close will delay system shutdown autoSync = false; # sync on profile close will delay system shutdown
syncMedia = true; syncMedia = true;
autoSyncMediaMinutes = 5;
url = "https://${globals.services.ankisync.domain}"; url = "https://${globals.services.ankisync.domain}";
usernameFile = nixosConfig.sops.secrets.anki-user.path; usernameFile = nixosConfig.sops.secrets.anki-user.path;
# this is not the password but the syncKey # this is not the password but the syncKey

View file

@ -7,6 +7,18 @@ in
config = lib.mkIf config.swarselmodules.${moduleName} { config = lib.mkIf config.swarselmodules.${moduleName} {
services.${moduleName} = { services.${moduleName} = {
enable = true; enable = true;
extraArgs = [
"-W"
" Consider charging the battery"
"-C"
" Battery is low; plug in charger now"
"-D"
" Device will lose power in a few seconds"
"-c"
"10"
"-d"
"5"
];
}; };
}; };

View file

@ -30,6 +30,7 @@
swarselzellij swarselzellij
sshrm sshrm
endme endme
git-replace
rustdesk-vbc rustdesk-vbc
]; ];

View file

@ -55,7 +55,9 @@
}; };
xdg.mimeApps = { xdg = {
configFile."mimeapps.list".force = true;
mimeApps = {
enable = true; enable = true;
defaultApplications = { defaultApplications = {
"application/epub+zip" = [ "calibre-ebook-viewer.desktop" ]; "application/epub+zip" = [ "calibre-ebook-viewer.desktop" ];
@ -101,4 +103,5 @@
}; };
}; };
}; };
};
} }

View file

@ -53,7 +53,10 @@
in in
{ {
name = "lidopen"; name = "lidopen";
exec = [ "${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/standwp.png --mode ${config.stylix.imageScalingMode}" ]; exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/standwp.png --mode ${config.stylix.imageScalingMode}"
];
outputs = [ outputs = [
{ {
criteria = config.swarselsystems.sharescreen; criteria = config.swarselsystems.sharescreen;

View file

@ -2,14 +2,19 @@
let let
moduleName = "obsidian"; moduleName = "obsidian";
inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters; inherit (nixosConfig.repo.secrets.common.obsidian) userIgnoreFilters;
name = "Main";
in in
{ {
options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} with settings"; options.swarselmodules.${moduleName} = lib.mkEnableOption "enable ${moduleName} with settings";
config = lib.mkIf config.swarselmodules.${moduleName} { config = lib.mkIf config.swarselmodules.${moduleName} {
home.file = {
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/app.json".force = true;
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/appearance.json".force = true;
"${config.programs.obsidian.vaults.${name}.target}/.obsidian/core-plugins.json".force = true;
};
programs.obsidian = programs.obsidian =
let
name = "Main";
in
{ {
enable = true; enable = true;
package = pkgs.obsidian; package = pkgs.obsidian;

View file

@ -81,8 +81,8 @@
# spotify # spotify
# vesktop # discord client # vesktop # discord client
# nextcloud-client # enables a systemd service that I do not want # nextcloud-client # enables a systemd service that I do not want
# element-desktop
# spotify-player # spotify-player
# element-desktop
nicotine-plus nicotine-plus
stable.transmission_3 stable.transmission_3

View file

@ -25,7 +25,53 @@
sioyek.enable = true; sioyek.enable = true;
swayr.enable = true; swayr.enable = true;
timidity.enable = true; timidity.enable = true;
wlogout.enable = true; wlogout = {
enable = true;
layout = [
{
label = "lock";
action = "loginctl lock-session";
text = "Lock";
keybind = "l";
circular = true;
}
{
label = "hibernate";
action = "systemctl hibernate";
text = "Hibernate";
keybind = "h";
circular = true;
}
{
label = "logout";
action = "loginctl terminate-user $USER";
text = "Logout";
keybind = "u";
circular = true;
}
{
label = "shutdown";
action = "systemctl poweroff";
text = "Shutdown";
keybind = "p";
circular = true;
}
{
label = "suspend";
action = "systemctl suspend";
text = "Suspend";
keybind = "s";
circular = true;
}
{
label = "reboot";
action = "systemctl reboot";
text = "Reboot";
keybind = "r";
circular = true;
}
];
};
yt-dlp.enable = true; yt-dlp.enable = true;
zoxide = { zoxide = {
enable = true; enable = true;

View file

@ -9,7 +9,7 @@ in
programs.spicetify = { programs.spicetify = {
enable = true; enable = true;
# spotifyPackage = pkgs.stable24_11.spotify; # spotifyPackage = pkgs.stable24_11.spotify;
spotifyPackage = pkgs.spotify; spotifyPackage = pkgs.stable.spotify;
enabledExtensions = with spicePkgs.extensions; [ enabledExtensions = with spicePkgs.extensions; [
fullAppDisplay fullAppDisplay
shuffle shuffle

View file

@ -9,7 +9,7 @@ in
let let
brightnessctl = "${lib.getExe pkgs.brightnessctl}"; brightnessctl = "${lib.getExe pkgs.brightnessctl}";
swaylock = "${lib.getExe pkgs.swaylock-effects}"; swaylock = "${lib.getExe pkgs.swaylock-effects}";
suspend = "${pkgs.systemd}/bin/systemctl"; suspend = "${pkgs.systemd}/bin/systemctl suspend";
in in
{ {
enable = true; enable = true;
@ -24,6 +24,7 @@ in
]; ];
events = [ events = [
# { event = "before-sleep"; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; } # { event = "before-sleep"; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; }
# { event = "after-resume"; command = "${swaylock} -f "; }
{ event = "before-sleep"; command = "${swaylock} -f "; } { event = "before-sleep"; command = "${swaylock} -f "; }
{ event = "lock"; command = "${swaylock} -f "; } { event = "lock"; command = "${swaylock} -f "; }
]; ];

View file

@ -126,16 +126,16 @@ in
awscli = { awscli = {
enable = true; enable = true;
package = pkgs.stable24_05.awscli2; package = pkgs.stable24_05.awscli2;
settings = { # settings = {
"default" = { }; # "default" = { };
"profile s3-imagebuilder-prod" = { }; # "profile s3-imagebuilder-prod" = { };
}; # };
credentials = { # credentials = {
"s3-imagebuilder-prod" = { # "s3-imagebuilder-prod" = {
aws_access_key_id = "5OYXY4879EJG9I91K1B6"; # aws_access_key_id = "5OYXY4879EJG9I91K1B6";
credential_process = "${pkgs.pass}/bin/pass show work/awscli/s3-imagebuilder-prod/secret-key"; # credential_process = "${pkgs.pass}/bin/pass show work/awscli/s3-imagebuilder-prod/secret-key";
}; # };
}; # };
}; };
git.userEmail = lib.mkForce gitMail; git.userEmail = lib.mkForce gitMail;
@ -299,6 +299,7 @@ in
profile = { profile = {
name = "lidopen"; name = "lidopen";
exec = [ exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output 'HP Inc. HP 732pk CNC4080YL5' --image ${self}/files/wallpaper/botanicswp.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output 'HP Inc. HP 732pk CNC4080YL5' --image ${self}/files/wallpaper/botanicswp.png --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output 'Hewlett Packard HP Z24i CN44250RDT' --image ${self}/files/wallpaper/op6wp.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output 'Hewlett Packard HP Z24i CN44250RDT' --image ${self}/files/wallpaper/op6wp.png --mode ${config.stylix.imageScalingMode}"
]; ];
@ -333,6 +334,7 @@ in
{ {
name = "lidopen"; name = "lidopen";
exec = [ exec = [
"${pkgs.swaybg}/bin/swaybg --output '${config.swarselsystems.sharescreen}' --image ${config.swarselsystems.wallpaper} --mode ${config.stylix.imageScalingMode}"
"${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/navidrome.png --mode ${config.stylix.imageScalingMode}" "${pkgs.swaybg}/bin/swaybg --output '${monitor}' --image ${self}/files/wallpaper/navidrome.png --mode ${config.stylix.imageScalingMode}"
"${pkgs.kanshare}/bin/kanshare ${config.swarselsystems.sharescreen} '${monitor}'" "${pkgs.kanshare}/bin/kanshare ${config.swarselsystems.sharescreen} '${monitor}'"
]; ];

View file

@ -88,6 +88,9 @@
"jitsi-meet-1.0.8043" "jitsi-meet-1.0.8043"
"electron-29.4.6" "electron-29.4.6"
"SDL_ttf-2.0.11" "SDL_ttf-2.0.11"
# audacity?
"mbedtls-2.28.10"
# "qtwebengine-5.15.19"
]; ];
}; };
} }

View file

@ -6,6 +6,7 @@
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
verbose = true; verbose = true;
backupFileExtension = "hm-bak";
users.${config.swarselsystems.mainUser}.imports = [ users.${config.swarselsystems.mainUser}.imports = [
inputs.nix-index-database.homeModules.nix-index inputs.nix-index-database.homeModules.nix-index
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops

View file

@ -17,8 +17,15 @@
boot = { boot = {
kernelParams = [ kernelParams = [
"resume_offset=${builtins.toString config.swarselsystems.hibernation.offset}" "resume_offset=${builtins.toString config.swarselsystems.hibernation.offset}"
# "mem_sleep_default=deep"
]; ];
inherit (config.swarselsystems.hibernation) resumeDevice; inherit (config.swarselsystems.hibernation) resumeDevice;
}; };
systemd.services."systemd-suspend-then-hibernate".aliases = [ "systemd-suspend.service" ];
powerManagement.enable = true;
systemd.sleep.extraConfig = ''
HibernateDelaySec=120m
SuspendState=freeze
'';
}; };
} }

View file

@ -94,11 +94,13 @@ in
id = "VBC"; id = "VBC";
type = "wifi"; type = "wifi";
autoconnect-priority = "500"; autoconnect-priority = "500";
uuid = "3988f10e-6451-381f-9330-a12e66f45051";
secondaries = "48d09de4-0521-47d7-9bd5-43f97e23ff82"; # vpn uuid secondaries = "48d09de4-0521-47d7-9bd5-43f97e23ff82"; # vpn uuid
}; };
ipv4 = { method = "auto"; }; ipv4 = { method = "auto"; };
ipv6 = { ipv6 = {
addr-gen-mode = "default"; # addr-gen-mode = "default";
addr-gen-mode = "stable-privacy";
method = "auto"; method = "auto";
}; };
proxy = { }; proxy = { };
@ -111,7 +113,7 @@ in
ssid = "VBC"; ssid = "VBC";
}; };
wifi-security = { wifi-security = {
auth-alg = "open"; # auth-alg = "open";
key-mgmt = "wpa-eap"; key-mgmt = "wpa-eap";
}; };
}; };
@ -141,20 +143,22 @@ in
runAsRoot = true; runAsRoot = true;
swtpm.enable = true; swtpm.enable = true;
vhostUserPackages = with pkgs; [ virtiofsd ]; vhostUserPackages = with pkgs; [ virtiofsd ];
ovmf = { # ovmf = {
enable = true; # enable = true;
packages = [ # packages = [
(pkgs.OVMFFull.override { # (pkgs.OVMFFull.override {
secureBoot = true; # secureBoot = true;
tpmSupport = true; # tpmSupport = true;
}).fd # }).fd
]; # ];
}; # };
}; };
}; };
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
remmina
# gp-onsaml-gui
stable24_11.python39 stable24_11.python39
qemu qemu
packer packer
@ -208,6 +212,7 @@ in
}; };
}; };
# ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.kanshi}/bin/kanshictl switch laptoponly"
udev.extraRules = '' udev.extraRules = ''
# lock screen when yubikey removed # lock screen when yubikey removed
ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.systemd}/bin/systemctl suspend" ACTION=="remove", ENV{PRODUCT}=="3/1050/407/110", RUN+="${pkgs.systemd}/bin/systemctl suspend"

View file

@ -0,0 +1,9 @@
{ name, writeShellApplication, git, gnugrep, findutils, ... }:
writeShellApplication {
inherit name;
runtimeInputs = [ git gnugrep findutils ];
text = ''
git grep -l "$1" | xargs sed -i "s/$1/$2/g"
'';
}