diff --git a/.cache/nix/fetcher-cache-v4.sqlite b/.cache/nix/fetcher-cache-v4.sqlite new file mode 100644 index 0000000..38f6871 Binary files /dev/null and b/.cache/nix/fetcher-cache-v4.sqlite differ diff --git a/flake.lock b/flake.lock index e75a350..81b5dde 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1759499898, - "narHash": "sha256-UNzYHLWfkSzLHDep5Ckb5tXc0fdxwPIrT+MY4kpQttM=", + "lastModified": 1760101617, + "narHash": "sha256-8jf/3ZCi+B7zYpIyV04+3wm72BD7Z801IlOzsOACR7I=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "655e067f96fd44b3f5685e17f566b0e4d535d798", + "rev": "1826a9923881320306231b1c2090379ebf9fa4f8", "type": "github" }, "original": { @@ -54,16 +54,17 @@ "base16-fish": { "flake": false, "locked": { - "lastModified": 1622559957, - "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "lastModified": 1754405784, + "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", "owner": "tomyun", "repo": "base16-fish", - "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", "type": "github" }, "original": { "owner": "tomyun", "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", "type": "github" } }, @@ -125,11 +126,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1759572023, - "narHash": "sha256-2fzYq/m2PXie5WZO5LhyiZrTIUdUFp1SCLZAwvPL5xo=", + "lastModified": 1761906071, + "narHash": "sha256-uq0X0KRzZkKGlkU1ARM+LWCAVvSYJZtTMpuzMO6LXRs=", "owner": "catppuccin", "repo": "nix", - "rev": "eeada12912d80d04733383d231a9d66172858718", + "rev": "fd1bc7b1af0a576edb13c166c4b1f7b5c7555a73", "type": "github" }, "original": { @@ -189,38 +190,6 @@ "type": "github" } }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -229,11 +198,11 @@ ] }, "locked": { - "lastModified": 1759362264, - "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", + "lastModified": 1762040540, + "narHash": "sha256-z5PlZ47j50VNF3R+IMS9LmzI5fYRGY/Z5O5tol1c9I4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", + "rev": "0010412d62a25d959151790968765a70c436598b", "type": "github" }, "original": { @@ -315,29 +284,6 @@ "type": "github" } }, - "git-hooks": { - "inputs": { - "flake-compat": "flake-compat_3", - "gitignore": "gitignore_2", - "nixpkgs": [ - "neovim-nightly-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1759523803, - "narHash": "sha256-PTod9NG+i3XbbnBKMl/e5uHDBYpwIWivQ3gOWSEuIEM=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "cfc9f7bb163ad8542029d303e599c0f7eee09835", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, "gitignore": { "inputs": { "nixpkgs": [ @@ -360,28 +306,6 @@ "type": "github" } }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "neovim-nightly-overlay", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, "gnome-shell": { "flake": false, "locked": { @@ -399,31 +323,6 @@ "type": "github" } }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": [ - "neovim-nightly-overlay", - "flake-parts" - ], - "nixpkgs": [ - "neovim-nightly-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1758022363, - "narHash": "sha256-ENUhCRWgSX4ni751HieNuQoq06dJvApV/Nm89kh+/A0=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "1a3667d33e247ad35ca250698d63f49a5453d824", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -431,11 +330,11 @@ ] }, "locked": { - "lastModified": 1759853171, - "narHash": "sha256-uqbhyXtqMbYIiMqVqUhNdSuh9AEEkiasoK3mIPIVRhk=", + "lastModified": 1762178366, + "narHash": "sha256-I+8yE5HVR2SFcHnW0771psQ/zn0qVzsKHY/gUM0nEVM=", "owner": "nix-community", "repo": "home-manager", - "rev": "1a09eb84fa9e33748432a5253102d01251f72d6d", + "rev": "8c824254b1ed9e797f6235fc3c62f365893c561a", "type": "github" }, "original": { @@ -489,11 +388,11 @@ ] }, "locked": { - "lastModified": 1759490292, - "narHash": "sha256-T6iWzDOXp8Wv0KQOCTHpBcmAOdHJ6zc/l9xaztW6Ivc=", + "lastModified": 1760445448, + "narHash": "sha256-fXGjL6dw31FPFRrmIemzGiNSlfvEJTJNsmadZi+qNhI=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "9431db625cd9bb66ac55525479dce694101d6d7a", + "rev": "50fb9f069219f338a11cf0bcccb9e58357d67757", "type": "github" }, "original": { @@ -518,11 +417,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1759837778, - "narHash": "sha256-12GZqSrRYyhKl7NpNMUQECDi/Zyx17QZhhQ7+mBJMns=", + "lastModified": 1761869718, + "narHash": "sha256-jLfwwlPGpnGRAtVDyoGj9FgH2D9hWwyEu0yHkflG2EI=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "5ba2d2217b649c4ca2db7e3f383b3f6af6e70d65", + "rev": "8e9add2afda58d233a75e4c5ce8503b24fa59ceb", "type": "github" }, "original": { @@ -543,11 +442,11 @@ ] }, "locked": { - "lastModified": 1749046714, - "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", + "lastModified": 1759610243, + "narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", + "rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622", "type": "github" }, "original": { @@ -665,11 +564,11 @@ ] }, "locked": { - "lastModified": 1759490926, - "narHash": "sha256-7IbZGJ5qAAfZsGhBHIsP8MBsfuFYS0hsxYHVkkeDG5Q=", + "lastModified": 1759619523, + "narHash": "sha256-r1ed7AR2ZEb2U8gy321/Xcp1ho2tzn+gG1te/Wxsj1A=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "94cce794344538c4d865e38682684ec2bbdb2ef3", + "rev": "3df7bde01efb3a3e8e678d1155f2aa3f19e177ef", "type": "github" }, "original": { @@ -725,20 +624,16 @@ }, "neovim-nightly-overlay": { "inputs": { - "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", - "git-hooks": "git-hooks", - "hercules-ci-effects": "hercules-ci-effects", "neovim-src": "neovim-src", - "nixpkgs": "nixpkgs_5", - "treefmt-nix": "treefmt-nix" + "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1759795531, - "narHash": "sha256-iY43k/GpJJqv5WmHsJpDsOZsOqb2qydM7wWnpJygiUk=", + "lastModified": 1762128253, + "narHash": "sha256-U8N1W90dSQJZ8q0xl3aRC4JBp1c9nxxUcVmTO/zhqbk=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "df3d6d30529e6f4d2c1709914cb3e6e3896dd64e", + "rev": "1af775f26be88b3c5177a9fd23f7f4002bdeaf61", "type": "github" }, "original": { @@ -750,11 +645,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1759794827, - "narHash": "sha256-eN26ZJbzwuv0fvc33v4vR5hESWr/+TzJUXaKfdUQx+I=", + "lastModified": 1762102676, + "narHash": "sha256-x2ZQGCkjdYmwMrtKwSjtS6UcBa+VbL2ynzZcv8cgeI0=", "owner": "neovim", "repo": "neovim", - "rev": "1c4e0e50449d95465e7f256d39fea54b307e0e33", + "rev": "130ef73e39ee011c40af96624d0c8ef0fa426b09", "type": "github" }, "original": { @@ -765,11 +660,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1760038930, - "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", + "lastModified": 1761907660, + "narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", + "rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15", "type": "github" }, "original": { @@ -781,11 +676,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1759381078, - "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", + "lastModified": 1761672384, + "narHash": "sha256-o9KF3DJL7g7iYMZq9SWgfS1BFlNbsm6xplRjVlOCkXI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", + "rev": "08dacfca559e1d7da38f3cf05f1f45ee9bfd213c", "type": "github" }, "original": { @@ -813,11 +708,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1759381078, - "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", "type": "github" }, "original": { @@ -829,11 +724,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1759632233, - "narHash": "sha256-krgZxGAIIIKFJS+UB0l8do3sYUDWJc75M72tepmVMzE=", + "lastModified": 1761880412, + "narHash": "sha256-QoJjGd4NstnyOG4mm4KXF+weBzA2AH/7gn1Pmpfcb0A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d7f52a7a640bc54c7bb414cca603835bf8dd4b10", + "rev": "a7fc11be66bdfb5cdde611ee5ce381c183da8386", "type": "github" }, "original": { @@ -845,11 +740,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1759733170, - "narHash": "sha256-TXnlsVb5Z8HXZ6mZoeOAIwxmvGHp1g4Dw89eLvIwKVI=", + "lastModified": 1761907660, + "narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8913c168d1c56dc49a7718685968f38752171c3b", + "rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15", "type": "github" }, "original": { @@ -945,11 +840,11 @@ ] }, "locked": { - "lastModified": 1758108966, - "narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=", + "lastModified": 1760663237, + "narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b", + "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", "type": "github" }, "original": { @@ -999,11 +894,11 @@ ] }, "locked": { - "lastModified": 1759635238, - "narHash": "sha256-UvzKi02LMFP74csFfwLPAZ0mrE7k6EiYaKecplyX9Qk=", + "lastModified": 1760998189, + "narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=", "owner": "Mic92", "repo": "sops-nix", - "rev": "6e5a38e08a2c31ae687504196a230ae00ea95133", + "rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3", "type": "github" }, "original": { @@ -1033,11 +928,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1759690047, - "narHash": "sha256-Vlpa0d1xOgPO9waHwxJNi6LcD2PYqB3EjwLRtSxXlHc=", + "lastModified": 1762101397, + "narHash": "sha256-wGiL2K3kAyBBmIZpJEskaSIgyzzpg0zwfvri+Sy6/CI=", "owner": "nix-community", "repo": "stylix", - "rev": "09022804b2bcd217f3a41a644d26b23d30375d12", + "rev": "8c0640d5722a02178c8ee80a62c5f019cab4b3c1", "type": "github" }, "original": { @@ -1187,27 +1082,6 @@ "type": "github" } }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "neovim-nightly-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1758728421, - "narHash": "sha256-ySNJ008muQAds2JemiyrWYbwbG+V7S5wg3ZVKGHSFu8=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "5eda4ee8121f97b218f7cc73f5172098d458f1d1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, "typsite": { "inputs": { "flake-utils": "flake-utils_2", @@ -1258,11 +1132,11 @@ ] }, "locked": { - "lastModified": 1755354946, - "narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=", + "lastModified": 1760713634, + "narHash": "sha256-5HXelmz2x/uO26lvW7MudnadbAfoBnve4tRBiDVLtOM=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0", + "rev": "753bbbdf6a052994da94062e5b753288cef28dfb", "type": "github" }, "original": { diff --git a/machines/test/hardware-configuration.nix b/machines/test/hardware-configuration.nix deleted file mode 100644 index 54932ff..0000000 --- a/machines/test/hardware-configuration.nix +++ /dev/null @@ -1,17 +0,0 @@ -# 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, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} diff --git a/maskiner/core/configuration.nix b/maskiner/core/configuration.nix index 649018d..a8a53f0 100644 --- a/maskiner/core/configuration.nix +++ b/maskiner/core/configuration.nix @@ -10,7 +10,7 @@ ... }: let - btusb = pkgs.callPackage ../../moduler/btusb.nix { inherit (config.boot.kernelPackages) kernel; }; + theme = "latte"; in { imports = [ @@ -28,6 +28,7 @@ in ../../moduler/hyprland.nix ../../moduler/sound.nix ../../moduler/programs/kubernetes-tools.nix + ../../moduler/programs/confetti ]; kubernetes-tools.enable = true; @@ -40,8 +41,7 @@ in stylix = { enable = true; - # base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; - base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-latte.yaml"; + base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-${theme}.yaml"; }; programs.ssh.knownHosts = { @@ -53,6 +53,10 @@ in publicKeyFile = ../../keys/rsa_pubkey; }; }; + hyprland = { + enable = true; + theme = theme; + }; home-manager.extraSpecialArgs = { inherit inputs pkgs; }; home-manager.users.fw = { @@ -61,10 +65,11 @@ in ./../../moduler/programs/waybar inputs.catppuccin.homeModules.catppuccin ]; - waybar = { - enable = true; - # configPath = ./../../moduler/programs/waybar/waybar-laptop.jsonc; - }; + waybar = { + enable = true; + configPath = ./../../moduler/programs/waybar/waybar.jsonc; + stylePath = ./../../moduler/programs/waybar/waybar-${theme}.css; + }; gtk = { enable = true; iconTheme = { @@ -72,10 +77,37 @@ in package = pkgs.gruvbox-dark-icons-gtk; }; }; + kitty = { + enable = true; + theme = theme; + }; + fish = { + theme = theme; + }; + k9s = { + enable = true; + theme = theme; + }; + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + shellAliases = { + ll = "ls -l"; + update = "sudo nixos-rebuild switch"; + }; + history.size = 10000; + }; + oh-my-posh = { + enable = true; + theme = theme; + }; catppuccin = { librewolf = { enable = true; - flavor = "latte"; + flavor = theme; accent = "peach"; }; }; @@ -90,20 +122,19 @@ in }; }; - boot.kernelPackages = pkgs.linuxPackages_latest; - # boot.extraModulePackages = [ - # (btusb.overrideAttrs (_: { - # patches = [ ../../moduler/btusb-add-mt7925.patch ]; - # })) - # ]; - - networking.hostName = myhostname; - services = { - tailscale = { + fprintd = { enable = true; + tod = { + enable = true; + driver = pkgs.libfprint-2-tod1-goodix; + }; }; }; + boot.kernelPackages = pkgs.linuxPackages_latest; + + networking.hostName = myhostname; + system.stateVersion = "25.05"; } diff --git a/maskiner/legacy/configuration.nix b/maskiner/legacy/configuration.nix index fa642d2..5cbcc9e 100644 --- a/maskiner/legacy/configuration.nix +++ b/maskiner/legacy/configuration.nix @@ -46,6 +46,7 @@ in waybar = { enable = true; configPath = ./../../moduler/programs/waybar/waybar-laptop.jsonc; + stylePath = ./../../moduler/programs/waybar/waybar-latte.css; }; gtk = { enable = true; @@ -78,9 +79,6 @@ in services = { - tailscale = { - enable = true; - }; searx = { enable = true; redisCreateLocally = true; diff --git a/maskiner/node/configuration.nix b/maskiner/node/configuration.nix index ce15598..dd77944 100644 --- a/maskiner/node/configuration.nix +++ b/maskiner/node/configuration.nix @@ -9,28 +9,30 @@ ... }: let - modulesDirectory = ../../moduler; + modulesDirectory = ../../moduler; in { # You can import other NixOS modules here imports = [ ./hardware-configuration.nix - ( modulesDirectory + /base.nix ) - ( modulesDirectory + /users.nix ) - ( modulesDirectory + /kitchenowl.nix ) - ( modulesDirectory + /radicale.nix ) - ( modulesDirectory + /vaultwarden.nix ) - ( modulesDirectory + /signal.nix ) - ( modulesDirectory + /uptime-kuma.nix ) - ( modulesDirectory + /wedding.nix ) + (modulesDirectory + /base.nix) + (modulesDirectory + /users.nix) + (modulesDirectory + /kitchenowl.nix) + (modulesDirectory + /radicale.nix) + (modulesDirectory + /vaultwarden.nix) + (modulesDirectory + /signal.nix) + (modulesDirectory + /uptime-kuma.nix) + (modulesDirectory + /wedding.nix) - ( modulesDirectory + /services/monitoring ) - ( modulesDirectory + /services/headscale ) - ( modulesDirectory + /services/mpd ) - ( modulesDirectory + /services/actual ) - ( modulesDirectory + /services/forgejo ) - ( modulesDirectory + /services/wishlist ) - ( modulesDirectory + /services/glance ) + (modulesDirectory + /services/monitoring) + (modulesDirectory + /services/headscale) + (modulesDirectory + /services/mpd) + (modulesDirectory + /services/actual) + (modulesDirectory + /services/forgejo) + (modulesDirectory + /services/wishlist) + (modulesDirectory + /services/glance) + (modulesDirectory + /services/gotify) + (modulesDirectory + /services/kanboard) ]; sops.defaultSopsFile = ../../secrets/sops.yaml; @@ -40,23 +42,38 @@ in owner = "root"; mode = "0440"; }; + environment.systemPackages = with pkgs; [ + beets + ]; mpd = { - enable = true; + enable = true; + }; + kanboard = { + enable = true; + host = "127.0.0.1"; + port = 3128; + domain = "kanboard.wastring.com"; + }; + gotify = { + enable = true; + host = "127.0.0.1"; + port = 8121; + domain = "message.wastring.com"; }; glance = { - enable = true; + enable = true; host = "127.0.0.1"; - domain = "home.wastring.com"; + domain = "home.wastring.com"; }; wishlist = { - enable = true; + enable = true; host = "127.0.0.1"; - domain = "wish.wastring.com"; + domain = "wish.wastring.com"; }; forgejo = { - enable = true; + enable = true; }; actual = { @@ -102,7 +119,6 @@ in "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII60tdNsG0z9q2jHmoTKvkeLQE6OF0bmTsDX1bpqpoG7 fw@jobb" ]; - networking.hostName = myhostname; system.stateVersion = "25.05"; diff --git a/moduler/base.nix b/moduler/base.nix index 26af008..c8495ad 100644 --- a/moduler/base.nix +++ b/moduler/base.nix @@ -18,7 +18,10 @@ nix.nixPath = [ "/etc/nix/path" ]; users.defaultUserShell = pkgs.bash; documentation.man.generateCaches = false; - programs.fish.enable = true; + programs.fish = { + enable = true; + }; + programs.bash = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] @@ -58,7 +61,7 @@ fonts.packages = with pkgs; [ nerd-fonts.comic-shanns-mono nerd-fonts.fira-code - garamond-libre + garamond-libre ]; i18n.defaultLocale = "en_US.UTF-8"; diff --git a/moduler/fish.nix b/moduler/fish.nix index 58e01c9..134d638 100644 --- a/moduler/fish.nix +++ b/moduler/fish.nix @@ -1,82 +1,113 @@ -{ pkgs, ... }: -{ - programs.fish = { - enable = true; - plugins = [ - { - name = "z"; - src = pkgs.fetchFromGitHub { - owner = "jethrokuan"; - repo = "z"; - rev = "e0e1b9dfdba362f8ab1ae8c1afc7ccf62b89f7eb"; - sha256 = "0dbnir6jbwjpjalz14snzd3cgdysgcs3raznsijd6savad3qhijc"; - }; - } - { - name = "autopair"; - src = pkgs.fishPlugins.autopair.src; - } - { - name = "foreign-env"; - src = pkgs.fishPlugins.foreign-env.src; - } - { - name = "fzf"; - src = pkgs.fishPlugins.fzf.src; - } - { - name = "done"; - src = pkgs.fishPlugins.done.src; - } - { - name = "grc"; - src = pkgs.fishPlugins.grc.src; - } - ]; - shellAbbrs = { - ls = "eza -l"; - lg = "lazygit"; - ka = "kubectl apply -f"; - t = "timew"; - todo = "jira issue list -a 'Fredrik Wastring' -s ~Done -s ~Closed -s ~Released --plain"; - cam = "jira issue create && jira issue assign && jira issue move"; - e = "kubectx"; - s = { - setCursor = "%"; - expansion = "cha https://search.wastring.com/search?q=%"; - }; - tw = { - setCursor = "%"; - expansion = "typst watch % --open zathura /tmp/zathura.pdf"; - }; - c = { - setCursor = "%"; - expansion = "ssh 'fw:%@gateway.internalifacts.se' -p 2222"; - }; - dl = { - setCursor = "&"; - expansion = "yt-dlp -o \"~/videor/%(title)s - %(uploader)s\" \"&\""; - }; - }; - interactiveShellInit = '' - fish_vi_key_bindings - set fish_greeting - set FLAKE_DIR "/home/fw/nix" - set JIRA_API_TOKEN ATATT3xFfGF0_fkpGB1ne-QOSJzFVG0yH31j2CRtdNqbePCyEm9enpnA2uA3go75_GQwZPFX_IO9tf10ALJWvDLjsuHl8MSOUkNd703Vqr4uuGLAbHY73Z_b9fDJVrfodTrGAN9sZ5Sp75opCVkXB7MVXSAIvlWimRdwe-tqDPH4vhwY9Hqcs6M=0510D6CD - set -Ux FZF_CTRL_R_OPTS "--reverse" - set -Ux FZF_TMUX_OPTS "-p" - set -e GOROOT - set -e GOPATH - gh completion -s fish > ~/.config/fish/completions/gh.fish - set -gx PATH $PATH $HOME/.krew/bin +{ pkgs, lib, config, ... }: - # Mocha - set -Ux FZF_DEFAULT_OPTS "\ - --color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \ - --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \ - --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 \ - --color=selected-bg:#45475a \ - --multi" - ''; +let + inherit (lib) concatStringsSep mkOption types; + + mkFzfOptionsString = lines: concatStringsSep " " lines; + + catppuccinFzfOptions = { + mocha = mkFzfOptionsString [ + "--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8" + "--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc" + "--color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8" + "--color=selected-bg:#45475a" + "--multi" + ]; + latte = mkFzfOptionsString [ + "--color=bg+:#ccd0da,bg:#eff1f5,spinner:#dc8a78,hl:#d20f39" + "--color=fg:#4c4f69,header:#d20f39,info:#1e66f5,pointer:#dc8a78" + "--color=marker:#fe640b,fg+:#4c4f69,prompt:#1e66f5,hl+:#d20f39" + "--color=selected-bg:#acb0be" + "--multi" + ]; + }; +in +{ + options.fish = { + theme = mkOption { + type = types.enum (builtins.attrNames catppuccinFzfOptions); + default = "mocha"; + description = "Catppuccin theme variant used for Fish integrations such as FZF."; + example = "latte"; + }; + }; + + config = { + programs.fish = { + enable = true; + plugins = [ + { + name = "z"; + src = pkgs.fetchFromGitHub { + owner = "jethrokuan"; + repo = "z"; + rev = "e0e1b9dfdba362f8ab1ae8c1afc7ccf62b89f7eb"; + sha256 = "0dbnir6jbwjpjalz14snzd3cgdysgcs3raznsijd6savad3qhijc"; + }; + } + { + name = "autopair"; + src = pkgs.fishPlugins.autopair.src; + } + { + name = "foreign-env"; + src = pkgs.fishPlugins.foreign-env.src; + } + { + name = "fzf"; + src = pkgs.fishPlugins.fzf.src; + } + { + name = "done"; + src = pkgs.fishPlugins.done.src; + } + { + name = "grc"; + src = pkgs.fishPlugins.grc.src; + } + ]; + shellAbbrs = { + ls = "eza -l"; + lg = "lazygit"; + ka = "kubectl apply -f"; + t = "timew"; + todo = "jira issue list -a 'Fredrik Wastring' -s ~Done -s ~Closed -s ~Released --plain"; + cam = "jira issue create && jira issue assign && jira issue move"; + e = "kubectx"; + s = { + setCursor = "%"; + expansion = "cha https://search.wastring.com/search?q=%"; + }; + tw = { + setCursor = "%"; + expansion = "typst watch % --open zathura /tmp/zathura.pdf"; + }; + c = { + setCursor = "%"; + expansion = "ssh 'fw:%@gateway.internalifacts.se' -p 2222"; + }; + dl = { + setCursor = "&"; + expansion = "yt-dlp -o \"~/videor/%(title)s - %(uploader)s\" \"&\""; + }; + }; + interactiveShellInit = + let + fzfOpts = catppuccinFzfOptions.${config.fish.theme}; + in '' + fish_vi_key_bindings + set fish_greeting + set FLAKE_DIR "/home/fw/nix" + set JIRA_API_TOKEN ATATT3xFfGF0_fkpGB1ne-QOSJzFVG0yH31j2CRtdNqbePCyEm9enpnA2uA3go75_GQwZPFX_IO9tf10ALJWvDLjsuHl8MSOUkNd703Vqr4uuGLAbHY73Z_b9fDJVrfodTrGAN9sZ5Sp75opCVkXB7MVXSAIvlWimRdwe-tqDPH4vhwY9Hqcs6M=0510D6CD + set -Ux FZF_CTRL_R_OPTS "--reverse" + set -Ux FZF_TMUX_OPTS "-p" + set -e GOROOT + set -e GOPATH + gh completion -s fish > ~/.config/fish/completions/gh.fish + set -gx PATH $PATH $HOME/.krew/bin + + set -Ux FZF_DEFAULT_OPTS "${fzfOpts}" + ''; + }; }; } diff --git a/moduler/git.nix b/moduler/git.nix index 2bbf0ff..3b0af92 100644 --- a/moduler/git.nix +++ b/moduler/git.nix @@ -8,7 +8,7 @@ email = "fredrik@wastring.com"; }; pull = { - rebase = false; + rebase = true; }; url."git@github.com:".insteadOf = "https://github.com/"; }; diff --git a/moduler/home.nix b/moduler/home.nix index 968f69e..0b372b8 100644 --- a/moduler/home.nix +++ b/moduler/home.nix @@ -7,29 +7,30 @@ ... }: { - imports = [ - ../moduler/tmux.nix - ../moduler/fish.nix - ../moduler/kitty.nix - ../moduler/dunst.nix - ../moduler/nixpkgs.nix - ../moduler/firefox.nix - ../moduler/zathura.nix - ../moduler/lazygit.nix - ../moduler/ssh.nix - ../moduler/oh-my-posh.nix - ../moduler/gtk.nix - # ../moduler/neovim.nix - ../moduler/programs/k9s - ]; + imports = [ + ../moduler/tmux.nix + ../moduler/fish.nix + ../moduler/kitty.nix + ../moduler/dunst.nix + ../moduler/nixpkgs.nix + ../moduler/firefox.nix + ../moduler/zathura.nix + ../moduler/lazygit.nix + ../moduler/ssh.nix + ../moduler/oh-my-posh.nix + ../moduler/gtk.nix + # ../moduler/neovim.nix + ../moduler/programs/k9s + ]; - programs.home-manager.enable = true; - programs.fish.enable = true; - home.username = "fw"; - home.homeDirectory = "/home/fw"; + programs.home-manager.enable = true; + programs.fish.enable = true; - home.stateVersion = "25.05"; + home.username = "fw"; + home.homeDirectory = "/home/fw"; - systemd.user.startServices = "sd-switch"; + home.stateVersion = "25.05"; + + systemd.user.startServices = "sd-switch"; } diff --git a/moduler/hyprland.nix b/moduler/hyprland.nix index dddfd9c..47a4871 100644 --- a/moduler/hyprland.nix +++ b/moduler/hyprland.nix @@ -8,309 +8,324 @@ ... }: let + hyprlandPkg = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; in +with lib; { - environment.systemPackages = with pkgs; [ - swww - swappy - ydotool - wl-clipboard - hyprpolkitagent - hyprland-qtutils - waypipe - wmenu - playerctl - ]; + options = { + hyprland = { + enable = mkEnableOption "enables hyprland"; + theme = lib.mkOption { + type = lib.types.str; + default = "latte"; + description = "the theme for hyprland"; + }; + }; + }; + config = mkIf config.hyprland.enable { + environment.systemPackages = with pkgs; [ + swww + swappy + ydotool + wl-clipboard + hyprpolkitagent + hyprland-qtutils + waypipe + wmenu + playerctl + ]; - fonts.packages = with pkgs; [ - font-awesome - ]; + fonts.packages = with pkgs; [ + font-awesome + ]; - services = { - greetd = { + services.greetd = { enable = true; - settings = { - default_session = { - command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd hyprland"; - user = "greeter"; + settings = rec { + initial_session = { + command = "${pkgs.hyprland}/bin/Hyprland"; + user = "fw"; }; + default_session = initial_session; }; }; - }; - nix.settings = { - substituters = [ "https://hyprland.cachix.org" ]; - trusted-substituters = [ "https://hyprland.cachix.org" ]; - trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; - }; - programs.hyprland = { - enable = true; - package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; - portalPackage = - inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; - }; - home-manager.users.fw = - { pkgs, ... }: - { - programs = { - hyprlock = { - enable = true; + nix.settings = { + substituters = [ "https://hyprland.cachix.org" ]; + trusted-substituters = [ "https://hyprland.cachix.org" ]; + trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; + }; + programs.hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + portalPackage = + inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + }; + home-manager.users.fw = + { pkgs, ... }: + { + programs = { + hyprlock = { + enable = true; + }; + rofi = { + enable = true; + font = lib.mkForce "FiraCode Nerd Font 18"; + }; }; - rofi = { - enable = true; - font = lib.mkForce "FiraCode Nerd Font 18"; - }; - }; - services = { - cliphist = { - enable = true; - }; - hypridle = { - enable = true; - settings = { - general = { - after_sleep_cmd = "hyprctl dispatch dpms on"; - ignore_dbus_inhibit = false; - lock_cmd = "hyprlock"; + services = { + cliphist = { + enable = true; + }; + hypridle = { + enable = true; + settings = { + general = { + after_sleep_cmd = "hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "hyprlock"; + }; + + listener = [ + { + timeout = 900; + on-timeout = "hyprlock"; + } + { + timeout = 1200; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; }; + }; + hyprpaper = { + enable = true; + settings = { + ipc = "on"; + splash = false; + splash_offset = 2.0; - listener = [ - { - timeout = 900; - on-timeout = "hyprlock"; - } - { - timeout = 1200; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; + preload = [ + "/home/fw/nix/wallpapers/nix-wallpaper-nineish-catppuccin-${config.hyprland.theme}.png" + "/home/fw/nix/wallpapers/tux.catppuccin-${config.hyprland.theme}.jpg" + ]; + + wallpaper = [ + ",/home/fw/nix/wallpapers/nix-wallpaper-nineish-catppuccin-${config.hyprland.theme}.png" + ]; + }; }; }; - hyprpaper = { + + wayland.windowManager.hyprland = { enable = true; - settings = { - ipc = "on"; - splash = false; - splash_offset = 2.0; - - preload = [ "/home/fw/nix/wallpapers/nix-wallpaper-nineish-catppuccin-mocha.png" "/home/fw/nix/wallpapers/nix-wallpaper-nineish-catppuccin-latte.png" ]; - - wallpaper = [ - "DP-1,/home/fw/nix/wallpapers/nix-wallpaper-nineish-catppuccin-latte.png" - "eDP-1,/home/fw/nix/wallpapers/nix-wallpaper-nineish-catppuccin-latte.png" - ]; - }; - }; - }; - - wayland.windowManager.hyprland = { - enable = true; - xwayland = { - enable = true; - }; - - settings = { - "$terminal" = "kitty"; - "$mod" = "ALT"; - - monitor = [ - "desc: ASUSTek COMPUTER INC ASUS PA279CV S4LMTF159462 (DP-1), 3840x2160@60, 0x0, 1.5, transform, 1" - "desc: ASUSTek COMPUTER INC VG279 JBLMQS021792 (DP-1), 1920x1080@144, 0x0, 1" - "eDP-1, 1920x1080@60, 0x0, 1, transform, 0" - ",prefered,auto,1" - ]; - xwayland = { - force_zero_scaling = true; + enable = true; }; - general = { - gaps_in = 7; - gaps_out = 14; - border_size = 2; - layout = "dwindle"; - allow_tearing = true; - }; + settings = { + "$terminal" = "kitty"; + "$mod" = "ALT"; - input = { - kb_layout = "se"; - kb_options = [ - "caps:escape" + monitor = [ + "desc: ASUSTek COMPUTER INC ASUS PA279CV S4LMTF159462 (DP-1), 3840x2160@60, 0x0, 1.5, transform, 0" + "desc: ASUSTek COMPUTER INC VG279 JBLMQS021792 (DP-1), 1920x1080@144, 0x0, 1" + "eDP-1, 1920x1080@60, 0x0, 1, transform, 0" + ",prefered,auto,1" ]; - follow_mouse = true; - touchpad = { - natural_scroll = true; + xwayland = { + force_zero_scaling = true; }; - accel_profile = "flat"; - sensitivity = 0; - }; - decoration = { - rounding = 10; - active_opacity = 0.8; - inactive_opacity = 0.7; - fullscreen_opacity = 0.9; + general = { + gaps_in = 7; + gaps_out = 14; + border_size = 2; + layout = "dwindle"; + allow_tearing = true; + }; - blur = { + input = { + kb_layout = "se"; + kb_options = [ + "caps:escape" + ]; + + follow_mouse = true; + touchpad = { + natural_scroll = true; + }; + accel_profile = "flat"; + sensitivity = 0; + }; + + decoration = { + rounding = 10; + active_opacity = 0.9; + inactive_opacity = 0.8; + fullscreen_opacity = 0.9; + + blur = { + enabled = true; + xray = true; + special = false; + new_optimizations = true; + size = 14; + passes = 4; + brightness = 1; + noise = 0.01; + contrast = 1; + popups = true; + popups_ignorealpha = 0.6; + ignore_opacity = false; + }; + }; + + animations = { enabled = true; - xray = true; - special = false; - new_optimizations = true; - size = 14; - passes = 4; - brightness = 1; - noise = 0.01; - contrast = 1; - popups = true; - popups_ignorealpha = 0.6; - ignore_opacity = false; + bezier = [ + "easeOutQuint,0.23,1,0.32,1" + "easeInOutCubic,0.65,0.05,0.36,1" + "linear,0,0,1,1" + "almostLinear,0.5,0.5,0.75,1.0#fffff" + "quick,0.15,0,0.1,1" + ]; + animation = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 4.79, easeOutQuint" + "windowsIn, 1, 4.1, easeOutQuint, popin 87%" + "windowsOut, 1, 1.49, linear, popin 87%" + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" + ]; }; - }; - animations = { - enabled = true; - bezier = [ - "easeOutQuint,0.23,1,0.32,1" - "easeInOutCubic,0.65,0.05,0.36,1" - "linear,0,0,1,1" - "almostLinear,0.5,0.5,0.75,1.0#fffff" - "quick,0.15,0,0.1,1" + cursor = { + enable_hyprcursor = true; + }; + + dwindle = { + pseudotile = true; + preserve_split = true; + smart_split = false; + smart_resizing = false; + }; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + enable_swallow = true; + swallow_regex = "^(kitty)$"; + }; + + bind = [ + # General + "$mod, return, exec, $terminal" + "$mod SHIFT, q, killactive" + "$mod SHIFT, e, exit" + "$mod SHIFT, d, exec, /home/fw/scripts/dmenu_sys" + "$mod SHIFT, x, exec, ${pkgs.hyprlock}/bin/hyprlock" + "$mod SHIFT, w, exec, /home/fw/scripts/watch" + + # Screen focus + "$mod, v, togglefloating" + "$mod, u, focusurgentorlast" + "$mod, tab, focuscurrentorlast" + "$mod, f, fullscreen" + + # Screen resize + "$mod CTRL, h, resizeactive, -20 0" + "$mod CTRL, l, resizeactive, 20 0" + "$mod CTRL, k, resizeactive, 0 -20" + "$mod CTRL, j, resizeactive, 0 20" + + # Workspaces + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + + # Move to workspaces + "$mod SHIFT, 1, movetoworkspace,1" + "$mod SHIFT, 2, movetoworkspace,2" + "$mod SHIFT, 3, movetoworkspace,3" + "$mod SHIFT, 4, movetoworkspace,4" + "$mod SHIFT, 5, movetoworkspace,5" + "$mod SHIFT, 6, movetoworkspace,6" + "$mod SHIFT, 7, movetoworkspace,7" + "$mod SHIFT, 8, movetoworkspace,8" + "$mod SHIFT, 9, movetoworkspace,9" + "$mod SHIFT, 0, movetoworkspace,10" + + # Navigation + "$mod, h, movefocus, l" + "$mod, l, movefocus, r" + "$mod, k, movefocus, u" + "$mod, j, movefocus, d" + + # Applications + "$mod, q, exec, ${pkgs.librewolf}/bin/librewolf" + "$mod, d, exec, ${pkgs.rofi}/bin/rofi -show drun -p 'Run: '" + + # Screencapture + "$mod SHIFT, s, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png" + + # special + "SUPER+SHIFT, code:201, exec, confetti" ]; - animation = [ - "global, 1, 10, default" - "border, 1, 5.39, easeOutQuint" - "windows, 1, 4.79, easeOutQuint" - "windowsIn, 1, 4.1, easeOutQuint, popin 87%" - "windowsOut, 1, 1.49, linear, popin 87%" - "fadeIn, 1, 1.73, almostLinear" - "fadeOut, 1, 1.46, almostLinear" - "fade, 1, 3.03, quick" - "layers, 1, 3.81, easeOutQuint" - "layersIn, 1, 4, easeOutQuint, fade" - "layersOut, 1, 1.5, linear, fade" - "fadeLayersIn, 1, 1.79, almostLinear" - "fadeLayersOut, 1, 1.39, almostLinear" - "workspaces, 1, 1.94, almostLinear, fade" - "workspacesIn, 1, 1.21, almostLinear, fade" - "workspacesOut, 1, 1.94, almostLinear, fade" + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + + windowrulev2 = [ + "float, class:^(org.pulseaudio.pavucontrol)$" + "size 500 400, class:^(org.pulseaudio.pavucontrol)" + "move onscreen cursor -250 10, class:^(org.pulseaudio.pavucontrol)" + "float, title:^(Bluetooth Devices)$" + "size 500 400, title:^(Bluetooth Devices)" + "move onscreen cursor -250 10, title:^(Bluetooth Devices)" + + "float, class:^(.playerctl-gtk-wrapped)$" + "size 300 50, class:^(.playerctl-gtk-wrapped)" + "move onscreen cursor -150 30, class:^(.playerctl-gtk-wrapped)" + ]; + + env = [ + "NIXOS_OZONE_WL,1" + "_JAVA_AWT_WM_NONREPARENTING,1" + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + "QT_QPA_PLATFORM,wayland" + "SDL_VIDEODRIVER,wayland" + "GDK_BACKEND,wayland" + "XDG_SESSION_TYPE,wayland" + "XDG_SESSION_DESKTOP,Hyprland" + "XDG_CURRENT_DESKTOP,Hyprland" ]; }; - - cursor = { - enable_hyprcursor = true; + systemd = { + enable = true; }; - - dwindle = { - pseudotile = true; - preserve_split = true; - smart_split = false; - smart_resizing = false; - }; - - misc = { - disable_hyprland_logo = true; - disable_splash_rendering = true; - enable_swallow = true; - swallow_regex = "^(kitty)$"; - }; - - bind = [ - # General - "$mod, return, exec, $terminal" - "$mod SHIFT, q, killactive" - "$mod SHIFT, e, exit" - "$mod SHIFT, d, exec, /home/fw/scripts/dmenu_sys" - "$mod SHIFT, x, exec, ${pkgs.hyprlock}/bin/hyprlock" - "$mod SHIFT, w, exec, /home/fw/scripts/watch" - - # Screen focus - "$mod, v, togglefloating" - "$mod, u, focusurgentorlast" - "$mod, tab, focuscurrentorlast" - "$mod, f, fullscreen" - - # Screen resize - "$mod CTRL, h, resizeactive, -20 0" - "$mod CTRL, l, resizeactive, 20 0" - "$mod CTRL, k, resizeactive, 0 -20" - "$mod CTRL, j, resizeactive, 0 20" - - # Workspaces - "$mod, 1, workspace, 1" - "$mod, 2, workspace, 2" - "$mod, 3, workspace, 3" - "$mod, 4, workspace, 4" - "$mod, 5, workspace, 5" - "$mod, 6, workspace, 6" - "$mod, 7, workspace, 7" - "$mod, 8, workspace, 8" - "$mod, 9, workspace, 9" - "$mod, 0, workspace, 10" - - # Move to workspaces - "$mod SHIFT, 1, movetoworkspace,1" - "$mod SHIFT, 2, movetoworkspace,2" - "$mod SHIFT, 3, movetoworkspace,3" - "$mod SHIFT, 4, movetoworkspace,4" - "$mod SHIFT, 5, movetoworkspace,5" - "$mod SHIFT, 6, movetoworkspace,6" - "$mod SHIFT, 7, movetoworkspace,7" - "$mod SHIFT, 8, movetoworkspace,8" - "$mod SHIFT, 9, movetoworkspace,9" - "$mod SHIFT, 0, movetoworkspace,10" - - # Navigation - "$mod, h, movefocus, l" - "$mod, l, movefocus, r" - "$mod, k, movefocus, u" - "$mod, j, movefocus, d" - - # Applications - "$mod, q, exec, ${pkgs.librewolf}/bin/librewolf" - "$mod, d, exec, ${pkgs.rofi}/bin/rofi -show drun -p 'Run: '" - - # Screencapture - "$mod SHIFT, s, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png" - - # special - "SUPER+SHIFT, code:201, exec, confetti" - ]; - - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - - windowrulev2 = [ - "float, class:^(org.pulseaudio.pavucontrol)$" - "size 500 400, class:^(org.pulseaudio.pavucontrol)" - "move onscreen cursor -250 10, class:^(org.pulseaudio.pavucontrol)" - "float, title:^(Bluetooth Devices)$" - "size 500 400, title:^(Bluetooth Devices)" - "move onscreen cursor -250 10, title:^(Bluetooth Devices)" - - "float, class:^(.playerctl-gtk-wrapped)$" - "size 300 50, class:^(.playerctl-gtk-wrapped)" - "move onscreen cursor -150 30, class:^(.playerctl-gtk-wrapped)" - ]; - - env = [ - "NIXOS_OZONE_WL,1" - "_JAVA_AWT_WM_NONREPARENTING,1" - "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" - "QT_QPA_PLATFORM,wayland" - "SDL_VIDEODRIVER,wayland" - "GDK_BACKEND,wayland" - "XDG_SESSION_TYPE,wayland" - "XDG_SESSION_DESKTOP,Hyprland" - "XDG_CURRENT_DESKTOP,Hyprland" - ]; - }; - systemd = { - enable = true; }; }; - }; + }; } diff --git a/moduler/kitty.nix b/moduler/kitty.nix index d604faa..ed3f593 100644 --- a/moduler/kitty.nix +++ b/moduler/kitty.nix @@ -2,27 +2,46 @@ pkgs, lib, myhostname, + config, ... }: +let + capitalize = + s: + (lib.strings.toUpper (builtins.substring 0 1 s)) + + (builtins.substring 1 (builtins.stringLength s - 1) s); +in +with lib; { - programs.kitty = { - enable = true; - font = { - # name = "ComicShannsMono Nerd Font"; - name = "FiraCode Nerd Font Mono"; - size = 14; + options = { + kitty = { + enable = mkEnableOption "enables kitty"; + theme = lib.mkOption { + type = lib.types.str; + default = "latte"; + description = "the theme for kitty"; + }; }; - shellIntegration = { - mode = "no-cursor"; - }; - # themeFile = "Catppuccin-Mocha"; - themeFile = "Catppuccin-Latte"; - settings = { - confirm_os_window_close = 2; - cursor_shape = "block"; - cursor_blink_interval = 0; - enable_audio_bell = false; - window_padding_width = 10; + }; + config = mkIf config.kitty.enable { + + programs.kitty = { + enable = true; + font = { + name = "FiraCode Nerd Font Mono"; + size = 14; + }; + shellIntegration = { + mode = "no-cursor"; + }; + themeFile = "Catppuccin-${capitalize config.kitty.theme}"; + settings = { + confirm_os_window_close = 2; + cursor_shape = "block"; + cursor_blink_interval = 0; + enable_audio_bell = false; + window_padding_width = 10; + }; }; }; } diff --git a/moduler/oh-my-posh.nix b/moduler/oh-my-posh.nix index 215fbef..3175e0c 100644 --- a/moduler/oh-my-posh.nix +++ b/moduler/oh-my-posh.nix @@ -1,133 +1,138 @@ -{ pkgs, lib, ... }: +{ pkgs, lib, config, ... }: +let + palettes = { + latte = { + "os" = "#ACB0BE"; + "closer" = "p:os"; + "pink" = "#ea76cb"; + "lavender" = "#7287FD"; + "blue" = "#1e66f5"; + "peach" = "#fe640b"; + "red" = "#d20f39"; + "green" = "#40a02b"; + "mauve" = "#8839ef"; + }; + mocha = { + "os" = "#ACB0BE"; + "closer" = "p:os"; + "pink" = "#F5BDE6"; + "lavender" = "#B7BDF8"; + "blue" = "#8aadf4"; + "peach" = "#f5a97f"; + "red" = "#ed8796"; + "green" = "#a6da95"; + "mauve" = "#c6a0f6"; + }; + }; +in +with lib; { - programs.oh-my-posh = { - enable = true; - enableFishIntegration = true; - settings = { - "$schema"= "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json"; - # Macchiato - # "palette" = { - # "os"= "#ACB0BE"; - # "closer"= "p:os"; - # "pink"= "#F5BDE6"; - # "lavender"= "#B7BDF8"; - # "blue"= "#8aadf4"; - # "peach" = "#f5a97f"; - # "red" = "#ed8796"; - # "green" = "#a6da95"; - # "mauve" = "#c6a0f6"; - # }; - # Latte - "palette" = { - "os"= "#ACB0BE"; - "closer"= "p:os"; - "pink" = "#ea76cb"; - "lavender" = "#7287FD"; - "blue" = "#1e66f5"; - "peach" = "#fe640b"; - "red" = "#d20f39"; - "green" = "#40a02b"; - "mauve" = "#8839ef"; - }; - "blocks"= [ - { - "alignment"= "left"; - "newline" = true; - "type"= "prompt"; - "segments" = [ - { - "background"= "transparent"; - "foreground"= "p:blue"; - # "powerline_symbol"= "\ue0b4"; - # "leading_diamond"= "\ue0b6"; - "style"= "diamond"; - "template"= "{{.Icon}} "; - "type"= "os"; - } - { - "foreground"= "p:peach"; - "properties"= { - # "folder_icon"= "..\\ue5fe.."; - "home_icon"= "~"; - "style"= "unique"; - }; - "style"= "plain"; - "template"= "{{ .Path }} "; - "type"= "path"; - } - { - "foreground"= "p:green"; - "properties"= { - # "branch_icon"= "\\ue725 "; - # "cherry_pick_icon"= "\\ue29b "; - # "commit_icon"= "\\uf417 "; - "fetch_status"= false; - "fetch_upstream_icon"= false; - # "merge_icon"= "\\ue727 "; - # "no_commits_icon"= "\\uf0c3 "; - # "rebase_icon"= "\\ue728 "; - # "revert_icon"= "\\uf0e2 "; - # "tag_icon"= "\\uf412 "; - }; - "template"= "{{ .HEAD }} "; - "style"= "plain"; - "type"= "git"; - } - { - "style"= "plain"; - "foreground"= "p:closer"; - "type"= "text"; - } - { - "foreground"= "p:mauve"; - "style"= "plain"; - "template"= "{{ .UserName }}@"; - "type"= "session"; - } - { - "foreground"= "p:peach"; - "style"= "plain"; - "template"= "{{ .HostName }}"; - "type"= "session"; - } - ]; - } - { - "type"= "prompt"; - "alignment"= "left"; - "newline" = true; - "segments" = [ - { - "type" = "text"; - "style" = "plain"; - "background"= "transparent"; - "foreground_templates"= [ - "{{if gt .Code 0}}p:red{{end}}" - "{{if eq .Code 0}}p:green{{end}}" - ]; - "template"= ">"; - } - ]; - } - ]; - "final_space"= true; - "version"= 2; - "transient_prompt"= { - "background"= "transparent"; - "foreground_templates"= [ - "{{if gt .Code 0}}p:red{{end}}" - "{{if eq .Code 0}}p:green{{end}}" - ]; - "template"= ">"; - }; - "secondary_prompt"= { - "background"= "transparent"; - "foreground_templates"= [ - "{{if gt .Code 0}}p:red{{end}}" - "{{if eq .Code 0}}p:green{{end}}" - ]; - "template"= ">"; - }; - }; - }; + options = { + oh-my-posh = { + enable = mkEnableOption "enable oh-my-posh"; + theme = mkOption { + type = types.enum (builtins.attrNames palettes); + default = "latte"; + description = "Catppuccin theme variant for oh-my-posh."; + }; + }; + }; + + config = mkIf config.oh-my-posh.enable { + programs.oh-my-posh = { + enable = true; + settings = { + "$schema" = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json"; + "palette" = palettes.${config.oh-my-posh.theme}; + "blocks" = [ + { + "alignment" = "left"; + "newline" = true; + "type" = "prompt"; + "segments" = [ + { + "background" = "transparent"; + "foreground" = "p:blue"; + "style" = "diamond"; + "template" = "{{.Icon}} "; + "type" = "os"; + } + { + "foreground" = "p:peach"; + "properties" = { + "home_icon" = "~"; + "style" = "unique"; + }; + "style" = "plain"; + "template" = "{{ .Path }} "; + "type" = "path"; + } + { + "foreground" = "p:green"; + "properties" = { + "fetch_status" = false; + "fetch_upstream_icon" = false; + }; + "template" = "{{ .HEAD }} "; + "style" = "plain"; + "type" = "git"; + } + { + "style" = "plain"; + "foreground" = "p:closer"; + "type" = "text"; + } + { + "foreground" = "p:mauve"; + "style" = "plain"; + "template" = "{{ .UserName }}@"; + "type" = "session"; + } + { + "foreground" = "p:peach"; + "style" = "plain"; + "template" = "{{ .HostName }}"; + "type" = "session"; + } + ]; + } + { + "type" = "prompt"; + "alignment" = "left"; + "newline" = true; + "segments" = [ + { + "type" = "text"; + "style" = "plain"; + "background" = "transparent"; + "foreground_templates" = [ + "{{if gt .Code 0}}p:red{{end}}" + "{{if eq .Code 0}}p:green{{end}}" + ]; + "template" = ">"; + } + ]; + } + ]; + "final_space" = true; + "version" = 2; + "transient_prompt" = { + "background" = "transparent"; + "foreground_templates" = [ + "{{if gt .Code 0}}p:red{{end}}" + "{{if eq .Code 0}}p:green{{end}}" + ]; + "template" = ">"; + }; + "secondary_prompt" = { + "background" = "transparent"; + "foreground_templates" = [ + "{{if gt .Code 0}}p:red{{end}}" + "{{if eq .Code 0}}p:green{{end}}" + ]; + "template" = ">"; + }; + }; + }; + }; } diff --git a/moduler/programs.nix b/moduler/programs.nix index 57f401e..b2141fc 100644 --- a/moduler/programs.nix +++ b/moduler/programs.nix @@ -30,15 +30,17 @@ discord slack speedcrunch - remmina + # remmina vial via drawio freecad-wayland evince - openboard + jan vlc vscode + spotify + ansible # TUI mpc diff --git a/moduler/programs/confetti/default.nix b/moduler/programs/confetti/default.nix new file mode 100644 index 0000000..3a60bc2 --- /dev/null +++ b/moduler/programs/confetti/default.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +let + confettiListener = pkgs.writeShellScript "confetti-listener" '' + #!/usr/bin/env bash + set -euo pipefail + exec dbus-monitor "interface='org.freedesktop.Notifications'" | \ + while read -r line; do + if echo "$line" | grep -q "confetti"; then + confetti + fi + done + ''; +in { + systemd.user.services.confetti-listener = { + description = "Listen for notifications and trigger confetti"; + after = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + wantedBy = [ "graphical-session.target" ]; + path = with pkgs; [ dbus gnugrep coreutils ]; + serviceConfig = { + ExecStart = "${confettiListener}"; + Restart = "always"; + RestartSec = "1s"; + }; + }; +} diff --git a/moduler/programs/k9s/default.nix b/moduler/programs/k9s/default.nix index 362db7b..f6958cd 100644 --- a/moduler/programs/k9s/default.nix +++ b/moduler/programs/k9s/default.nix @@ -2,19 +2,35 @@ config, inputs, pkgs, + lib, ... }: let in +with lib; { - programs.k9s = { - enable = true; - settings = { - k9s.ui.skin = "catppuccin-latte"; - }; - skins = { - catppuccin-latte = ./latte-transparent.yml; - }; + options = { + k9s = { + enable = mkEnableOption "enable k9s"; + theme = mkOption { + type = types.str; + default = "latte"; + description = "Catppuccin theme variant for k9s."; + }; + }; + }; + + config = mkIf config.k9s.enable { + programs.k9s = { + enable = true; + settings = { + k9s.ui.skin = "catppuccin-${config.k9s.theme}"; + }; + skins = { + catppuccin-latte = ./latte-transparent.yml; + catppuccin-mocha = ./mocha-transparent.yml; + }; + }; }; } diff --git a/moduler/programs/k9s/mocha-transparent.yml b/moduler/programs/k9s/mocha-transparent.yml new file mode 100644 index 0000000..44df98c --- /dev/null +++ b/moduler/programs/k9s/mocha-transparent.yml @@ -0,0 +1,100 @@ +k9s: + body: + fgColor: '#cdd6f4' + bgColor: default + logoColor: '#cba6f7' + prompt: + fgColor: '#cdd6f4' + bgColor: default + suggestColor: '#89b4fa' + help: + fgColor: '#cdd6f4' + bgColor: default + sectionColor: '#a6e3a1' + keyColor: '#89b4fa' + numKeyColor: '#eba0ac' + frame: + title: + fgColor: '#94e2d5' + bgColor: default + highlightColor: '#f5c2e7' + counterColor: '#f9e2af' + filterColor: '#a6e3a1' + border: + fgColor: '#cba6f7' + focusColor: '#b4befe' + menu: + fgColor: '#cdd6f4' + keyColor: '#89b4fa' + numKeyColor: '#eba0ac' + crumbs: + fgColor: '#1e1e2e' + bgColor: default + activeColor: '#f2cdcd' + status: + newColor: '#89b4fa' + modifyColor: '#b4befe' + addColor: '#a6e3a1' + pendingColor: '#fab387' + errorColor: '#f38ba8' + highlightColor: '#89dceb' + killColor: '#cba6f7' + completedColor: '#6c7086' + info: + fgColor: '#fab387' + sectionColor: '#cdd6f4' + views: + table: + fgColor: '#cdd6f4' + bgColor: default + cursorFgColor: '#313244' + cursorBgColor: '#45475a' + markColor: '#f5e0dc' + header: + fgColor: '#f9e2af' + bgColor: default + sorterColor: '#89dceb' + xray: + fgColor: '#cdd6f4' + bgColor: default + cursorColor: '#45475a' + cursorTextColor: '#1e1e2e' + graphicColor: '#f5c2e7' + charts: + bgColor: default + chartBgColor: default + dialBgColor: default + defaultDialColors: + - '#a6e3a1' + - '#f38ba8' + defaultChartColors: + - '#a6e3a1' + - '#f38ba8' + resourceColors: + cpu: + - '#cba6f7' + - '#89b4fa' + mem: + - '#f9e2af' + - '#fab387' + yaml: + keyColor: '#89b4fa' + valueColor: '#cdd6f4' + colonColor: '#a6adc8' + logs: + fgColor: '#cdd6f4' + bgColor: default + indicator: + fgColor: '#b4befe' + bgColor: default + toggleOnColor: '#a6e3a1' + toggleOffColor: '#a6adc8' + dialog: + fgColor: '#f9e2af' + bgColor: default + buttonFgColor: '#1e1e2e' + buttonBgColor: default + buttonFocusFgColor: '#1e1e2e' + buttonFocusBgColor: '#f5c2e7' + labelFgColor: '#f5e0dc' + fieldFgColor: '#cdd6f4' diff --git a/moduler/programs/waybar/default.nix b/moduler/programs/waybar/default.nix index 8527262..b986a7c 100644 --- a/moduler/programs/waybar/default.nix +++ b/moduler/programs/waybar/default.nix @@ -19,6 +19,11 @@ with lib; default = ./waybar.jsonc; description = "The path to the waybar config"; }; + stylePath = lib.mkOption { + type = lib.types.path; + default = ./waybar-latte.css; + description = "The path to the waybar config"; + }; }; }; config = mkIf config.waybar.enable { @@ -31,7 +36,7 @@ with lib; }; }; xdg.configFile."waybar/config.jsonc".source = config.waybar.configPath; - xdg.configFile."waybar/style.css".source = ./waybar-latte.css; + xdg.configFile."waybar/style.css".source = config.waybar.stylePath; }; # catppuccin.waybar = { # enable = true; diff --git a/moduler/programs/waybar/waybar.jsonc b/moduler/programs/waybar/waybar.jsonc index a454e0d..1803f1e 100644 --- a/moduler/programs/waybar/waybar.jsonc +++ b/moduler/programs/waybar/waybar.jsonc @@ -10,12 +10,12 @@ ], "modules-right": [ "mpris", - "bluetooth", "pulseaudio", + "bluetooth", "clock" ], "mpris": { - "player": "Feishin", + // "player": "Feishin", "format": "{player_icon} {title} — {artist}", "format-paused": " {player_icon} {title}", "format-stopped": "", @@ -27,8 +27,7 @@ "interval": 1, "tooltip": true, "tooltip-format": "{player} — {status}\n{artist}\n{title}\n{album}", - // "on-click": "playerctl -p Feishin play-pause", - "on-click": "pgrep playerctl-gtk && pkill playerctl-gtk || playerctl-gtk &", + "on-click": "playerctl play-pause" }, "bluetooth": { "format": " {status}", diff --git a/moduler/services/gotify/default.nix b/moduler/services/gotify/default.nix new file mode 100644 index 0000000..6823d26 --- /dev/null +++ b/moduler/services/gotify/default.nix @@ -0,0 +1,57 @@ +{ + lib, + pkgs, + config, + ... +}: +with lib; +{ + options = { + gotify = { + enable = mkEnableOption "enables gotify"; + port = lib.mkOption { + type = lib.types.int; + default = 8857; + description = "The port gotify listens on."; + }; + host = mkOption { + type = types.str; + defaultText = literalExpression "127.0.0.1"; + description = "The hostname that gotify binds to"; + }; + domain = mkOption { + type = types.str; + defaultText = literalExpression "home.wastring.com"; + description = "The hostname that gotify binds to"; + }; + }; + }; + config = mkMerge [ + (mkIf config.gotify.enable { + sops.secrets.gotify_password = { }; + + services.gotify = { + enable = true; + environmentFiles = [ + config.sops.secrets.gotify_password.path + ]; + environment = { + GOTIFY_DATABASE_DIALECT = "sqlite3"; + GOTIFY_SERVER_PORT = config.gotify.port; + GOTIFY_DEFAULTUSER_NAME = "admin"; + }; + + }; + + services.nginx.virtualHosts.${config.gotify.domain} = { + forceSSL = true; + enableACME = true; + locations."/" = { + proxyPass = "http://${toString config.gotify.host}:${toString config.gotify.port}"; + proxyWebsockets = true; + }; + }; + }) + ]; + +} diff --git a/moduler/services/kanboard/default.nix b/moduler/services/kanboard/default.nix new file mode 100644 index 0000000..cde0419 --- /dev/null +++ b/moduler/services/kanboard/default.nix @@ -0,0 +1,47 @@ +{ + lib, + pkgs, + config, + ... +}: +with lib; +{ + options = { + kanboard = { + enable = mkEnableOption "enables kanboard"; + port = lib.mkOption { + type = lib.types.int; + default = 3128; + description = "The port kanboard listens on."; + }; + host = mkOption { + type = types.str; + defaultText = literalExpression "127.0.0.1"; + description = "The hostname that kanboard binds to"; + }; + domain = mkOption { + type = types.str; + defaultText = literalExpression "home.wastring.com"; + description = "The hostname that kanboard binds to"; + }; + }; + }; + config = mkMerge [ + (mkIf config.kanboard.enable { + services.kanboard = { + enable = true; + domain = config.kanboard.domain; + nginx = null; + }; + services.nginx.virtualHosts.${config.kanboard.domain} = { + forceSSL = true; + enableACME = true; + locations."/" = { + proxyPass = "http://${toString config.kanboard.host}:${toString config.kanboard.port}"; + proxyWebsockets = true; + }; + }; + }) + ]; + +} diff --git a/moduler/system.nix b/moduler/system.nix index 5ece59c..d73d2ff 100644 --- a/moduler/system.nix +++ b/moduler/system.nix @@ -29,7 +29,7 @@ bluez-tools # Zathura - poppler_utils + poppler-utils # Transform imagemagick diff --git a/moduler/wedding.nix b/moduler/wedding.nix index 6c89be8..4f62cb7 100644 --- a/moduler/wedding.nix +++ b/moduler/wedding.nix @@ -18,7 +18,7 @@ in passwordFile = config.sops.secrets.github_password.path; registry = "https://ghcr.io"; }; - image = "ghcr.io/fwastring/wedding:8eed91e3c05fde5f826f25de4c7bccdbc312caef"; + image = "ghcr.io/fwastring/wedding:28ed2ea29640230e3de7bc998c4cdd63e19ae391"; ports = [ "127.0.0.1:8083:8080" ]; }; }; diff --git a/secrets/sops.yaml b/secrets/sops.yaml index 5f67b6a..aaf955a 100644 --- a/secrets/sops.yaml +++ b/secrets/sops.yaml @@ -5,6 +5,7 @@ github_password: ENC[AES256_GCM,data:2Q27cc0cqsWFt/lBNUApWPVRQaXi7uZ3UEn051G/Ar8 smtp_password: ENC[AES256_GCM,data:h1K973qeehIIATdoqFhrLiY7XiU=,iv:ltrsG9KZ8rQuSJXNXswMnbIW/N8+CGbRmiTiENzcGTM=,tag:mD/VpM1FqZaiwksWQpAAog==,type:str] forgejo-admin-password: ENC[AES256_GCM,data:FuDfqjeQ2T5KcOO1BQ==,iv:ueX7XjbiChuwfYm1B/MJvJaYdWbCmoIs91lj9h9uFYE=,tag:qUszDTRZklwSKrS0PpJhTA==,type:str] forgejo-runner-token: ENC[AES256_GCM,data:1AUeTy5Sqoa4u5L/TGjt/v69p2xF/mp0oXVv08TA+squzRVW9/t40xfY2yD8HQ==,iv:uWf9jKIIsajh362vY2NBw8od+iOFGfIQ7NJVFgjWlBw=,tag:hCOzvSKoDbKCGceqNkRx7g==,type:str] +gotify_password: ENC[AES256_GCM,data:Tl9T9yxKSyiemmc5B7kCdwYYHB9anenBg8epFNGqu7sa8YfaZNH9HfTdBtqELIcAkkyfoJUj9tOhxcfa1lDasahJC/8VF0jx6tjsgmTJORAwQa/8,iv:bEtG/ICTqqK3E+YXysDLV/uyawoeILKH+mQXTLOcWpk=,tag:dPqm74eH/Gt9Eg0lv2ptEw==,type:str] sops: age: - recipient: age1jeyw96795qu52swmtkjqgr2w3g4vxc43ckc5r4hlwpje23ptnfwsheah0s @@ -34,7 +35,7 @@ sops: OU8yT0cvcnZMMXphMFVHSXpHNjc4dEkKyXiwholsJthB9O7onb0buF6qHNVNZA3s A2+HSl5P0HCyaZhDIDBFdaUL2r0CHKOPCN3Lrd5+Rirnx48RnDxwBA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-09-23T11:59:25Z" - mac: ENC[AES256_GCM,data:AND2KnSFn0pgZZ4rT6Vt8sF8IFoysn77JKkiA0c829op3LKZe9NjT0O+PkZegOTlJbqKGyScSNqPidEoVpACAbODd3jtos80AO/LbWHgKo7DUuuPsnB7MgDqFF/khvdQQrvOIVoS0JmDScMnPfzZYYn79dilWuSdUcy0AvCdxPk=,iv:tUG1vtt4hHgHByH8IF9snth34MqesgHQmX6J8QH7vns=,tag:QcUXbmS+8+INuGONOzXL4A==,type:str] + lastmodified: "2025-10-18T13:28:36Z" + mac: ENC[AES256_GCM,data:EaPrjK/m7g+8Vu6vDEzE5nObAWmMXwDEarFEiaoEXh4/tBcAjdhNaYPpGUhfh0NSppTFbkr2ZZKm+m9rTO1J8IeBZMC0FfcFu+34Mz1sL6mozBZX8nynIW3V9bbPKaq2mPd4To1HmphdIpRj72xzYzIzL5fJQxmT8Q4hI6qa5wk=,iv:PvMl479LK7v5hKJ5Ho/kPyajQ/49H+8UqVTre48NxqU=,tag:IE9QCsnhmzamkgX21OCLFA==,type:str] unencrypted_suffix: _unencrypted - version: 3.10.2 + version: 3.11.0 diff --git a/wallpapers/flake.lock b/wallpapers/flake.lock new file mode 100644 index 0000000..1f39180 --- /dev/null +++ b/wallpapers/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1761373498, + "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/wallpapers/flake.nix b/wallpapers/flake.nix new file mode 100644 index 0000000..101b5c8 --- /dev/null +++ b/wallpapers/flake.nix @@ -0,0 +1,46 @@ +{ + description = "Dev env for Catppuccin Mocha LUT: ImageMagick + Python (Pillow) with a generator tool"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + + # Python environment with Pillow + pythonEnv = pkgs.python3.withPackages (ps: [ ps.pillow ]); + + # Small helper that writes the LUT (256x1), a preview, and a palette.txt + + in { + # `nix develop` (or `nix-shell` via legacy) drops you into this environment + devShells.default = pkgs.mkShell { + packages = [ + # ImageMagick: on most channels this provides `magick` (v7). If not, you'll have `convert`. + pkgs.imagemagick + pythonEnv + ]; + shellHook = '' + echo + echo "Catppuccin Mocha dev shell ready." + echo "Generate assets into current dir:" + echo " make-mocha-assets ." + echo + ''; + }; + + # So you can also `nix run .` to execute the generator + + apps.default = { + type = "app"; + }; + + formatter = pkgs.nixpkgs-fmt; + } + ); +} + diff --git a/wallpapers/mocha.py b/wallpapers/mocha.py new file mode 100644 index 0000000..33400b8 --- /dev/null +++ b/wallpapers/mocha.py @@ -0,0 +1,22 @@ +from PIL import Image +import numpy as np + +stops = [ + "#1e1e2e", "#eba0ac", "#f38ba8", "#fab387", "#f9e2af", + "#a6e3a1", "#94e2d5", "#89dceb", "#74c7ec", "#89b4fa", + "#b4befe", "#cdd6f4" +] + +def hex_to_rgb(h): return tuple(int(h[i:i+2], 16) for i in (1,3,5)) +width, height = 256, 1 +lut = Image.new("RGB", (width, height)) +pixels = lut.load() +n = len(stops) - 1 +seg = width / n +for x in range(width): + i = min(int(x / seg), n-1) + t = (x - i * seg) / seg + c0, c1 = np.array(hex_to_rgb(stops[i])), np.array(hex_to_rgb(stops[i+1])) + pixels[x,0] = tuple(np.round((1-t)*c0 + t*c1).astype(int)) +lut.save("catppuccin_mocha_lut.png") + diff --git a/wallpapers/tux.catppuccin-mocha.jpg b/wallpapers/tux.catppuccin-mocha.jpg new file mode 100644 index 0000000..0480fc0 Binary files /dev/null and b/wallpapers/tux.catppuccin-mocha.jpg differ diff --git a/wallpapers/tux.jpg b/wallpapers/tux.jpg new file mode 100644 index 0000000..eaa8a96 Binary files /dev/null and b/wallpapers/tux.jpg differ