Compare commits

..

1 commit

Author SHA1 Message Date
99ae637b8c
[thunderbird] WIP: Declarative extensions 2025-10-30 19:56:57 +01:00
40 changed files with 499 additions and 743 deletions

180
nixos/flake.lock generated
View file

@ -25,42 +25,63 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1781184346, "lastModified": 1758463745,
"narHash": "sha256-cZRlW47U6A2nWvAmnZeeO6Xvq23gxYbVLel4KxqOrcQ=", "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "ea6d221d7aa85652d014b6f719dddf036037515b", "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-26.05", "ref": "release-25.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
}, },
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"openconnect-sso",
"nixpkgs"
]
},
"locked": {
"lastModified": 1720066371,
"narHash": "sha256-uPlLYH2S0ACj0IcgaK9Lsf4spmJoGejR9DotXiXSBZQ=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "622f829f5fe69310a866c8a6cd07e747c44ef820",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1780902259, "lastModified": 1760862643,
"narHash": "sha256-q8yYEC5f1mFlQO9RGna4LTc9QrcvWunX6FYp83munkQ=", "narHash": "sha256-PXwG0TM7Ek87DNx4LbGWuD93PbFeKAJs4FfALtp7Wo0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "bd0ff2d3eac24699c3664d5966b9ef36f388e2ca", "rev": "33c6dca0c0cb31d6addcd34e90a63ad61826b28c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
"ref": "nixos-26.05", "ref": "nixos-25.05",
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1781074563, "lastModified": 1760878510,
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=", "narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca", "rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -69,14 +90,81 @@
"type": "indirect" "type": "indirect"
} }
}, },
"openconnect-sso": {
"inputs": {
"flake-utils": [
"utils"
],
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"nixpkgs"
],
"poetry2nix": "poetry2nix",
"systems": "systems_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1758594056,
"narHash": "sha256-6XyKDRWqBngw1g73e789iyIaw/0VF04ELk/ATtlkTVU=",
"owner": "ThinkChaos",
"repo": "openconnect-sso",
"rev": "2041471efd331d0591d34e122aefb02690fb233a",
"type": "github"
},
"original": {
"owner": "ThinkChaos",
"ref": "fix/nix-flake",
"repo": "openconnect-sso",
"type": "github"
}
},
"poetry2nix": {
"inputs": {
"flake-utils": [
"openconnect-sso",
"flake-utils"
],
"nix-github-actions": [
"openconnect-sso",
"nix-github-actions"
],
"nixpkgs": [
"openconnect-sso",
"nixpkgs"
],
"systems": [
"openconnect-sso",
"systems"
],
"treefmt-nix": [
"openconnect-sso",
"treefmt-nix"
]
},
"locked": {
"lastModified": 1721039874,
"narHash": "sha256-XANsG9GYHip8pxZpbqKf/YGv8tIa0xTh289Y+WNBNfw=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "d11c01e58587e5f21037ed6477465a7f26a32e27",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"openconnect-sso": "openconnect-sso",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"utils": "utils" "utils": "utils",
"zen-browser": "zen-browser"
} }
}, },
"sops-nix": { "sops-nix": {
@ -86,11 +174,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1780547341, "lastModified": 1760998189,
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=", "narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a", "rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -114,6 +202,42 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"openconnect-sso",
"nixpkgs"
]
},
"locked": {
"lastModified": 1721769617,
"narHash": "sha256-6Pqa0bi5nV74IZcENKYRToRNM5obo1EQ+3ihtunJ014=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "8db8970be1fb8be9c845af7ebec53b699fe7e009",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"utils": { "utils": {
"inputs": { "inputs": {
"flake-utils": [ "flake-utils": [
@ -121,11 +245,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1779563444, "lastModified": 1738591040,
"narHash": "sha256-+rEagECcF6BhWfLs8VCkPqsBuxxSSIRxMlgjXj6G8UQ=", "narHash": "sha256-4WNeriUToshQ/L5J+dTSWC5OJIwT39SEP7V7oylndi8=",
"owner": "gytis-ivaskevicius", "owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus", "repo": "flake-utils-plus",
"rev": "a00f6f51907b5c74d2fde086b10b19d446d15717", "rev": "afcb15b845e74ac5e998358709b2b5fe42a948d1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -133,6 +257,26 @@
"repo": "flake-utils-plus", "repo": "flake-utils-plus",
"type": "github" "type": "github"
} }
},
"zen-browser": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1761105987,
"narHash": "sha256-d01CGcdNlsqIn4ncGCWHM0Velnii/Ggef1iybQvEOfc=",
"owner": "youwen5",
"repo": "zen-browser-flake",
"rev": "e7d9fefd8665be5d4c77466140f21a15f6d29e93",
"type": "github"
},
"original": {
"owner": "youwen5",
"repo": "zen-browser-flake",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -2,14 +2,21 @@
description = "System configuration of my machines using flakes"; description = "System configuration of my machines using flakes";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-26.05"; nixpkgs.url = "nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-26.05"; url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
openconnect-sso = {
url = "github:ThinkChaos/openconnect-sso/fix/nix-flake";
inputs = {
flake-utils.follows = "utils";
nixpkgs.follows = "nixpkgs";
};
};
sops-nix = { sops-nix = {
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -18,25 +25,28 @@
url = "github:gytis-ivaskevicius/flake-utils-plus"; url = "github:gytis-ivaskevicius/flake-utils-plus";
inputs.flake-utils.follows = "flake-utils"; inputs.flake-utils.follows = "flake-utils";
}; };
zen-browser = {
url = "github:youwen5/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = inputs@{ outputs = inputs@{
self, nixpkgs, nixpkgs-unstable, self, nixpkgs, nixpkgs-unstable,
flake-utils, home-manager, sops-nix, utils, flake-utils, home-manager, openconnect-sso, sops-nix, utils, zen-browser,
... }: ... }:
let let
system = utils.lib.system.x86_64-linux; system = utils.lib.system.x86_64-linux;
unfreePackages = pkg: builtins.elem (nixpkgs.lib.getName pkg) [ unfreePackages = pkg: builtins.elem (nixpkgs.lib.getName pkg) [
"corefonts" "corefonts"
"nvidia-settings" "nvidia-x11" "nvidia-persistenced" "nvidia-kernel-modules" "nvidia-settings" "nvidia-x11" "nvidia-persistenced"
"Oracle_VirtualBox_Extension_Pack" "Oracle_VirtualBox_Extension_Pack"
"spotify" "spotify"
"steam" "steam-unwrapped" "steam-run" "steam" "steam-unwrapped" "steam-run"
"vista-fonts" "vista-fonts"
"intel-ocl" "intel-ocl"
"libfprint-2-tod1-broadcom" "libfprint-2-tod1-broadcom"
"vmware-workstation"
]; ];
in in
utils.lib.mkFlake { utils.lib.mkFlake {

View file

@ -20,8 +20,6 @@
networking = { networking = {
networkmanager.enable = true; networkmanager.enable = true;
openconnect-sso.enable = true; openconnect-sso.enable = true;
openvpn.enable = true;
tailscale.enable = true;
}; };
nix = { nix = {
@ -31,13 +29,13 @@
programs = { programs = {
direnv.enable = true; direnv.enable = true;
git.enable = true;
home-manager.enable = true; home-manager.enable = true;
sops.enable = true; sops.enable = true;
ssh.enable = true; ssh.enable = true;
}; };
services = { services = {
tailscale.enable = true;
pipewire.enable = true; pipewire.enable = true;
printing.enable = true; printing.enable = true;
openrgb.enable = true; openrgb.enable = true;
@ -64,6 +62,7 @@
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
git
vim-full vim-full
w3m w3m
wget wget

View file

@ -23,7 +23,6 @@
networking = { networking = {
networkmanager.enable = true; networkmanager.enable = true;
openconnect-sso.enable = true; openconnect-sso.enable = true;
tailscale.enable = true;
}; };
nix = { nix = {
@ -38,7 +37,10 @@
ssh.enable = true; ssh.enable = true;
}; };
services.pipewire.enable = true; services = {
pipewire.enable = true;
tailscale.enable = true;
};
users.tdpeuter.enable = true; users.tdpeuter.enable = true;

View file

@ -25,9 +25,7 @@
networking = { networking = {
networkmanager.enable = true; networkmanager.enable = true;
#openconnect-sso.enable = true; openconnect-sso.enable = true;
openvpn.enable = true;
tailscale.enable = true;
}; };
nix = { nix = {
@ -37,14 +35,15 @@
programs = { programs = {
direnv.enable = true; direnv.enable = true;
git.enable = true;
home-manager.enable = true; home-manager.enable = true;
sops.enable = true; sops.enable = true;
ssh.enable = true; ssh.enable = true;
wireshark.enable = true;
}; };
services.pipewire.enable = true; services = {
pipewire.enable = true;
tailscale.enable = true;
};
users.tdpeuter.enable = true; users.tdpeuter.enable = true;
@ -55,8 +54,23 @@
}; };
boot = { boot = {
# Use EFI and YubiKey initrd = {
initrd.kernelModules = [ "vfat" "nls_cp437" "nls_iso8859-1" "usbhid" ]; # Use EFI and YubiKey
kernelModules = [ "vfat" "nls_cp437" "nls_iso8859-1" "usbhid" ];
luks = {
# Enable YubiKey PBA
yubikeySupport = true;
devices."encrypted".yubikey = {
slot = 2;
twoFactor = false;
gracePeriod = 10;
keyLength = 64;
saltLength = 16;
storage.device = "/dev/nvme0n1p1";
};
};
};
loader = { loader = {
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
@ -80,8 +94,6 @@
powerOnBoot = false; powerOnBoot = false;
}; };
nix.settings.download-buffer-size = 500 * 1024 * 1024; # 500 MiB
programs.zsh.enable = true; programs.zsh.enable = true;
services = { services = {
@ -99,17 +111,17 @@
}; };
}; };
logind.settings.Login = { logind = {
# Handle the laptop lid switch as follows: # Handle the laptop lid switch as follows:
HandleLidSwitch = "hybrid-sleep"; lidSwitch = "hybrid-sleep";
HandleLidSwitchExternalPower = "lock"; lidSwitchExternalPower = "lock";
HandleLidSwitchDocked = "ignore"; lidSwitchDocked = "ignore";
# Handle the power key # Handle the power key
HandlePowerKey = "suspend"; powerKey = "suspend";
HandlePowerKeyLongPress = "poweroff";
}; };
power-profiles-daemon.enable = false; power-profiles-daemon.enable = false;
smartd.enable = true; smartd.enable = true;
@ -128,9 +140,9 @@
libinput.enable = true; libinput.enable = true;
}; };
virtualisation.vmware.host.enable = true; networking = {
hostName = "Tibo-NixTop"; # Define your hostname.
networking.hostName = "Tibo-NixTop"; # Define your hostname. };
# Set your time zone. # Set your time zone.
time.timeZone = "Europe/Brussels"; time.timeZone = "Europe/Brussels";
@ -147,6 +159,12 @@
useXkbConfig = true; # use xkb.options in tty. useXkbConfig = true; # use xkb.options in tty.
}; };
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.libinput.enable = true;
# List packages installed in system profile. # List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options). # You can use https://search.nixos.org/ to find more packages (and options).
environment = { environment = {
@ -154,6 +172,7 @@
localBinInPath = true; localBinInPath = true;
systemPackages = with pkgs; [ systemPackages = with pkgs; [
git
vim-full # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. vim-full # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
w3m w3m
wget wget
@ -179,5 +198,6 @@
# #
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.05"; # Did you read the comment? system.stateVersion = "25.05"; # Did you read the comment?
} }

View file

@ -13,12 +13,6 @@ in {
j4-dmenu-desktop j4-dmenu-desktop
]; ];
fonts.packages = with pkgs; [
font-awesome_6
];
programs.waybar.enable = true; programs.waybar.enable = true;
services.atd.enable = true; # Command scheduler
}; };
} }

