diff --git a/flake.lock b/flake.lock index 1878beb8..6f517bd2 100644 --- a/flake.lock +++ b/flake.lock @@ -208,6 +208,21 @@ "type": "github" } }, + "impermanence": { + "locked": { + "lastModified": 1737831083, + "narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=", + "owner": "nix-community", + "repo": "impermanence", + "rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "impermanence", + "type": "github" + } + }, "kmonad": { "inputs": { "nixpkgs": [ @@ -450,26 +465,12 @@ "type": "github" } }, - "quadlet": { - "locked": { - "lastModified": 1752618481, - "narHash": "sha256-8132xTqalZxJZbznHDNoia1UqjNdL/hIQD4IXnI9F58=", - "owner": "SEIAROTg", - "repo": "quadlet-nix", - "rev": "0c1d64f360c1a3c3534f6b592ca3ed5d46cf8429", - "type": "github" - }, - "original": { - "owner": "SEIAROTg", - "repo": "quadlet-nix", - "type": "github" - } - }, "root": { "inputs": { "csharp-language-server": "csharp-language-server", "helix": "helix", "home-manager": "home-manager", + "impermanence": "impermanence", "kmonad": "kmonad", "lanzaboote": "lanzaboote", "lix-module": "lix-module", @@ -479,7 +480,7 @@ "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_2", "nixpkgs-master": "nixpkgs-master", - "quadlet": "quadlet", + "sops-nix": "sops-nix", "zen-browser": "zen-browser" } }, @@ -546,6 +547,26 @@ "type": "github" } }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1752544651, + "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "2c8def626f54708a9c38a5861866660395bb3461", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, diff --git a/flake.nix b/flake.nix index 345e933f..88cac688 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,9 @@ home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; - quadlet.url = "github:SEIAROTg/quadlet-nix"; + sops-nix.url = "github:Mic92/sops-nix"; + sops-nix.inputs.nixpkgs.follows = "nixpkgs"; + impermanence.url = "github:nix-community/impermanence"; # software lanzaboote = { @@ -58,26 +60,30 @@ }; } ); - overlays = [ self.overlays.default - # lix-module.overlays.default - (final: prev: let - versionSuffix = "-horribly-patched"; - lix = final.applyPatches { - name = "lix${versionSuffix}"; - src = inputs.lix-module.inputs.lix; - patches = [ - (final.fetchpatch { - name = "lix-2.93-structuredAttrs.patch"; - url = "https://gerrit.lix.systems/changes/lix~3668/revisions/2/patch?download&raw"; - hash = "sha256-JQlAU0texMa7DMrqk447SXJUEu1k4IP9z8mjCHyskVc="; - }) - ]; - }; - patchedOverlay = import (inputs.lix-module + "/overlay.nix") { - inherit versionSuffix lix; - }; - in - patchedOverlay final prev) + overlays = [ + self.overlays.default + # lix-module.overlays.default + ( + final: prev: + let + versionSuffix = "-horribly-patched"; + lix = final.applyPatches { + name = "lix${versionSuffix}"; + src = inputs.lix-module.inputs.lix; + patches = [ + (final.fetchpatch { + name = "lix-2.93-structuredAttrs.patch"; + url = "https://gerrit.lix.systems/changes/lix~3668/revisions/2/patch?download&raw"; + hash = "sha256-JQlAU0texMa7DMrqk447SXJUEu1k4IP9z8mjCHyskVc="; + }) + ]; + }; + patchedOverlay = import (inputs.lix-module + "/overlay.nix") { + inherit versionSuffix lix; + }; + in + patchedOverlay final prev + ) ]; genPkgs = system: @@ -99,7 +105,7 @@ inputs.kmonad.nixosModules.default inputs.home-manager.nixosModules.default inputs.lanzaboote.nixosModules.lanzaboote - inputs.quadlet.nixosModules.quadlet + inputs.sops-nix.nixosModules.sops ] ++ (import ./modules/module-list.nix) ); @@ -111,7 +117,10 @@ packages = [ pkgs.nixfmt-rfc-style pkgs.nil + pkgs.sops + pkgs.ssh-to-age ]; + SOPS_AGE_KEY_CMD = ""; }; }; } diff --git a/instances/ds9/default.nix b/instances/ds9/default.nix index 198ddfdf..35058e0f 100644 --- a/instances/ds9/default.nix +++ b/instances/ds9/default.nix @@ -2,4 +2,7 @@ modules = [ ./configuration.nix ]; system = "x86_64-linux"; hostName = "ds9"; + publicHostname = "ds9.hailsatan.eu"; + wgPubKey = ""; + wgServer = true; } diff --git a/lib/default.nix b/lib/default.nix index b8c8f172..eb53e869 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -11,11 +11,12 @@ rec { lib.mapAttrs (n: v: (import "${parentDir}/${n}")) ( lib.filterAttrs (n: v: v == "directory") (builtins.readDir parentDir) ); - loadInstances = dir: extraModules: lib.mapAttrs (n: v: loadInstance extraModules v) (getDirs dir); + loadInstances = + dir: extraModules: lib.mapAttrs (n: v: loadInstance extraModules v (getDirs dir)) (getDirs dir); loadInstance = - extraModules: instance: + extraModules: instance: instanceConfigs: nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; + specialArgs = { inherit inputs instanceConfigs; instanceConfig = instance; }; modules = instance.modules ++ extraModules diff --git a/modules/desktop/wpaperd.nix b/modules/desktop/wpaperd.nix index 4c9059e1..fe103136 100644 --- a/modules/desktop/wpaperd.nix +++ b/modules/desktop/wpaperd.nix @@ -6,34 +6,71 @@ }: let cfg = config.xyno.desktop.wpaperd; - wpaperdConf = pkgs.writeText "wpaperd.conf" '' - [default] - path = "/home/${config.xyno.system.user.name}/Pictures/backgrounds" - duration = "10m" - sorting = "random" - mode = "center" - ''; + # wpaperdConf = pkgs.writeText "wpaperd.conf" '' + # [default] + # path = "/home/${config.xyno.system.user.name}/Pictures/backgrounds" + # duration = "10m" + # sorting = "random" + # mode = "center" + # ''; in { - options.xyno.desktop.wpaperd.enable = lib.mkEnableOption "enable wpaperd notification daemon"; + options.xyno.desktop.wpaperd.enable = lib.mkEnableOption "enable wpaperd wallpaper daemon"; options.xyno.desktop.wpaperd.wantedBy = lib.mkOption { type = lib.types.str; default = "niri.service"; }; options.xyno.desktop.wpaperd.package = lib.mkOption { type = lib.types.package; - default = pkgs.wpaperd; + default = pkgs.swww; }; config = lib.mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; - systemd.user.services.wpaperd = { + systemd.user.services.swww-daemon = { unitConfig.PartOf = "graphical-session.target"; unitConfig.After = "graphical-session.target"; unitConfig.Requisite = "graphical-session.target"; serviceConfig.Restart = "on-failure"; wantedBy = [ cfg.wantedBy ]; - script = "exec ${cfg.package}/bin/wpaperd -c ${wpaperdConf}"; - restartTriggers = [wpaperdConf]; + script = '' + exec ${cfg.package}/bin/swww-daemon''; + }; + systemd.user.services.swww-randomize = { + unitConfig.PartOf = "graphical-session.target"; + unitConfig.After = "graphical-session.target"; + unitConfig.Requisite = "graphical-session.target"; + serviceConfig.Restart = "on-failure"; + wantedBy = [ "swww-daemon.service" ]; + script = '' + export DEFAULT_INTERVAL=300 # In seconds + export DIR=''$HOME/Pictures/backgrounds + + # See swww-img(1) + RESIZE_TYPE="crop" + export SWWW_TRANSITION_FPS="120" + export SWWW_TRANSITION="fade" + export SWWW_TRANSITION_DURATION="1" + # export SWWW_TRANSITION_STEP="90" + + while true; do + find "''$DIR" -type f \ + | while read -r img; do + echo "''$(