Compare commits
1 Commits
main
...
feature/el
| Author | SHA1 | Date | |
|---|---|---|---|
| 238cf3f795 |
@ -132,6 +132,13 @@
|
|||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
elcafe = nixpkgs.lib.nixosSystem {
|
||||||
|
inherit specialArgs;
|
||||||
|
modules = [
|
||||||
|
./hosts/elcafe/configuration.nix
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
];
|
||||||
|
};
|
||||||
gampo = nixpkgs.lib.nixosSystem {
|
gampo = nixpkgs.lib.nixosSystem {
|
||||||
inherit specialArgs;
|
inherit specialArgs;
|
||||||
modules = [
|
modules = [
|
||||||
|
|||||||
74
hosts/elcafe/configuration.nix
Normal file
74
hosts/elcafe/configuration.nix
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
inputs.home-manager.nixosModules.default
|
||||||
|
../../system
|
||||||
|
];
|
||||||
|
|
||||||
|
sops.secrets = {
|
||||||
|
"elcafe/traefik/env".restartUnits = ["traefik.service"];
|
||||||
|
"elcafe/traefik/dynamic".restartUnits = ["traefik.service"];
|
||||||
|
};
|
||||||
|
|
||||||
|
mySystem = {
|
||||||
|
boot = {
|
||||||
|
kernel = {
|
||||||
|
hardened = true;
|
||||||
|
cpuVendor = "intel";
|
||||||
|
};
|
||||||
|
zfs = {
|
||||||
|
enable = true;
|
||||||
|
pools = ["tank"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
dev.docker = {
|
||||||
|
enable = true;
|
||||||
|
extraDaemonSettings.data-root = "/tank/docker/";
|
||||||
|
};
|
||||||
|
misc.keymap = "fr";
|
||||||
|
networking = {
|
||||||
|
hostname = "elcafe";
|
||||||
|
id = "501c7fb9";
|
||||||
|
};
|
||||||
|
packages.nix = {
|
||||||
|
gc.automatic = true;
|
||||||
|
trusted-users = [
|
||||||
|
"root"
|
||||||
|
"phundrak"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
endlessh.enable = true;
|
||||||
|
plex = {
|
||||||
|
enable = true;
|
||||||
|
dataDir = "/tank/web/plex-config";
|
||||||
|
};
|
||||||
|
ssh = {
|
||||||
|
enable = true;
|
||||||
|
allowedUsers = ["phundrak"];
|
||||||
|
passwordAuthentication = false;
|
||||||
|
};
|
||||||
|
traefik = {
|
||||||
|
enable = true;
|
||||||
|
envFiles = [config.sops.secrets."elcafe/traefik/env".path];
|
||||||
|
dynConf = config.sops.secrets."elcafe/traefik/dynamic".path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
users = {
|
||||||
|
root.disablePassword = true;
|
||||||
|
phundrak.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
}
|
||||||
42
hosts/elcafe/hardware-configuration.nix
Normal file
42
hosts/elcafe/hardware-configuration.nix
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = ["ahci" "xhci_pci" "ehci_pci" "megaraid_sas" "usbhid" "usb_storage" "sd_mod" "sr_mod"];
|
||||||
|
kernelModules = [];
|
||||||
|
};
|
||||||
|
kernelModules = ["kvm-intel"];
|
||||||
|
extraModulePackages = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/d2e703f7-90e0-43e7-9872-ce036f201c4b";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.eno2.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.eno3.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.eno4.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@ -1,3 +1,7 @@
|
|||||||
|
elcafe:
|
||||||
|
traefik:
|
||||||
|
env: ENC[AES256_GCM,data:Mfm4Wt/7UWrpWGGa/rmC1wY6QtI2G/a6cbZiNjZz1gOTrREehFBZxH5JJ9ZgsxCMSuh/XCQa/75cPg==,iv:nrtTmtdFfTrCYzxFHDVMuaDdoa8SDi+pn4kghP4r9xE=,tag:gjlv8ohv1aDx2PB1rwx6fQ==,type:str]
|
||||||
|
dynamic: ENC[AES256_GCM,data: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,iv:Ooq6tK6nMGuRFJ1ElGCJhOMQVyMNtGBSguQVFSm71fA=,tag:iJviKci+i3tif+sH8UxRZg==,type:str]
|
||||||
extraHosts: ENC[AES256_GCM,data:YRHvHINgAQv4z+8awMzHY1uZS/K9qSaFsk8G5J2zF5P5YOt4x62eefXgmhWeKZzJI5AIi0312iMQl5qGv+lAkP+VC7j/h1rh7peBDEBU6LvcMgFU2XqxidM/CoKfMkJF8+/4bb+3r1LC/rEeXITTUQsOmoacdyCeKe5yxLaHyic/FaZIJq13wCg/QQSLfenc2Db0Pbxv5/cbRILhKT+ssElVipA40aZpgL7QmD542vObSEa6K4fZd0rawF/nOyibfpPN7Ak8DrYvfygNMw/QAGKY2XosxC86tjxhrIBHRakqmWpV+smoUO6XBFjU2sbwalafYVFdrvYL9BVAPtMZ25Sc5QMm87RCHqzqYdQHKs8C3JpVBHWnyL+0e5DNQrFrml0/FD5nFYsT6zDKVb/rN3YmxvTvKl7FpPKpv3Kke9WG+HnPs90hPy8Jpmg52vLMhaybx6dpJxzcF+ctBSI3J78hfweOCGvNGshCKpME1dujMPctH/kfYcm2j/ixKLjl0ZSbYeI9+l9oURBDwKzmKjAqhwnjuo3sL++ZsRU5Ue1zz9gsxS40R9eYevbq7JiQPX331pY2du1SRoKOxvPpXsDqe+CY5pW2RgPszjEIuDxyoveZolXg/zjlk0Ic/cOxrbflp7bTfQCQqEC7YJ5tRmtctk2lRGQkOFIg9Tn8ReifFxfhDrPFzc8X5vZgH73aqZSd/OkVybI3vEILV5uas0fPL7AHAKnBmeDV3mBNvF8aoZhD5CG8iRd1otta/3AQ660QV8IDoauq8fySC8Kee5B3kG75sqHvwF4Gu6CpSChXkjpiIqVmW0PntJueVHifuGJYkvhkX/CTHK7xm1HhtANnGrk6cr2APjWk1vpOaCmjFNqKTOV9d1HjaNWYTz4AZ+Uq2Za3UzN3oZCtZb96,iv:Z64+4oR/AfSgA7oZ/NPDLOtcmcXO5B4OQIGjOEK1Pf4=,tag:0I/1gXnBH7u6HTbQUz5Fpw==,type:str]
|
extraHosts: ENC[AES256_GCM,data:YRHvHINgAQv4z+8awMzHY1uZS/K9qSaFsk8G5J2zF5P5YOt4x62eefXgmhWeKZzJI5AIi0312iMQl5qGv+lAkP+VC7j/h1rh7peBDEBU6LvcMgFU2XqxidM/CoKfMkJF8+/4bb+3r1LC/rEeXITTUQsOmoacdyCeKe5yxLaHyic/FaZIJq13wCg/QQSLfenc2Db0Pbxv5/cbRILhKT+ssElVipA40aZpgL7QmD542vObSEa6K4fZd0rawF/nOyibfpPN7Ak8DrYvfygNMw/QAGKY2XosxC86tjxhrIBHRakqmWpV+smoUO6XBFjU2sbwalafYVFdrvYL9BVAPtMZ25Sc5QMm87RCHqzqYdQHKs8C3JpVBHWnyL+0e5DNQrFrml0/FD5nFYsT6zDKVb/rN3YmxvTvKl7FpPKpv3Kke9WG+HnPs90hPy8Jpmg52vLMhaybx6dpJxzcF+ctBSI3J78hfweOCGvNGshCKpME1dujMPctH/kfYcm2j/ixKLjl0ZSbYeI9+l9oURBDwKzmKjAqhwnjuo3sL++ZsRU5Ue1zz9gsxS40R9eYevbq7JiQPX331pY2du1SRoKOxvPpXsDqe+CY5pW2RgPszjEIuDxyoveZolXg/zjlk0Ic/cOxrbflp7bTfQCQqEC7YJ5tRmtctk2lRGQkOFIg9Tn8ReifFxfhDrPFzc8X5vZgH73aqZSd/OkVybI3vEILV5uas0fPL7AHAKnBmeDV3mBNvF8aoZhD5CG8iRd1otta/3AQ660QV8IDoauq8fySC8Kee5B3kG75sqHvwF4Gu6CpSChXkjpiIqVmW0PntJueVHifuGJYkvhkX/CTHK7xm1HhtANnGrk6cr2APjWk1vpOaCmjFNqKTOV9d1HjaNWYTz4AZ+Uq2Za3UzN3oZCtZb96,iv:Z64+4oR/AfSgA7oZ/NPDLOtcmcXO5B4OQIGjOEK1Pf4=,tag:0I/1gXnBH7u6HTbQUz5Fpw==,type:str]
|
||||||
mopidy:
|
mopidy:
|
||||||
spotify: ENC[AES256_GCM,data:SaDT0iSWhsgVOi1s+Nzbr0Mur3t2Zd9z/KIUshGWtbPfkXXIoiJeJFtoZIz5NL/t5FooYsNfU1mGYgDeVYSD4BPibW8hiCYrX6L6OX+Q6ZEWXXx/1eBEs2/q0BrWGvy7frcurq/Px4R3ax0dXJe/YKbpAtU7+bQl,iv:F2zT+uMVBMnSEZqgcRmV8/fc3G/g2fKDuHuBzkyBRN0=,tag:CD8fuOQfe6QCrj4BUh0/xw==,type:str]
|
spotify: ENC[AES256_GCM,data:SaDT0iSWhsgVOi1s+Nzbr0Mur3t2Zd9z/KIUshGWtbPfkXXIoiJeJFtoZIz5NL/t5FooYsNfU1mGYgDeVYSD4BPibW8hiCYrX6L6OX+Q6ZEWXXx/1eBEs2/q0BrWGvy7frcurq/Px4R3ax0dXJe/YKbpAtU7+bQl,iv:F2zT+uMVBMnSEZqgcRmV8/fc3G/g2fKDuHuBzkyBRN0=,tag:CD8fuOQfe6QCrj4BUh0/xw==,type:str]
|
||||||
@ -61,7 +65,7 @@ sops:
|
|||||||
QmJKNDJUY0RSakhwNWlkOVpib0trc1kK0tQxD9I82pjfs54eruu+IjzVUmcVBCPw
|
QmJKNDJUY0RSakhwNWlkOVpib0trc1kK0tQxD9I82pjfs54eruu+IjzVUmcVBCPw
|
||||||
9mp1xKiYRRMXt3YQn6MPiyuuX3l3UB5MH0RJMNtRq0D961rs+iiS5A==
|
9mp1xKiYRRMXt3YQn6MPiyuuX3l3UB5MH0RJMNtRq0D961rs+iiS5A==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-08-07T09:16:46Z"
|
lastmodified: "2025-11-02T00:42:02Z"
|
||||||
mac: ENC[AES256_GCM,data:3PIJps2hoavPJ6ig+943FE73lBhCfxv8vuzmgTtooH386V12/PQN+Opt/ZoIbXU9w21XelZ/C5xPr8rcuw5ADx9K/KjdMm8jyLCO6/+iBf6SjnbC3E0DyiDit50UtWxKc32ryiJ8m5hYfX6O2H8WIGFa+6wp5KISV9pkc09CNZA=,iv:xzwEhhBJQOlde8Ib+tZpv+2CHfR83dFevdwERkYTsTE=,tag:SzdcZH19kSTnNs16754IMw==,type:str]
|
mac: ENC[AES256_GCM,data:0rYURFETR06JRNY/vE89jEI+dovFNxsjSOalf1Id3H+yzl4UYdsHN1T3mD1EfssFwCloBxOo+188RkUe7JlNV7hC+tvO3nBrDNuqjzFBQu/IHEz+nTI3mwB7ZsywubvFMG65dohM8H9hB2bUXSSqtEUpFEiz7Ugn2BfGyex4BbI=,iv:vFJk6mz60d6CzSetd+bNvxTEWfGBPaBS4sYj/AiYbq4=,tag:2nHBGQ5P3mxLyzllvstBqg==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.10.2
|
version: 3.11.0
|
||||||
|
|||||||
@ -9,6 +9,13 @@ with lib; let
|
|||||||
in {
|
in {
|
||||||
options.mySystem.dev.docker = {
|
options.mySystem.dev.docker = {
|
||||||
enable = mkEnableOption "Enable Docker";
|
enable = mkEnableOption "Enable Docker";
|
||||||
|
extraDaemonSettings = mkOption {
|
||||||
|
type = types.nullOr (types.attrsOf types.str);
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
data-root = "/custom/path";
|
||||||
|
};
|
||||||
|
};
|
||||||
podman.enable = mkEnableOption "Enable Podman rather than Docker";
|
podman.enable = mkEnableOption "Enable Podman rather than Docker";
|
||||||
nvidia.enable = mkEnableOption "Activate Nvidia support";
|
nvidia.enable = mkEnableOption "Activate Nvidia support";
|
||||||
autoprune.enable = mkEnableOption "Enable autoprune";
|
autoprune.enable = mkEnableOption "Enable autoprune";
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
{lib, ...}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./amdgpu.nix
|
./amdgpu.nix
|
||||||
@ -7,4 +8,5 @@
|
|||||||
./opentablet.nix
|
./opentablet.nix
|
||||||
./sound.nix
|
./sound.nix
|
||||||
];
|
];
|
||||||
|
hardware.enableRedistributableFirmware = lib.mkDefault true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,5 +9,6 @@
|
|||||||
./printing.nix
|
./printing.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./sunshine.nix
|
./sunshine.nix
|
||||||
|
./traefik.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
65
system/services/traefik.nix
Normal file
65
system/services/traefik.nix
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.mySystem.services.traefik;
|
||||||
|
in {
|
||||||
|
options.mySystem.services.traefik = {
|
||||||
|
enable = mkEnableOption "Enable Traefikse";
|
||||||
|
email = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "lucien@phundrak.com";
|
||||||
|
example = "admin@example.com";
|
||||||
|
};
|
||||||
|
envFiles = mkOption {
|
||||||
|
type = types.listOf types.path;
|
||||||
|
example = ["/run/secrets/traefik.env"];
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
dynConf = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
example = "/var/traefik/dynamic.yaml";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
networking.firewall.allowedTCPPorts = [80 443];
|
||||||
|
services.traefik = {
|
||||||
|
inherit (cfg) enable;
|
||||||
|
environmentFiles = cfg.envFiles;
|
||||||
|
dynamicConfigFile = cfg.dynConf;
|
||||||
|
staticConfigOptions = {
|
||||||
|
log = {
|
||||||
|
level = "WARN";
|
||||||
|
filePath = "/var/log/traefik/traefik.log";
|
||||||
|
};
|
||||||
|
accessLog.filePath = "/var/log/traefik/access.log";
|
||||||
|
api.dashboard = true;
|
||||||
|
entryPoints = {
|
||||||
|
web = {
|
||||||
|
address = ":80";
|
||||||
|
http.redirections.entryPoint = {
|
||||||
|
to = "websecure";
|
||||||
|
scheme = "https";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
websecure.address = ":443";
|
||||||
|
};
|
||||||
|
certificatesResolvers.cloudflare.acme = {
|
||||||
|
inherit (cfg) email;
|
||||||
|
storage = "/var/lib/traefik/acme.json";
|
||||||
|
dnsChallenge = {
|
||||||
|
provider = "cloudflare";
|
||||||
|
resolvers = ["1.1.1.1:53" "1.0.0.1:53"];
|
||||||
|
propagation.delayBeforeChecks = 60;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
providers.docker = {
|
||||||
|
endpoint = "unix:///var/run/docker.sock";
|
||||||
|
exposedByDefault = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -1,3 +1,3 @@
|
|||||||
{pkgs, ...}:
|
{pkgs, ...}:
|
||||||
pkgs.writeShellScriptBin "askpass" ''
|
pkgs.writeShellScriptBin "askpass" ''
|
||||||
${pkgs.rofi}/bin/rofi -dmenu -password -no-fixed-num-lines -p $(printf \"$*\" | sed 's/://')''
|
${pkgs.wofi}/bin/wofi -d -P -L 1 -p "$(printf $1 | sed s/://)"''
|
||||||
|
|||||||
18
users/modules/cli/scripts/rofi-emoji.nix
Normal file
18
users/modules/cli/scripts/rofi-emoji.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
pkgs.writeShellScriptBin "rofi-emoji" ''
|
||||||
|
SELECTED_EMOJI=$(grep -v "#" ~/.config/emoji | ${pkgs.wofi}/bin/wofi --dmenu -p "Select emoji" -i | awk '{print $1}' | tr -d '\n')
|
||||||
|
if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
|
||||||
|
printf "%s" "$SELECTED_EMOJI" | ${pkgs.wl-clipboard-rs}/bin/wl-copy
|
||||||
|
else
|
||||||
|
printf "%s" "$SELECTED_EMOJI" | ${pkgs.xclip}/bin/xclip -sel clip
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$XDG_SESSION_TYPE" = "wayland" ]
|
||||||
|
then EMOJI=$(${pkgs.wl-clipboard-rs}/bin/wl-paste)
|
||||||
|
else EMOJI=$(${pkgs.xclip}/bin/xclip -o)
|
||||||
|
fi
|
||||||
|
|
||||||
|
test -z "$EMOJI" && notify-send "No emoji copied" -u low && exit
|
||||||
|
EMOJI="$EMOJI copied to clipboard"
|
||||||
|
${pkgs.libnotify}/bin/notify-send -u low "$EMOJI"
|
||||||
|
''
|
||||||
@ -1,6 +1,6 @@
|
|||||||
{pkgs, ...}:
|
{pkgs, ...}:
|
||||||
pkgs.writeShellScriptBin "ytplay" ''
|
pkgs.writeShellScriptBin "ytplay" ''
|
||||||
URL=$(rofi -dmenu -i -p "Video URL")
|
URL=$(${pkgs.wofi}/bin/wofi --dmenu -i -p "Video URL")
|
||||||
if [ -z "$URL" ]; then
|
if [ -z "$URL" ]; then
|
||||||
echo "You need to provide a URL"
|
echo "You need to provide a URL"
|
||||||
exit 1
|
exit 1
|
||||||
@ -9,7 +9,7 @@ pkgs.writeShellScriptBin "ytplay" ''
|
|||||||
grep -E "webm.*[0-9]+x[0-9]" | \
|
grep -E "webm.*[0-9]+x[0-9]" | \
|
||||||
awk '{print $3 " " $1}' | \
|
awk '{print $3 " " $1}' | \
|
||||||
sort -gu | \
|
sort -gu | \
|
||||||
rofi -dmenu -i -p "Resolution")
|
${pkgs.wofi}/bin/wofi --dmenu -i -p "Resolution")
|
||||||
mapfile -t RESOLUTION <<< "$RESOLUTION_CHOICE"
|
mapfile -t RESOLUTION <<< "$RESOLUTION_CHOICE"
|
||||||
RESOLUTION_CODE=''${RESOLUTION[0]}
|
RESOLUTION_CODE=''${RESOLUTION[0]}
|
||||||
${pkgs.mpv}/bin/mpv --ytdl-format="''${RESOLUTION_CODE}+bestaudio/best" "$URL"
|
${pkgs.mpv}/bin/mpv --ytdl-format="''${RESOLUTION_CODE}+bestaudio/best" "$URL"
|
||||||
|
|||||||
@ -7,16 +7,17 @@ with lib; let
|
|||||||
cfg = config.home.desktop;
|
cfg = config.home.desktop;
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
|
./emoji.nix
|
||||||
./eww.nix
|
./eww.nix
|
||||||
./hyprland.nix
|
./hyprland.nix
|
||||||
./kdeconnect.nix
|
./kdeconnect.nix
|
||||||
./kitty.nix
|
./kitty.nix
|
||||||
./obs.nix
|
./obs.nix
|
||||||
./qt.nix
|
./qt.nix
|
||||||
./rofi
|
|
||||||
./swaync.nix
|
./swaync.nix
|
||||||
./waybar.nix
|
./waybar.nix
|
||||||
./wlsunset.nix
|
./wlsunset.nix
|
||||||
|
./wofi.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
options.home.desktop.fullDesktop = mkEnableOption "Enable options for graphical environments";
|
options.home.desktop.fullDesktop = mkEnableOption "Enable options for graphical environments";
|
||||||
@ -27,6 +28,5 @@ in {
|
|||||||
kitty.enable = mkDefault cfg.fullDesktop;
|
kitty.enable = mkDefault cfg.fullDesktop;
|
||||||
obs.enable = mkDefault cfg.fullDesktop;
|
obs.enable = mkDefault cfg.fullDesktop;
|
||||||
qt.enable = mkDefault cfg.fullDesktop;
|
qt.enable = mkDefault cfg.fullDesktop;
|
||||||
rofi.enable = mkDefault cfg.fullDesktop;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
4739
users/modules/desktop/emoji.nix
Normal file
4739
users/modules/desktop/emoji.nix
Normal file
File diff suppressed because it is too large
Load Diff
@ -6,13 +6,13 @@
|
|||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.home.desktop.hyprland;
|
cfg = config.home.desktop.hyprland;
|
||||||
|
rofi-emoji = import ../cli/scripts/rofi-emoji.nix {inherit pkgs;};
|
||||||
laptops = ["gampo"];
|
laptops = ["gampo"];
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./swaync.nix
|
./swaync.nix
|
||||||
./waybar.nix
|
./waybar.nix
|
||||||
./wlsunset.nix
|
./wlsunset.nix
|
||||||
./hyprpaper.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
options.home.desktop.hyprland = {
|
options.home.desktop.hyprland = {
|
||||||
@ -34,16 +34,14 @@ in {
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.desktop = {
|
home.desktop = {
|
||||||
hyprpaper.enable = true;
|
|
||||||
rofi.enable = mkDefault true;
|
|
||||||
swaync.enable = mkDefault true;
|
swaync.enable = mkDefault true;
|
||||||
waybar = {
|
waybar = {
|
||||||
enable = mkDefault true;
|
enable = mkDefault true;
|
||||||
battery = mkDefault (builtins.elem cfg.host laptops);
|
battery = mkDefault (builtins.elem cfg.host laptops);
|
||||||
};
|
};
|
||||||
wlsunset.enable = mkDefault true;
|
wlsunset.enable = mkDefault true;
|
||||||
|
wofi.enable = mkDefault true;
|
||||||
};
|
};
|
||||||
services.blueman-applet.enable = true;
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
@ -114,7 +112,7 @@ in {
|
|||||||
$right = r
|
$right = r
|
||||||
$up = s
|
$up = s
|
||||||
$down = t
|
$down = t
|
||||||
$menu = rofi -combi-modi drun,calc -show combi
|
$menu = ${pkgs.wofi}/bin/wofi --show drun
|
||||||
|
|
||||||
bind = SUPER, Return, exec, ${pkgs.kitty}/bin/kitty ${pkgs.tmux}/bin/tmux
|
bind = SUPER, Return, exec, ${pkgs.kitty}/bin/kitty ${pkgs.tmux}/bin/tmux
|
||||||
bind = SUPER, Space, submap, leader
|
bind = SUPER, Space, submap, leader
|
||||||
@ -161,14 +159,10 @@ in {
|
|||||||
bind = , escape, submap, reset
|
bind = , escape, submap, reset
|
||||||
bind = CTRL, g, submap, reset
|
bind = CTRL, g, submap, reset
|
||||||
submap = rofi
|
submap = rofi
|
||||||
bind = , b, exec, rofi-bluetooth
|
bind = , e, exec, ${rofi-emoji}/bin/rofi-emoji
|
||||||
bind = , b, submap, reset
|
|
||||||
bind = , e, exec, rofi -show emoji
|
|
||||||
bind = , e, submap, reset
|
bind = , e, submap, reset
|
||||||
bind = , r, exec, $menu
|
bind = , r, exec, $menu
|
||||||
bind = , r, submap, reset
|
bind = , r, submap, reset
|
||||||
bind = , s, exec, rofi -show ssh
|
|
||||||
bind = , r, submap, reset
|
|
||||||
bind = , y, exec, ytplay
|
bind = , y, exec, ytplay
|
||||||
bind = , y, submap, reset
|
bind = , y, submap, reset
|
||||||
bind = , escape, submap, reset
|
bind = , escape, submap, reset
|
||||||
@ -277,5 +271,17 @@ in {
|
|||||||
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
|
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
services = {
|
||||||
|
blueman-applet.enable = true;
|
||||||
|
hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
ipc = "on";
|
||||||
|
splash = false;
|
||||||
|
preload = "/home/phundrak/Pictures/Wallpapers/nord/Nordic6.jpg";
|
||||||
|
wallpaper = ", /home/phundrak/Pictures/Wallpapers/nord/Nordic6.jpg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,87 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.home.desktop.hyprpaper;
|
|
||||||
in {
|
|
||||||
options.home.desktop.hyprpaper = {
|
|
||||||
enable = mkEnableOption "Enables Hyprpaper";
|
|
||||||
default = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "/home/phundrak/Pictures/Wallpapers/nord/Nordic6.jpg";
|
|
||||||
example = "/home/user/image.jpg";
|
|
||||||
};
|
|
||||||
wallpapers-dir = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "/home/phundrak/Pictures/Wallpapers/nord/";
|
|
||||||
example = "/home/user/Pictures/";
|
|
||||||
};
|
|
||||||
rotation-interval = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "5m";
|
|
||||||
example = "10m";
|
|
||||||
description = "Interval between wallpaper rotations";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.hyprpaper = {
|
|
||||||
inherit (cfg) enable;
|
|
||||||
settings = {
|
|
||||||
ipc = "on";
|
|
||||||
splash = false;
|
|
||||||
preload = cfg.default;
|
|
||||||
wallpaper = ", ${cfg.default}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.user = {
|
|
||||||
services.hyprpaper-rotation = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Rotate Hyprpaper wallpaper";
|
|
||||||
After = "graphical-session.target";
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecCondition = "pidof Hyprland";
|
|
||||||
ExecStart = "${config.home.homeDirectory}/.config/hypr/hyprpaper-rotate.sh";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
timers.hyprpaper-rotation = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Timer for rotating Hyprpaper wallpaper";
|
|
||||||
};
|
|
||||||
Timer = {
|
|
||||||
OnBootSec = cfg.rotation-interval;
|
|
||||||
OnUnitActiveSec = cfg.rotation-interval;
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["timers.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.file.".config/hypr/hyprpaper-rotate.sh" = {
|
|
||||||
text = ''
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
WALLPAPER_DIR="${cfg.wallpapers-dir}"
|
|
||||||
|
|
||||||
# Find a random wallpaper
|
|
||||||
WP=$(find "$WALLPAPER_DIR" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) | shuf -n 1)
|
|
||||||
|
|
||||||
if [ -z "$WP" ]; then
|
|
||||||
echo "No wallpapers found in $WALLPAPER_DIR"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Setting wallpaper to: $WP"
|
|
||||||
|
|
||||||
# Load and set the wallpaper
|
|
||||||
hyprctl hyprpaper preload "$WP" && hyprctl hyprpaper wallpaper ",$WP"
|
|
||||||
'';
|
|
||||||
executable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@ -1,107 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.home.desktop.rofi;
|
|
||||||
inherit (config.lib.formats.rasi) mkLiteral;
|
|
||||||
in {
|
|
||||||
options.home.desktop.rofi = {
|
|
||||||
enable = mkEnableOption "Enable Rofi";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = with pkgs; [rofi-bluetooth];
|
|
||||||
programs.rofi = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs; [
|
|
||||||
rofi-calc
|
|
||||||
rofi-emoji
|
|
||||||
];
|
|
||||||
terminal = "${pkgs.kitty}/bin/kitty";
|
|
||||||
location = "center";
|
|
||||||
modes = ["drun" "emoji" "calc" "combi"];
|
|
||||||
extraConfig.show-icons = true;
|
|
||||||
theme = {
|
|
||||||
"*" = {
|
|
||||||
font = "Cascadia Code 14";
|
|
||||||
blur = true;
|
|
||||||
padding = mkLiteral "10px";
|
|
||||||
background-color = mkLiteral "transparent";
|
|
||||||
border-radius = mkLiteral "0px";
|
|
||||||
};
|
|
||||||
window = {
|
|
||||||
width = mkLiteral "1050px";
|
|
||||||
height = mkLiteral "625px";
|
|
||||||
location = mkLiteral "center";
|
|
||||||
blur = true;
|
|
||||||
border = mkLiteral "2px";
|
|
||||||
border-radius = mkLiteral "3px";
|
|
||||||
border-color = mkLiteral "#61afef";
|
|
||||||
background-color = mkLiteral "transparent";
|
|
||||||
padding = mkLiteral "0px";
|
|
||||||
margin = mkLiteral "30px 50px";
|
|
||||||
};
|
|
||||||
mainbox = {
|
|
||||||
orientation = mkLiteral "horizontal";
|
|
||||||
children = map mkLiteral ["borderbox"];
|
|
||||||
spacing = mkLiteral "0px";
|
|
||||||
padding = mkLiteral "0px";
|
|
||||||
};
|
|
||||||
borderbox = {
|
|
||||||
orientation = mkLiteral "horizontal";
|
|
||||||
children = map mkLiteral ["imagebox" "contentbox"];
|
|
||||||
padding = mkLiteral "0px";
|
|
||||||
spacing = mkLiteral "0px";
|
|
||||||
border-radius = mkLiteral "3px";
|
|
||||||
};
|
|
||||||
contentbox = {
|
|
||||||
orientation = mkLiteral "vertical";
|
|
||||||
children = map mkLiteral ["entry" "listview"];
|
|
||||||
spacing = mkLiteral "0px";
|
|
||||||
padding = mkLiteral "0px";
|
|
||||||
expand = true;
|
|
||||||
};
|
|
||||||
imagebox = {
|
|
||||||
background-image = mkLiteral "url(\"${./image.jpg}\")";
|
|
||||||
background-repeat = false;
|
|
||||||
size = mkLiteral "200px 625px";
|
|
||||||
};
|
|
||||||
element = {
|
|
||||||
border-radius = mkLiteral "0px";
|
|
||||||
};
|
|
||||||
"element-text, element-icon" = {
|
|
||||||
padding = mkLiteral "6px 8px";
|
|
||||||
spacing = mkLiteral "2px";
|
|
||||||
text-color = mkLiteral "#fab387";
|
|
||||||
};
|
|
||||||
"element selected" = {
|
|
||||||
background-color = mkLiteral "#191919";
|
|
||||||
text-color = mkLiteral "#e5c07b";
|
|
||||||
border-radius = mkLiteral "3px";
|
|
||||||
};
|
|
||||||
prompt = {
|
|
||||||
enabled = false;
|
|
||||||
background-color = mkLiteral "transparent";
|
|
||||||
text-color = mkLiteral "#61afef";
|
|
||||||
padding = mkLiteral "5px 10px";
|
|
||||||
};
|
|
||||||
entry = {
|
|
||||||
padding = mkLiteral "8px";
|
|
||||||
expand = false;
|
|
||||||
font = "Cascadia Code 14";
|
|
||||||
text-color = mkLiteral "#fab387";
|
|
||||||
border-radius = mkLiteral "0px 3px 0px 0px";
|
|
||||||
background-color = mkLiteral "#292e36";
|
|
||||||
};
|
|
||||||
listview = {
|
|
||||||
lines = mkLiteral "1";
|
|
||||||
background-color = mkLiteral "rgba(46, 52, 64, 0.8)";
|
|
||||||
border-radius = mkLiteral "0px 0px 3px 0px";
|
|
||||||
padding = mkLiteral "5px";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 228 KiB |
76
users/modules/desktop/wofi.nix
Normal file
76
users/modules/desktop/wofi.nix
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.home.desktop.wofi;
|
||||||
|
in {
|
||||||
|
options.home.desktop.wofi.enable = mkEnableOption "Enable wofi support";
|
||||||
|
config.programs.wofi = mkIf cfg.enable {
|
||||||
|
inherit (cfg) enable;
|
||||||
|
settings = {
|
||||||
|
modi = "ssh,drun,combi";
|
||||||
|
sidebar-mode = false;
|
||||||
|
width = 50;
|
||||||
|
line-margin = 10;
|
||||||
|
lines = 6;
|
||||||
|
columns = 2;
|
||||||
|
display-ssh = "";
|
||||||
|
display-run = "";
|
||||||
|
display-drun = "";
|
||||||
|
display-window = "";
|
||||||
|
display-combi = "";
|
||||||
|
show-icons = true;
|
||||||
|
};
|
||||||
|
# from https://github.com/alxndr13/wofi-nord-theme
|
||||||
|
style = ''
|
||||||
|
* {
|
||||||
|
font-family: "Hack", monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background-color: #3B4252;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
margin: 5px;
|
||||||
|
border-radius: 0px;
|
||||||
|
border: none;
|
||||||
|
background-color: #3B4252;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#inner-box {
|
||||||
|
background-color: #383C4A;
|
||||||
|
}
|
||||||
|
|
||||||
|
#outer-box {
|
||||||
|
margin: 2px;
|
||||||
|
padding: 10px;
|
||||||
|
background-color: #383C4A;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scroll {
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text {
|
||||||
|
padding: 4px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:nth-child(even){
|
||||||
|
background-color: #404552;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:selected {
|
||||||
|
background-color: #4C566A;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text:selected {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -6,35 +6,9 @@
|
|||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
emacsDefaultPackage = with pkgs; ((emacsPackagesFor emacs).emacsWithPackages (
|
emacsDefaultPackage = with pkgs; ((emacsPackagesFor emacs).emacsWithPackages (
|
||||||
epkgs:
|
epkgs: [
|
||||||
with epkgs; [
|
epkgs.mu4e
|
||||||
mu4e
|
epkgs.pdf-tools
|
||||||
pdf-tools
|
|
||||||
tree-sitter
|
|
||||||
tree-sitter-langs
|
|
||||||
(treesit-grammars.with-grammars (grammar:
|
|
||||||
with grammar; [
|
|
||||||
tree-sitter-bash
|
|
||||||
tree-sitter-c
|
|
||||||
tree-sitter-cpp
|
|
||||||
tree-sitter-css
|
|
||||||
tree-sitter-dockerfile
|
|
||||||
tree-sitter-http
|
|
||||||
tree-sitter-javascript
|
|
||||||
tree-sitter-jsdoc
|
|
||||||
tree-sitter-json
|
|
||||||
tree-sitter-just
|
|
||||||
tree-sitter-markdown
|
|
||||||
tree-sitter-markdown-inline
|
|
||||||
tree-sitter-nix
|
|
||||||
tree-sitter-rust
|
|
||||||
tree-sitter-sql
|
|
||||||
tree-sitter-toml
|
|
||||||
tree-sitter-typescript
|
|
||||||
tree-sitter-typst
|
|
||||||
tree-sitter-vue
|
|
||||||
tree-sitter-yaml
|
|
||||||
]))
|
|
||||||
]
|
]
|
||||||
));
|
));
|
||||||
cfg = config.home.dev.editors.emacs;
|
cfg = config.home.dev.editors.emacs;
|
||||||
@ -51,10 +25,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
home.packages = with pkgs; [
|
home.packages = [pkgs.emacs-all-the-icons-fonts];
|
||||||
emacs-all-the-icons-fonts
|
|
||||||
emacs-lsp-booster
|
|
||||||
];
|
|
||||||
programs.emacs = mkIf cfg.enable {
|
programs.emacs = mkIf cfg.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
inherit (cfg) package;
|
inherit (cfg) package;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user