View file

@ -25,6 +25,15 @@ in {
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
boot = {
extraModprobeConfig = ''
options nvidia-drm modeset=1
'';
kernelParams = [
"nvidia_drm.modeset=1"
];
};
hardware = { hardware = {
graphics = { graphics = {
enable = true; enable = true;
@ -32,8 +41,8 @@ in {
extraPackages = with pkgs; [ extraPackages = with pkgs; [
intel-ocl intel-ocl
intel-compute-runtime intel-compute-runtime
intel-graphics-compiler
opencl-clhpp opencl-clhpp
opencl-clang
opencl-headers opencl-headers
ocl-icd ocl-icd
]; ];
@ -42,9 +51,7 @@ in {
nvidia = { nvidia = {
# Use the NVidia open source kernel module (or not) # Use the NVidia open source kernel module (or not)
open = false; open = false;
branch = "stable"; package = config.boot.kernelPackages.nvidiaPackages.stable;
# To override the default package set by the branch:
#package = config.boot.kernelPackages.nvidiaPackages.stable;
# Modesetting is required. # Modesetting is required.
modesetting.enable = true; modesetting.enable = true;
nvidiaSettings = cfg.gui-settings; nvidiaSettings = cfg.gui-settings;

View file

@ -2,7 +2,5 @@
imports = [ imports = [
./networkmanager ./networkmanager
./openconnect-sso ./openconnect-sso
./openvpn
./tailscale
]; ];
} }

View file

@ -1,14 +0,0 @@
{ config, lib, ... }:
let
cfg = config.sisyphus.networking.openvpn;
in {
options.sisyphus.networking.openvpn.enable = lib.mkEnableOption "OpenVPN client";
config = lib.mkIf cfg.enable {
programs.openvpn3.enable = true;
# https://github.com/NixOS/nixpkgs/issues/379074
services.resolved.enable = true;
};
}

View file

@ -1,22 +0,0 @@
{ config, lib, pkgs, pkgs-unstable, ... }:
let
cfg = config.sisyphus.networking.tailscale;
in {
options.sisyphus.networking.tailscale.enable = lib.mkEnableOption "Tailscale";
config = lib.mkIf cfg.enable {
services = {
tailscale = {
enable = true;
package = pkgs-unstable.tailscale;
useRoutingFeatures = "client";
extraDaemonFlags = [
"--no-logs-no-support"
];
};
resolved.enable = true;
};
};
}

View file

@ -1,11 +1,9 @@
{ {
imports = [ imports = [
./direnv ./direnv
./git
./home-manager ./home-manager
./sops ./sops
./spotify-adblock ./spotify-adblock
./ssh ./ssh
./wireshark
]; ];
} }

View file

@ -1,12 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.programs.git;
in {
options.sisyphus.programs.git.enable = lib.mkEnableOption "Git";
config.programs.git = lib.mkIf cfg.enable {
enable = true;
lfs.enable = true;
};
}

View file

@ -1,23 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.programs.wireshark;
in {
options.sisyphus.programs.wireshark.enable = lib.mkEnableOption "Wireshark";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
wireshark
];
programs.wireshark = {
enable = true;
dumpcap.enable = true;
usbmon.enable = false;
};
sisyphus.users.wantedGroups = [
"wireshark"
];
};
}

View file

@ -6,5 +6,6 @@
./pipewire ./pipewire
./printing ./printing
./remEYEnder ./remEYEnder
./tailscale
]; ];
} }

View file

@ -6,24 +6,18 @@ in {
options.sisyphus.services.openrgb.enable = lib.mkEnableOption "OpenRGB"; options.sisyphus.services.openrgb.enable = lib.mkEnableOption "OpenRGB";
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
boot.kernelModules = [ "i2c-dev" ]; services.udev.packages = with pkgs; [
openrgb
environment.systemPackages = with pkgs; [
openrgb-with-all-plugins
]; ];
boot.kernelModules = [ "i2c-dev" ];
hardware.i2c.enable = true; hardware.i2c.enable = true;
services = { services.hardware.openrgb = {
hardware.openrgb = { enable = true;
enable = true; package = pkgs.openrgb-with-all-plugins;
package = pkgs.openrgb-with-all-plugins; motherboard = "intel";
motherboard = "intel";
};
udev.packages = with pkgs; [
openrgb
];
}; };
}; };
} }

View file

@ -2,6 +2,8 @@
let let
cfg = config.sisyphus.services.remEYEnder; cfg = config.sisyphus.services.remEYEnder;
icon = ./vecteezy_eyes-line-icon-vector-isolated_13932670.jpg;
in { in {
options.sisyphus.services.remEYEnder.enable = lib.mkEnableOption "Eye reminder"; options.sisyphus.services.remEYEnder.enable = lib.mkEnableOption "Eye reminder";
@ -11,10 +13,10 @@ in {
enable = true; enable = true;
description = "Send an eye reminder"; description = "Send an eye reminder";
serviceConfig.Type = "oneshot"; serviceConfig.Type = "oneshot";
script = builtins.readFile ./remEYEnder.sh; script = ''
path = with pkgs; [ # Display reminder for 20 seconds.
libnotify ${pkgs.libnotify}/bin/notify-send -t 20000 --icon=${icon} "RemEYEnder" "Look away from your screen :)"
]; '';
}; };
timers.remEYEnder = { timers.remEYEnder = {
enable = true; enable = true;

View file

@ -1 +0,0 @@
../../../../scripts/remEYEnder.sh

View file

@ -0,0 +1,15 @@
{ config, lib, pkgs, pkgs-unstable, ... }:
let
cfg = config.sisyphus.services.tailscale;
in {
options.sisyphus.services.tailscale.enable = lib.mkEnableOption "Tailscale";
config = lib.mkIf cfg.enable {
services.tailscale = {
enable = true;
package = pkgs-unstable.tailscale;
useRoutingFeatures = "client";
};
};
}

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, pkgs-unstable, ... }: { config, inputs, lib, pkgs, pkgs-unstable, ... }:
let let
cfg = config.sisyphus.users.tdpeuter; cfg = config.sisyphus.users.tdpeuter;
@ -35,7 +35,7 @@ in {
shell = pkgs.zsh; shell = pkgs.zsh;
packages = (with pkgs; [ packages = (with pkgs; [
#bitwarden-desktop bitwarden-desktop
brave # Internet browser brave # Internet browser
chafa # Terminal image viewer chafa # Terminal image viewer
cmdtime # Zsh plugin cmdtime # Zsh plugin
@ -46,10 +46,9 @@ in {
gh # GitHub CLI tool gh # GitHub CLI tool
glow # Terminal Markdown renderer glow # Terminal Markdown renderer
icosystem # Personal icon theme icosystem # Personal icon theme
#jellyfin-media-player jellyfin-media-player
libreoffice-fresh # Office tools libreoffice-fresh # Office tools
librewolf # Internet browser librewolf # Internet browser
#logseq # Note taking
mpv # Media player mpv # Media player
nextcloud-client nextcloud-client
nsxiv # Lightweight image viewer nsxiv # Lightweight image viewer
@ -74,7 +73,10 @@ in {
# TODO Move to devshells # TODO Move to devshells
# ruff pylint # Python # ruff pylint # Python
]) ++ (with pkgs-unstable; [ ]) ++ (with pkgs-unstable; [
]); logseq # Note taking
]) ++ [
inputs.zen-browser.packages.${pkgs.system}.default
];
}; };
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
@ -85,8 +87,9 @@ in {
noto-fonts # Dependency of Zellij config noto-fonts # Dependency of Zellij config
noto-fonts-cjk-sans # Dependency of Zellij config noto-fonts-cjk-sans # Dependency of Zellij config
noto-fonts-cjk-serif # Dependency of Zellij config noto-fonts-cjk-serif # Dependency of Zellij config
noto-fonts-emoji
noto-fonts-color-emoji # Emoji's! noto-fonts-color-emoji # Emoji's!
vista-fonts # Microsoft fonts vistafonts # Microsoft fonts
]; ];
sisyphus = { sisyphus = {
@ -139,6 +142,14 @@ in {
}; };
}; };
services.syncthing = {
enable = true;
extraOptions = [
"--no-default-folder"
];
tray.enable = true;
};
xdg = { xdg = {
desktopEntries.spotify = { desktopEntries.spotify = {
name = "Spotify"; name = "Spotify";

View file

@ -37,12 +37,6 @@ in {
recursive = true; recursive = true;
source = ../../../stow/hyprland/.config/hypr; source = ../../../stow/hyprland/.config/hypr;
}; };
".config/hypr/hy3-plugin.conf" = {
inherit (config.sisyphus.desktop.hyprland) enable;
text = ''
plugin = ${pkgs.hyprlandPlugins.hy3}/lib/libhy3.so
'';
};
".config/kitty" = { ".config/kitty" = {
enable = false; enable = false;
recursive = true; recursive = true;

View file

@ -54,8 +54,6 @@ in {
]; ];
}; };
configPath = "/home/tdpeuter/.config/mozilla/firefox";
languagePacks = [ languagePacks = [
"en-GB" "en-GB"
"nl" "nl"

View file

@ -3,6 +3,9 @@
let let
cfg = config.sisyphus.users.tdpeuter; cfg = config.sisyphus.users.tdpeuter;
user = config.users.users.tdpeuter.name; user = config.users.users.tdpeuter.name;
profile = "tdpeuter";
signatures = { signatures = {
default = '' default = ''
Met vriendelijke groeten Met vriendelijke groeten
@ -25,95 +28,108 @@ let
}; };
in { in {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home-manager.users.tdpeuter = lib.mkIf config.sisyphus.programs.home-manager.enable { home-manager.users."${user}" = lib.mkIf config.sisyphus.programs.home-manager.enable {
accounts.email.accounts = { accounts = {
Telenet = { calendar.accounts = {
address = "tibo.depeuter@telenet.be"; Nextcloud = {
userName = "tibo.depeuter@telenet.be"; primary = true;
imap = { remote = {
host = "imap.telenet.be"; type = "caldav";
port = 993; url = "https://cloud.depeuter.dev/remote.php/dav";
tls.enable = true; userName = "tdpeuter";
};
}; };
smtp = { };
host = "smtp.telenet.be";
port = 587; email.accounts = {
tls = { Telenet = {
address = "tibo.depeuter@telenet.be";
userName = "tibo.depeuter@telenet.be";
imap = {
host = "imap.telenet.be";
port = 993;
tls.enable = true;
};
smtp = {
host = "smtp.telenet.be";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
realName = config.users.users.tdpeuter.description;
signature = {
showSignature = "append";
text = signatures.default;
};
primary = true;
thunderbird = {
enable = true; enable = true;
useStartTls = true; settings = id: {
"mail.identity.id_${id}.htmlSigText" = signatures.default;
};
}; };
}; };
UGent = {
flavor = "outlook.office365.com";
address = "tibo.depeuter@ugent.be";
realName = config.users.users.tdpeuter.description; realName = config.users.users.tdpeuter.description;
signature = { signature = {
showSignature = "append"; showSignature = "append";
text = signatures.default; text = signatures.academic;
}; };
primary = true; thunderbird = {
thunderbird = { enable = true;
enable = true; settings = id: {
settings = id: { "mail.server.server_${id}.authMethod" = 10;
"mail.identity.id_${id}.htmlSigText" = signatures.default; "mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.identity.id_${id}.htmlSigText" = signatures.academic;
# Allow PGP
"mail.identity.id_${id}.openpgp_key_id" = "9B11F5243089DB5B"; # Your 'master' key
"mail.identity.id_${id}.attachPgpKey" = true;
};
}; };
}; };
}; Gmail = {
UGent = { flavor = "gmail.com";
flavor = "outlook.office365.com"; address = "tibo.depeuter@gmail.com";
address = "tibo.depeuter@ugent.be";
realName = config.users.users.tdpeuter.description; realName = config.users.users.tdpeuter.description;
signature = { signature = {
showSignature = "append"; showSignature = "append";
text = signatures.academic; text = signatures.default;
};
thunderbird = {
enable = true;
settings = id: {
"mail.server.server_${id}.authMethod" = 10;
"mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.identity.id_${id}.htmlSigText" = signatures.academic;
# Allow PGP
"mail.identity.id_${id}.openpgp_key_id" = "9B11F5243089DB5B"; # Your 'master' key
"mail.identity.id_${id}.attachPgpKey" = true;
}; };
}; thunderbird = {
}; enable = true;
Gmail = { settings = id: {
flavor = "gmail.com"; "mail.identity.id_${id}.htmlSigText" = signatures.default;
address = "tibo.depeuter@gmail.com"; };
realName = config.users.users.tdpeuter.description;
signature = {
showSignature = "append";
text = signatures.default;
};
thunderbird = {
enable = true;
settings = id: {
"mail.identity.id_${id}.htmlSigText" = signatures.default;
}; };
}; };
MrFortem = {
flavor = "gmail.com";
address = "fortemfiducia@gmail.com";
}; realName = "Fortem Fiducia";
MrFortem = { signature = {
flavor = "gmail.com"; showSignature = "append";
address = "fortemfiducia@gmail.com"; text = signatures.MrFortem;
};
realName = "Fortem Fiducia"; thunderbird = {
signature = { enable = true;
showSignature = "append"; settings = id: {
text = signatures.MrFortem; "mail.server.server_${id}.directory" = ".thunderbird/tdpeuter/ImapMail/imap.gmail.com-mrfortem";
}; "mail.server.server_${id}.directory-rel" = "[ProfD]ImapMail/imap.gmail.com-mrfortem";
"mail.identity.id_${id}.htmlSigText" = signatures.alias;
thunderbird = { };
enable = true;
settings = id: {
"mail.server.server_${id}.directory" = ".thunderbird/tdpeuter/ImapMail/imap.gmail.com-mrfortem";
"mail.server.server_${id}.directory-rel" = "[ProfD]ImapMail/imap.gmail.com-mrfortem";
"mail.identity.id_${id}.htmlSigText" = signatures.alias;
}; };
}; };
}; };
@ -122,7 +138,7 @@ in {
programs = { programs = {
thunderbird = { thunderbird = {
enable = true; enable = true;
profiles.tdpeuter = { profiles."${profile}" = {
isDefault = true; isDefault = true;
settings = { settings = {
# View # View
@ -139,5 +155,17 @@ in {
}; };
}; };
}; };
programs = {
thunderbird = {
enable = true;
policies.ExtensionSettings = {
"cardbook" = {
installation_mode = "normal_installed";
install_url = "https://addons.thunderbird.net/thunderbird/downloads/latest/cardbook/addon-634298-latest.xpi";
};
};
};
};
}; };
} }

View file

@ -1,36 +0,0 @@
DURATION=20 # How long it takes to progress the bar fully
STEPS=100 # In how many steps to progress (> 0)
# Trick to fake decimals
EXP=3
interval_ms="$(( "${DURATION}" * ( 10 ** "${EXP}" ) / "${STEPS}" ))"
padded_interval_ms="$(printf "%0${EXP}d" "${interval_ms}")"
interval_s="${padded_interval_ms:0:-${EXP}}.${padded_interval_ms:-${EXP}}"
end_time="$(( "$( date '+%s' )" + "${DURATION}" ))"
# notify-send args
replace_id="${end_time}"
counter=0
while [[ "${end_time}" -gt "$( date '+%s' )" ]]; do
# Remap to [0, 100]
remaining_part="$(( ("${STEPS}" - "${counter}") * 100 / "${STEPS}" ))"
notify-send \
'Look away from your screen :)' 'RemEYEnder' \
--hint="int:value:${remaining_part}" \
--category='sysinfo' \
--replace-id="${replace_id}"
counter="$(( "${counter}" + 1 ))"
sleep "${interval_s}"
done
notify-send \
'Look away from your screen :)' 'RemEYEnder' \
--hint="int:value:${remaining_part}" \
--category='sysinfo' \
--replace-id="${replace_id}" \
--expire-time="${interval_ms}"

View file

@ -1,178 +0,0 @@
#!/usr/bin/env bash
# Take screenshots of areas, windows, or screens, interactively or immediately.
# Usage: screenshot [-t area|window|screen|all] [-a copy|save] [-i]
set -u
TARGET='area'
ACTION='copy'
INTERACTIVE='false'
DATE_STR="$( date '+%F-%H-%M-%S' )"
SAVE_DIR="${HOME}/Nextcloud/Afbeeldingen/Screenshots"
panic () {
>&2 echo 'Usage: screenshot [-t area|window|screen|all] [-a copy|save] [-i]'
exit 1
}
# Get options
while getopts ':t:a:i' option; do
case "${option}" in
t)
if [[ "${OPTARG}" =~ ^(area|window|screen|all)$ ]]; then
TARGET="${OPTARG}"
else
>&2 printf "Error: Invalid target '%s'.\n" "${OPTARG}"
panic
fi
;;
a)
if [[ "${OPTARG}" =~ ^(copy|save)$ ]]; then
ACTION="${OPTARG}"
else
>&2 printf "Error: Invalid action '%s'.\n" "${OPTARG}"
fi
;;
i)
INTERACTIVE='true'
;;
*)
panic
;;
esac
done
if [[ "${ACTION}" == 'save' ]]; then
SAVE_PATH="${SAVE_DIR}/${DATE_STR}.png"
else
SAVE_PATH="/tmp/screenshot_${DATE_STR}.png"
fi
mkdir -p "${SAVE_DIR}"
if [[ -n "${HYPRLAND_INSTANCE_SIGNATURE:-}" ]] && command -v hyprctl >/dev/null 2>&1 ; then
WM='hyprland'
else
>&2 echo 'Error: Unsupported or undetected Window Manager.'
exit 1
fi
for tool in grim slurp wl-copy jq; do
if ! command -v "${tool}" >/dev/null 2>&1; then
>&2 echo "Error: Required dependency '${tool}' is missing."
exit 1
fi
done
# Helper functions
target_area () {
slurp || true
}
hyprland_target_window () {
hyprctl activewindow -j \
| jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"'
}
hyprland_target_window_interactive () {
local ws_id
ws_id="$( hyprctl activeworkspace -j | jq -r '.id' )"
hyprctl clients -j \
| jq -r --arg ws "${ws_id}" '.[] | select(.workspace.id == ($ws | tonumber)) | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' \
| slurp -d \
|| true
}
hyprland_target_screen () {
local ws_id
ws_id="$(hyprctl activeworkspace -j | jq -r '.id')"
hyprctl monitors -j \
| jq -r --arg ws "${ws_id}" '.[] | select(.activeWorkspace.id == ($ws | tonumber)) | .name'
}
hyprland_target_screen_interactive () {
hyprctl monitors -j \
| jq -r '.[] | "\(.x),\(.y) \(.width)x\(.height)"' \
| slurp -d \
|| true
}
# Capturing the screenshot
GEOMETRY=''
OUTPUT=''
fetch_target_data () {
if [[ "${TARGET}" == 'area' ]]; then
GEOMETRY="$( target_area )"
return 0
fi
local route_key="${WM}_${TARGET}_${INTERACTIVE}"
case "${route_key}" in
'hyprland_window_false')
GEOMETRY="$( hyprland_target_window )"
;;
'hyprland_window_true')
GEOMETRY="$( hyprland_target_window_interactive )"
;;
'hyprland_screen_false')
OUTPUT="$( hyprland_target_screen )"
;;
'hyprland_screen_true')
GEOMETRY="$( hyprland_target_screen_interactive )"
;;
*)
>&2 echo 'Error: Unmapped execution route.'
exit 1
;;
esac
}
if [[ "${TARGET}" != 'all' ]]; then
fetch_target_data
fi
# Detect cancellation, Escape pressed during slurp results in empty string.
if [[ "${INTERACTIVE}" == 'true' || "${TARGET}" == 'area' ]]; then
if [[ -z "${GEOMETRY}" && -z "${OUTPUT}" ]]; then
exit 0
fi
fi
# Take the screenshot
if [[ -n "${GEOMETRY}" ]]; then
grim -g "${GEOMETRY}" "${SAVE_PATH}"
elif [[ -n "${OUTPUT}" ]]; then
grim -o "${OUTPUT}" "${SAVE_PATH}"
else
grim "${SAVE_PATH}"
fi
# Route to clipboard
if [[ "${ACTION}" == 'copy' ]]; then
wl-copy < "${SAVE_PATH}"
fi
# Notifications
if [[ "${TARGET}" != 'area' || "${INTERACTIVE}" == 'true' ]]; then
NOTIF_ICON="${SAVE_PATH}"
if command -v magick >/dev/null 2>&1; then
THUMB_PATH="/tmp/thumb_${DATE_STR}.png"
if magick "${SAVE_PATH}" -thumbnail '320x320^' -gravity center -extent 320x320 "${THUMB_PATH}" >/dev/null 2>&1; then
NOTIF_ICON="${THUMB_PATH}"
fi
fi
if [[ "${ACTION}" == 'copy' ]]; then
notify-send -a 'Grim' -i "${NOTIF_ICON}" 'Screenshot Captured' 'Copied to clipboard'
else
notify-send -a 'Grim' -i "${NOTIF_ICON}" 'Screenshot Captured' "Saved to ${SAVE_PATH}"
fi
fi

15
scripts/sunset.sh Executable file
View file

@ -0,0 +1,15 @@
#!/usr/bin/env bash
# Script to disable for an hour or immediately continue wlsunset. 'Toggle'
# Check if wlsunset is still running
pid=$(pgrep wlsunset)
if [[ -z ${pid} ]] ; then
# Start wlsunset right away.
wlsunset -l 50.50 -L 4.00 -t 3000 -T 6500 &
else
# Currently stop wlsunset but restart in an hour.
kill ${pid}
notify-send 'Stopping sunset' 'Restarting in an hour'
at now +1 hours -f "${0}"
fi

View file

@ -6,8 +6,8 @@
### Variables ### ### Variables ###
################# #################
THEME_LIGHT='light' THEME_LIGHT='tdpeuter-light'
THEME_DARK='dark' THEME_DARK='tdpeuter-dark'
THEME_DEFAULT="${THEME_LIGHT}" THEME_DEFAULT="${THEME_LIGHT}"
STATE_DIR="${HOME}/.local/state/sisyphus" STATE_DIR="${HOME}/.local/state/sisyphus"
@ -18,10 +18,6 @@ declare -A theme_next
theme_next[${THEME_LIGHT}]="${THEME_DARK}" theme_next[${THEME_LIGHT}]="${THEME_DARK}"
theme_next[${THEME_DARK}]="${THEME_LIGHT}" theme_next[${THEME_DARK}]="${THEME_LIGHT}"
declare -A personal_theme
personal_theme[${THEME_LIGHT}]='tdpeuter-light'
personal_theme[${THEME_DARK}]='tdpeuter-dark'
declare -A gsettings_alt declare -A gsettings_alt
gsettings_alt[${THEME_LIGHT}]='default' gsettings_alt[${THEME_LIGHT}]='default'
gsettings_alt[${THEME_DARK}]='prefer-dark' gsettings_alt[${THEME_DARK}]='prefer-dark'
@ -42,13 +38,13 @@ wallpaper[${THEME_DARK}]="bg-dark"
while getopts ":m:g" option; do while getopts ":m:g" option; do
case "${option}" in case "${option}" in
m) m)
if [ "${OPTARG}" == "${THEME_LIGHT}" ]; then if [ "${OPTARG}" == 'light' ]; then
theme="${THEME_LIGHT}" theme="${THEME_LIGHT}"
elif [ "${OPTARG}" == "${THEME_DARK}" ]; then elif [ "${OPTARG}" == 'dark' ]; then
theme="${THEME_DARK}" theme="${THEME_DARK}"
else else
>&2 printf "Error: Invalid mode: '%s'.\nShould be either 'light' or 'dark', falling back to default: '%s'\n" "${option}" "${THEME_DEFAULT}" >&2 printf "Error: Invalid mode: '%s'.\nShould be either 'light' or 'dark'\n" "${option}"
theme="${THEME_DEFAULT}" exit 1
fi fi
;; ;;
g) g)
@ -104,8 +100,8 @@ function update_terminal_colors() {
# Foot # Foot
if [ "$(command -v foot)" ] ; then if [ "$(command -v foot)" ] ; then
# Make color theme switch 'permanent'. # Make color theme switch 'permanent'.
echo "initial-color-theme=${theme}" > ~/.config/foot/theme.ini & echo "include=~/.config/foot/themes/${theme}.ini" > ~/.config/foot/theme.ini &
# We still have to change the terminal colors ourselves for existing sessions. # We will have to change the terminal colors ourselves.
update_terminal_colors & update_terminal_colors &
fi fi
@ -117,7 +113,7 @@ fi
# Kitty # Kitty
if [ "$(command -v kitty)" ]; then if [ "$(command -v kitty)" ]; then
kitten themes --reload-in all --config-file-name theme.conf "${personal_theme[${theme}]}" & kitten themes --reload-in all --config-file-name theme.conf "${theme}" &
fi fi
# Sway # Sway
@ -133,19 +129,17 @@ fi
# Vifm # Vifm
if [ "$(command -v vifm)" ]; then if [ "$(command -v vifm)" ]; then
vifm_theme="${personal_theme[${theme}]}" echo "colorscheme ${theme} Default-256 Default" > ~/.config/vifm/theme.conf
echo "colorscheme ${vifm_theme} Default-256 Default" > ~/.config/vifm/theme.conf
# Update all running instances # Update all running instances
vifm --remote -c "colorscheme ${vifm_theme}" & vifm --remote -c "colorscheme ${theme}" &
fi fi
# Vim # Vim
if [ "$(command -v vim)" ]; then if [ "$(command -v vim)" ]; then
vim_theme="${personal_theme[${theme}]}" echo "colorscheme ${theme}" > ~/.vim/theme.conf
echo "colorscheme ${vim_theme}" > ~/.vim/theme.conf
# Update all running instances # Update all running instances
for server in $(vim --serverlist); do for server in $(vim --serverlist); do
vim --servername "${server}" --remote-send "<C-\><C-N>:colorscheme ${vim_theme}<CR>" vim --servername "${server}" --remote-send "<C-\><C-N>:colorscheme ${theme}<CR>"
done done
fi fi

View file

@ -1,52 +0,0 @@
#!/usr/bin/env bash
# Script to disable for an hour or immediately continue wlsunset. 'Toggle'
# Queue for at, check man page for options
ATQUEUE='T'
# Get current state
pid=$(pgrep wlsunset)
while getopts ":g" option; do
case "${option}" in
g)
if [[ -z "${pid}" ]]; then
state='active'
tooltip='Turn off nightlight'
class='activated'
else
state='inactive'
tooltip='Turn on nightlight'
class='none'
fi
printf '{"alt": "%s", "tooltip": "%s", "class": "%s" }' \
"${state}" "${tooltip}" "${class}"
exit 0
;;
*)
echo 'Invalid option'
exit 1
;;
esac
done
# Toggle
if [[ -z ${pid} ]] ; then
# Clear queue
for job in $(at -l -q "${ATQUEUE}" | cut -f1); do
at -r "${job}"
done
if [ "$( command -v wlsunset )" ]; then
notify-send 'Starting nightlight'
wlsunset -l 50.50 -L 4.00 -t 3000 -T 6500 &
else
notify-send 'Nightlight is not available'
exit 1
fi
else
# Currently stop wlsunset but restart in an hour.
kill ${pid}
notify-send 'Stopping nightlight' 'Restarting in an hour'
at now +1 hours -f "${0}" -q "${ATQUEUE}"
fi

View file

@ -1,11 +1,7 @@
# -*- conf -*- # -*- conf -*-
# ~/.config/foot/foot.ini # ~/.config/foot/foot.ini
# Color scheme definitions # Include the correct color scheme
include=~/.config/foot/themes/tdpeuter-light.ini
include=~/.config/foot/themes/tdpeuter-dark.ini
# Default color scheme selection
include=~/.config/foot/theme.ini include=~/.config/foot/theme.ini
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) # shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
@ -27,20 +23,17 @@ font=letter extended:size=10
# vertical-letter-offset=0 # vertical-letter-offset=0
# underline-offset=<font metrics> # underline-offset=<font metrics>
# underline-thickness=<font underline thickness> # underline-thickness=<font underline thickness>
# strikout-thickness=<font strikeout thickness>
# box-drawings-uses-font-glyphs=no # box-drawings-uses-font-glyphs=no
dpi-aware=yes dpi-aware=yes
# gamma-correct-blending=no
# initial-color-theme=dark
# initial-window-size-pixels=700x500 # Or, # initial-window-size-pixels=700x500 # Or,
# initial-window-size-chars=<COLSxROWS> # initial-window-size-chars=<COLSxROWS>
# initial-window-mode=windowed # initial-window-mode=windowed
# pad=10x10 # optionally append 'center' #pad=10x10 # optionally append 'center'
# resize-by-cells=yes
# resize-keep-grid=yes
# resize-delay-ms=100 # resize-delay-ms=100
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
# bold-text-in-bright=no # bold-text-in-bright=no
# word-delimiters=,│`|:"'()[]{}<> # word-delimiters=,│`|:"'()[]{}<>
# selection-target=primary # selection-target=primary
@ -48,28 +41,16 @@ dpi-aware=yes
# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is libutempter (Linux) # utmp-helper=/usr/lib/utempter/utempter # When utmp backend is libutempter (Linux)
# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ulog (FreeBSD) # utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ulog (FreeBSD)
# uppercase-regex-insert=yes
[environment] [environment]
# name=value # name=value
[security]
# osc52=enabled # disabled|copy-enabled|paste-enabled|enabled
[bell] [bell]
# system=yes
urgent=yes urgent=yes
notify=yes notify=yes
visual=yes visual=yes
# command= # command=
# command-focused=no # command-focused=no
[desktop-notifications]
# command=notify-send --wait --app-name ${app-id} --icon ${app-id} --category ${category} --urgency ${urgency} --expire-time ${expire-time} --hint STRING:image-path:${icon} --hint BOOLEAN:suppress-sound:${muted} --hint STRING:sound-name:${sound-name} --replace-id ${replace-id} ${action-argument} --print-id -- ${title} ${body}
# command-action-argument=--action ${action-name}=${action-label}
# close=""
# inhibit-when-focused=yes
[scrollback] [scrollback]
# lines=1000 # lines=1000
# multiplier=3.0 # multiplier=3.0
@ -79,26 +60,14 @@ visual=yes
[url] [url]
# launch=xdg-open ${url} # launch=xdg-open ${url}
# label-letters=sadfjklewcmpgh # label-letters=sadfjklewcmpgh
# style=dotted (none|single|double|curly|doted|dashed)
# osc8-underline=url-mode # osc8-underline=url-mode
# regex=(((https?://|mailto:|ftp://|file:|ssh:|ssh://|git://|tel:|magnet:|ipfs://|ipns://|gemini://|gopher://|news:)|www\.)([0-9a-zA-Z:/?#@!$&*+,;=.~_%^\-]+|\([]\["0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*\)|\[[\(\)"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*\]|"[]\[\(\)0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*"|'[]\[\(\)0-9a-zA-Z:/?#@!$&*+,;=.~_%^\-]*')+([0-9a-zA-Z/#@$&*+=~_%^\-]|\([]\["0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*\)|\[[\(\)"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*\]|"[]\[\(\)0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\-]*"|'[]\[\(\)0-9a-zA-Z:/?#@!$&*+,;=.~_%^\-]*')) # protocols=http, https, ftp, ftps, file, gemini, gopher
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
# You can define your own regex's, by adding a section called
# 'regex:<ID>' with a 'regex' and 'launch' key. These can then be tied
# to a key-binding. See foot.ini(5) for details
# [regex:your-fancy-name]
# regex=<a POSIX-Extended Regular Expression>
# launch=<path to script or application> ${match}
#
# [key-bindings]
# regex-launch=[your-fancy-name] Control+Shift+q
# regex-copy=[your-fancy-name] Control+Alt+Shift+q
[cursor] [cursor]
# style=block # style=block
# color=<inverse foreground/background>
# blink=no # blink=no
# blink-rate=500
# beam-thickness=1.5 # beam-thickness=1.5
# underline-thickness=<font underline thickness> # underline-thickness=<font underline thickness>
@ -109,10 +78,54 @@ visual=yes
[touch] [touch]
# long-press-delay=400 # long-press-delay=400
# colors set by themes [colors]
alpha=0.8
# background=242424
# foreground=ffffff
flash=b00020
# flash-alpha=0.5
## Normal/regular colors (color palette 0-7)
# regular0=242424 # black
# regular1=f62b5a # red
# regular2=47b413 # green
# regular3=e3c401 # yellow
# regular4=24acd4 # blue
# regular5=f2affd # magenta
# regular6=13c299 # cyan
# regular7=e6e6e6 # white
## Bright colors (color palette 8-15)
# bright0=616161 # bright black
# bright1=ff4d51 # bright red
# bright2=35d450 # bright green
# bright3=e9e836 # bright yellow
# bright4=5dc5f8 # bright blue
# bright5=feabf2 # bright magenta
# bright6=24dfc4 # bright cyan
# bright7=ffffff # bright white
## dimmed colors (see foot.ini(5) man page)
# dim0=<not set>
# ...
# dim7=<not-set>
## The remaining 256-color palette
# 16 = <256-color palette #16>
# ...
# 255 = <256-color palette #255>
## Misc colors
# selection-foreground=<inverse foreground/background>
# selection-background=<inverse foreground/background>
# jump-labels=<regular0> <regular3> # black-on-yellow
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
# search-box-no-match=<regular0> <regular1> # black-on-red
# search-box-match=<regular0> <regular3> # black-on-yellow
# urls=<regular3>
[csd] [csd]
# preferred=server preferred=none
# size=26 # size=26
# font=<primary font> # font=<primary font>
# color=<foreground color> # color=<foreground color>
@ -127,10 +140,10 @@ visual=yes
# button-close-color=<regular1> # button-close-color=<regular1>
[key-bindings] [key-bindings]
# scrollback-up-page=Shift+Page_Up Shift+KP_Page_Up # scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none # scrollback-up-half-page=none
# scrollback-up-line=none # scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down Shift+KP_Page_Down # scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none # scrollback-down-half-page=none
# scrollback-down-line=none # scrollback-down-line=none
# scrollback-home=none # scrollback-home=none
@ -149,22 +162,17 @@ visual=yes
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none # pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none # pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-selected=[xargs -r firefox] none # pipe-selected=[xargs -r firefox] none
# pipe-command-output=[wl-copy] none # Copy last command's output to the clipboard
# show-urls-launch=Control+Shift+o # show-urls-launch=Control+Shift+o
# show-urls-copy=none # show-urls-copy=none
# show-urls-persistent=none # show-urls-persistent=none
# prompt-prev=Control+Shift+z # prompt-prev=Control+Shift+z
# prompt-next=Control+Shift+x # prompt-next=Control+Shift+x
# unicode-input=Control+Shift+u # unicode-input=Control+Shift+u
# color-theme-switch-1=none
# color-theme-switch-2=none
# color-theme-toggle=none
# noop=none # noop=none
# quit=none
[search-bindings] [search-bindings]
# cancel=Control+g Control+c Escape # cancel=Control+g Control+c Escape
# commit=Return KP_Enter # commit=Return
# find-prev=Control+r # find-prev=Control+r
# find-next=Control+s # find-next=Control+s
# cursor-left=Left Control+b # cursor-left=Left Control+b
@ -177,8 +185,6 @@ visual=yes
# delete-prev-word=Mod1+BackSpace Control+BackSpace # delete-prev-word=Mod1+BackSpace Control+BackSpace
# delete-next=Delete # delete-next=Delete
# delete-next-word=Mod1+d Control+Delete # delete-next-word=Mod1+d Control+Delete
# delete-to-start=Control+u
# delete-to-end=Control+k
# extend-char=Shift+Right # extend-char=Shift+Right
# extend-to-word-boundary=Control+w Control+Shift+Right # extend-to-word-boundary=Control+w Control+Shift+Right
# extend-to-next-whitespace=Control+Shift+w # extend-to-next-whitespace=Control+Shift+w
@ -190,10 +196,10 @@ visual=yes
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste # clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
# primary-paste=Shift+Insert # primary-paste=Shift+Insert
# unicode-input=none # unicode-input=none
# scrollback-up-page=Shift+Page_Up Shift+KP_Page_Up # scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none # scrollback-up-half-page=none
# scrollback-up-line=none # scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down Shift+KP_Page_Down # scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none # scrollback-down-half-page=none
# scrollback-down-line=none # scrollback-down-line=none
# scrollback-home=none # scrollback-home=none
@ -207,10 +213,8 @@ visual=yes
# \x03=Mod4+c # Map Super+c -> Ctrl+c # \x03=Mod4+c # Map Super+c -> Ctrl+c
[mouse-bindings] [mouse-bindings]
# scrollback-up-mouse=BTN_WHEEL_BACK # scrollback-up-mouse=BTN_BACK
# scrollback-down-mouse=BTN_WHEEL_FORWARD # scrollback-down-mouse=BTN_FORWARD
# font-increase=Control+BTN_WHEEL_BACK
# font-decrease=Control+BTN_WHEEL_FORWARD
# selection-override-modifiers=Shift # selection-override-modifiers=Shift
# primary-paste=BTN_MIDDLE # primary-paste=BTN_MIDDLE
# select-begin=BTN_LEFT # select-begin=BTN_LEFT

View file

@ -1,8 +1,8 @@
[colors-dark] [colors]
alpha=0.8 # alpha=0.8
background=171717 background=171717
foreground=dcdfe4 foreground=dcdfe4
flash=b00020 # flash=b00020
# flash-alpha=0.5 # flash-alpha=0.5
## Normal/regular colors (color palette 0-7) ## Normal/regular colors (color palette 0-7)

View file

@ -1,8 +1,8 @@
[colors-light] [colors]
alpha=0.8 # alpha=0.8
background=fafafa background=fafafa
foreground=000000 foreground=000000
flash=b00020 # flash=b00020
# flash-alpha=0.5 # flash-alpha=0.5
## Normal/regular colors (color palette 0-7) ## Normal/regular colors (color palette 0-7)

View file

@ -23,9 +23,6 @@
[init] [init]
defaultBranch = "main" defaultBranch = "main"
[rebase]
autoSquash = "true"
[safe] [safe]
directory = "/home/tdpeuter/university/sshfs" directory = "/home/tdpeuter/university/sshfs"

View file

@ -1,9 +1,6 @@
#
# ~/.config/hypr/hy3.conf
#
# Load the plugin. File should contain `plugin = /path/to/lib/libhy3.so` # TODO Do not hardcode this path
source = /home/tdpeuter/.config/hypr/hy3-plugin.conf plugin = /nix/store/afivj8v5kfdsadxs4pa45vh0y65s3ajm-hy3-hl0.49.0/lib/libhy3.so
general:layout = hy3 general:layout = hy3

View file

@ -85,6 +85,9 @@ animations {
} }
gestures { gestures {
workspace_swipe = true
workspace_swipe_fingers = 3
workspace_swipe_min_fingers = false
workspace_swipe_distance = 300 workspace_swipe_distance = 300
workspace_swipe_invert = true workspace_swipe_invert = true
workspace_swipe_min_speed_to_force = 30 workspace_swipe_min_speed_to_force = 30
@ -100,12 +103,6 @@ gestures {
workspace_swipe_forever = true workspace_swipe_forever = true
workspace_swipe_use_r = false workspace_swipe_use_r = false
# hyprlang if !HYPRLAND_V_0_53
workspace_swipe = true
workspace_swipe_fingers = 3
workspace_swipe_min_fingers = false
# hyprlang endif
} }
group { group {
@ -261,10 +258,6 @@ env = XCURSOR_SIZE,24
# SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5 # SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5
$flag = MOD4 $flag = MOD4
$LMB = mouse:272
$RMB = mouse:273
$MMB = mouse:274
$left = h $left = h
$down = j $down = j
$up = k $up = k

View file

@ -56,10 +56,6 @@ bind = $flag+Shift, s, settiled
bind = $flag, F11, fullscreen, 1 bind = $flag, F11, fullscreen, 1
bind = $flag+Shift, F11, fullscreen, 0 bind = $flag+Shift, F11, fullscreen, 0
bindm = $flag, $LMB, movewindow
bindm = $flag, $RMB, resizewindow
bindc = $flag, $LMB, togglefloating
# Workspaces # Workspaces
$ws1 = 1 $ws1 = 1

View file

@ -1,62 +1,3 @@
# Resizing
$mode_resize = Resize
bind = $flag, R, submap, $mode_resize
submap = $mode_resize
bind = , F, togglefloating
binde = , $right, resizeactive, 10 0
binde = , $up, resizeactive, 0 -10
binde = , $left, resizeactive, -10 0
binde = , $down, resizeactive, 0 10
binde = , Right , resizeactive, 10 0
binde = , Up, resizeactive, 0 -10
binde = , Left, resizeactive, -10 0
binde = , Down, resizeactive, 0 10
binde = Shift, $right, resizeactive, 50 0
binde = Shift, $up, resizeactive, 0 -50
binde = Shift, $left, resizeactive, -50 0
binde = Shift, $down, resizeactive, 0 50
binde = Shift, Right, resizeactive, 50 0
binde = Shift, Up, resizeactive, 0 -50
binde = Shift, Left, resizeactive, -50 0
binde = Shift, Down, resizeactive, 0 50
binde = $flag, $right, moveactive, 10 0
binde = $flag, $up, moveactive, 0 -10
binde = $flag, $left, moveactive, -10 0
binde = $flag, $down, moveactive, 0 10
binde = $flag, Right, moveactive, 10 0
binde = $flag, Up, moveactive, 0 -10
binde = $flag, Left, moveactive, -10 0
binde = $flag, Down, moveactive, 0 10
binde = $flag+Shift, $right, moveactive, 50 0
binde = $flag+Shift, $up, moveactive, 0 -50
binde = $flag+Shift, $left, moveactive, -50 0
binde = $flag+Shift, $down, moveactive, 0 50
binde = $flag+Shift, Right , moveactive, 50 0
binde = $flag+Shift, Up, moveactive, 0 -50
binde = $flag+Shift, Left, moveactive, -50 0
binde = $flag+Shift, Down, moveactive, 0 50
# hyprlang if HYPRLAND_V_0_53
#gesture = 3, swipe, move
#gesture = 4, swipe, resize
# hyprlang endif
bind = $flag, R, submap, reset
bind = , Escape, submap, reset
bind = , Return, submap, reset
submap = reset
# System actions # System actions
$mode_system = System (l)ock, (s)leep, (h)ibernate, (r)eboot, (Shift+s)hutdown $mode_system = System (l)ock, (s)leep, (h)ibernate, (r)eboot, (Shift+s)hutdown
bind = Ctrl+Alt, Delete, submap, $mode_system bind = Ctrl+Alt, Delete, submap, $mode_system
@ -95,11 +36,3 @@ bind = , Return, submap, reset
submap = reset submap = reset
# Ignore (all) keybinds. Useful when working with Virtual Machines.
$mode_ignore=Ignore keybinds - Press Control+Alt+Insert to escape.
bind = Ctrl+Alt, Insert, submap, $mode_ignore
submap = $mode_ignore
bind = Ctrl+Alt, Insert, submap, reset
submap = reset

View file

@ -60,7 +60,7 @@ Host Gitea
Host Nextcloud Host Nextcloud
User administrator User administrator
Hostname 192.168.0.23 Hostname 192.168.0.14
IdentitiesOnly yes IdentitiesOnly yes
IdentityFile /run/secrets/HomeLab/Nextcloud/ssh IdentityFile /run/secrets/HomeLab/Nextcloud/ssh

View file

@ -25,7 +25,8 @@ set smarttab
set tabstop=4 set tabstop=4
set title set title
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
set wildmenu "" Show suggestions on another line instead of inplace "" Show suggestions on another line instead of inplace
set wildmenu
syntax enable syntax enable

View file

@ -23,17 +23,18 @@
], ],
"include": [ "include": [
"~/.config/waybar/modules.json" "~/.config/waybar/modules.json"
], ]
"start_hidden": true
}, },
/* Toggle this bar, contains all information */ /* Toggle this bar, contains all information */
{ {
"name": "toggle", "name": "toggle",
"mode": "hide",
"ipc": true,
"position": "top", "position": "top",
"height": 26, "height": 26,
/* Show this bar on top of the other one, seemingly replacing it. */ /* Show this bar on top of the other one, seemingly replacing it. */
/*"margin": "-26px 0 0 0",*/ "margin": "-26px 0 0 0",
"modules-left": [ "modules-left": [
"custom/meta", "custom/meta",
"sway/window", "sway/window",
@ -50,7 +51,6 @@
"privacy", "privacy",
"tray", "tray",
"group/control-center", "group/control-center",
"group/display",
"group/network", "group/network",
"pulseaudio", "pulseaudio",
"group/power", "group/power",
@ -58,7 +58,6 @@
], ],
"include": [ "include": [
"~/.config/waybar/modules.json" "~/.config/waybar/modules.json"
], ]
"reload_style_on_change": true
} }
] ]

View file

@ -1,15 +1,4 @@
{ {
"backlight": {
"device": "intel_backlight",
"format": "{percent}% {icon}",
"format-icons": [
"\uf111", /* */
"\uf185" /* */
],
"on-click": "brightnessctl -sq set 0",
"on-click-right": "wl-mirror $(hyprctl monitors -j | jq --raw-output '.[] | select(.focused) | .name')"
},
"battery": { "battery": {
"format": "{capacity}% {icon}", "format": "{capacity}% {icon}",
"format-alt": "{time} {icon}", "format-alt": "{time} {icon}",
@ -82,12 +71,6 @@
"tooltip": false "tooltip": false
}, },
"custom/display": {
"format": "\ue163", /* */
"tooltip": false,
"on-click": "wdisplays"
},
"custom/meta": { "custom/meta": {
"format": "\uf17c", /* */ "format": "\uf17c", /* */
"tooltip": false, "tooltip": false,
@ -151,19 +134,6 @@
"tooltip": true "tooltip": true
}, },
"custom/toggle-nightlight": {
"exec": "bash ${SCRIPT_DIR}/toggle-nightlight.sh -g",
"interval": 60,
"return-type": "json",
"on-click": "bash ${SCRIPT_DIR}/toggle-nightlight.sh",
"format": "{icon}",
"format-icons": {
"active": "\uf186", /* */
"inactive": "\uf0eb" /* */
},
"tooltip": true
},
"custom/toggle-notifications": { "custom/toggle-notifications": {
"exec": "bash ${SCRIPT_DIR}/toggle-notifications.sh -g", "exec": "bash ${SCRIPT_DIR}/toggle-notifications.sh -g",
"interval": 60, "interval": 60,
@ -193,31 +163,12 @@
"group/control-center": { "group/control-center": {
"orientation": "inherit", "orientation": "inherit",
"modules": [ "modules": [
/* Preview */
"custom/control-center", "custom/control-center",
/* Left-most */
"group/language", "group/language",
"custom/toggle-notifications" /* "hyprland/language", "sway/language", */
/* Right-most */ "custom/toggle-notifications",
],
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false,
"children-class": "drawer-child"
}
},
"group/display": {
"orientation": "inherit",
"modules": [
/* Preview */
"custom/display",
/* Most-left */
"idle_inhibitor",
"custom/toggle-nightlight",
"custom/toggle-light-dark", "custom/toggle-light-dark",
"backlight" "bluetooth"
/* Most-right */
], ],
"drawer": { "drawer": {
"transition-duration": 500, "transition-duration": 500,
@ -248,7 +199,6 @@
/* Preview */ /* Preview */
"network", "network",
/* Most-left */ /* Most-left */
"bluetooth",
"custom/toggle-tailscale" "custom/toggle-tailscale"
/* Most-right */ /* Most-right */
], ],
@ -270,7 +220,8 @@
"custom/system-hibernate", "custom/system-hibernate",
"custom/system-sleep", "custom/system-sleep",
"custom/system-lock", "custom/system-lock",
"power-profiles-daemon" "power-profiles-daemon",
"idle_inhibitor"
/* Most-right */ /* Most-right */
], ],
"drawer": { "drawer": {

View file

@ -82,13 +82,12 @@ window#waybar {
#privacy, #privacy,
#privacy-item, #privacy-item,
#privacy-item.screenshare, #privacy-item.screenshare,
#privacy-item.audio-in, #privacy-item.audio-in {
#privacy-item.audio-out {
background-color: @safety; background-color: @safety;
} }
#privacy-item { #privacy-item.screenshare {
padding: 0; background-color: #000000;
} }
#pulseaudio.muted { #pulseaudio.muted {