From 8a23a33c528aad289a039008774d314c9c0994e6 Mon Sep 17 00:00:00 2001 From: Tristan Druyen Date: Tue, 19 Sep 2023 15:14:49 +0200 Subject: [PATCH] Add some style - Update flakes - Add set-background service which sets background image to ~/.background if it exists - Add .background to home.nix --- configuration.nix | 37 +++++++++++ flake.lock | 152 +++++++++++++++++++++++++++++++++++++++++----- flake.nix | 41 ++++++------- home.nix | 11 +++- users.nix | 2 + 5 files changed, 205 insertions(+), 38 deletions(-) diff --git a/configuration.nix b/configuration.nix index fa95fdf..7f16761 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,12 +1,47 @@ { config, pkgs, + inputs, ... }: { imports = [ ./hardware.nix ]; + systemd.user.services.set-wallpaper = { + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = "yes"; + }; + script = '' + FILE="$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" + IMAGE_PATH="$HOME/.background" + + if [[ ! -f "$IMAGE_PATH" ]]; then + echo "Image not found at $IMAGE_PATH. Skipping setting the image." + exit 0 + fi + + # Extract all containment numbers + CONTAINMENTS=$(${pkgs.ripgrep}/bin/rg "\[Containments\]\[(\d+)\]" -o ~/.config/plasma-org.kde.plasma.desktop-appletsrc -r \$1 | sort | uniq) + + for CONTAINMENT in $CONTAINMENTS; do + echo Containment: $CONTAINMENT + ${pkgs.libsForQt5.kconfig}/bin/kwriteconfig5 \ + --file $FILE \ + --group Containments --group $CONTAINMENT \ + --key "wallpaperplugin" "org.kde.image"; + + ${pkgs.libsForQt5.kconfig}/bin/kwriteconfig5 \ + --file $FILE \ + --group Containments --group $CONTAINMENT \ + --group Wallpaper --group org.kde.image \ + --group General \ + --key Image "$IMAGE_PATH"; + done + ''; + }; + nix = { package = pkgs.nixFlakes; extraOptions = '' @@ -14,6 +49,8 @@ ''; }; + boot.plymouth.enable = true; + fonts.fonts = with pkgs; [ emacs-all-the-icons-fonts noto-fonts diff --git a/flake.lock b/flake.lock index 13c9bda..c9fdcdb 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1695000028, - "narHash": "sha256-PAZl5eDhj44b7+1JOdT+BGGK1UsCHWKG+v8tw/Gmy34=", + "lastModified": 1695039393, + "narHash": "sha256-HXvRPTSfQ/fCqxYGvWOc1duSBdXcQlrYvyno8YZbyHI=", "owner": "nix-community", "repo": "disko", - "rev": "7548ad94698adb90ee17ff62581f2b2457faaedd", + "rev": "9f29cedac79d0acf07b6341f9112f46dec3abb8f", "type": "github" }, "original": { @@ -29,11 +29,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1694716032, - "narHash": "sha256-PQbomjq3tZ7WYAbbM1NO6RMoPbnEbSCVnBhvD4+rgog=", + "lastModified": 1695092339, + "narHash": "sha256-sNzTBI6wqcS4OvxhoICjcNfIFdL/E1JEAYluSPmkI3E=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "918199aeaa2c9b9d0f73e304a187a05b99fd9050", + "rev": "56689381ea01e234a5ac331227002fbf22b794f3", "type": "github" }, "original": { @@ -58,6 +58,22 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -76,6 +92,43 @@ "type": "github" } }, + "flake-utils_2": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nix-wallpaper", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -83,11 +136,11 @@ ] }, "locked": { - "lastModified": 1694465129, - "narHash": "sha256-8BQiuobMrCfCbGM7w6Snx+OBYdtTIm0+cGVaKwQ5BFg=", + "lastModified": 1695108154, + "narHash": "sha256-gSg7UTVtls2yO9lKtP0yb66XBHT1Fx5qZSZbGMpSn2c=", "owner": "nix-community", "repo": "home-manager", - "rev": "9787dffff5d315c9593d3f9fb0f9bf2097e1b57b", + "rev": "07682fff75d41f18327a871088d20af2710d4744", "type": "github" }, "original": { @@ -97,6 +150,28 @@ "type": "github" } }, + "nix-wallpaper": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1682599883, + "narHash": "sha256-3RLfNhq8decb2VOTJLboloPX1M7Rwy3iGZL4DV7aLd0=", + "owner": "lunik1", + "repo": "nix-wallpaper", + "rev": "e1dfc3e671f9af843721c32ed7c08ea9966426c6", + "type": "github" + }, + "original": { + "owner": "lunik1", + "repo": "nix-wallpaper", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1694937365, @@ -115,11 +190,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1694499547, - "narHash": "sha256-R7xMz1Iia6JthWRHDn36s/E248WB1/je62ovC/dUVKI=", + "lastModified": 1694937365, + "narHash": "sha256-iHZSGrb9gVpZRR4B2ishUN/1LRKWtSHZNO37C8z1SmA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5f018cf150e29aac26c61dac0790ea023c46b24", + "rev": "5d017a8822e0907fb96f7700a319f9fe2434de02", "type": "github" }, "original": { @@ -129,6 +204,22 @@ "type": "github" } }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1673800717, + "narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1679318992, @@ -147,11 +238,11 @@ }, "nur": { "locked": { - "lastModified": 1695076089, - "narHash": "sha256-OcCwDYZYErSz8QCtLvqMQkJufByS4r74SCTL9N3YGBk=", + "lastModified": 1695110420, + "narHash": "sha256-tZRgkZwU8wArD8oFsEQ5hjLfkcny7Cvr7KuGlfKXdW8=", "owner": "nix-community", "repo": "NUR", - "rev": "1152aa48c3e88af00f2a3b2ff8af9d3c14cf5d72", + "rev": "ada2638fdfdbd642fef6a87381a2c6acc8850b85", "type": "github" }, "original": { @@ -160,11 +251,40 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": [ + "nix-wallpaper", + "flake-utils" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "nix-wallpaper", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_2" + }, + "locked": { + "lastModified": 1675337566, + "narHash": "sha256-jmLBTQcs1jFOn8h1Q5b5XwPfYgFOtcZ3+mU9KvfC6Js=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "5668d079583a5b594cb4e0cc0e6d84f1b93da7ae", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "disko": "disko", "emacs-overlay": "emacs-overlay", "home-manager": "home-manager", + "nix-wallpaper": "nix-wallpaper", "nixpkgs": "nixpkgs", "nur": "nur", "tuxedo-nixos": "tuxedo-nixos" @@ -187,7 +307,7 @@ }, "tuxedo-nixos": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "nixpkgs": "nixpkgs_2" }, "locked": { diff --git a/flake.nix b/flake.nix index 031532b..a4126a3 100644 --- a/flake.nix +++ b/flake.nix @@ -24,42 +24,39 @@ url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; + nix-wallpaper = { + url = "github:lunik1/nix-wallpaper"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { - self, - home-manager, - nixpkgs, - tuxedo-nixos, - emacs-overlay, - disko, - nur, - }: let + outputs = inputs: let system = "x86_64-linux"; - customPkgs = import nixpkgs { + customPkgs = import inputs.nixpkgs { system = "${system}"; - overlays = [emacs-overlay.overlay]; + overlays = [inputs.emacs-overlay.overlay]; config = { allowUnfree = true; }; }; - pkgs = nixpkgs.legacyPackages.${system}; + pkgs = inputs.nixpkgs.legacyPackages.${system}; in { formatter = { - x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra; + x86_64-linux = inputs.nixpkgs.legacyPackages.x86_64-linux.alejandra; }; diskoConfigurations = { nixos-pulse = import ./disko.nix; }; homeConfigurations = { - "tristand" = home-manager.lib.homeManagerConfiguration { + "tristand" = inputs.home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = [ ./home.nix - nur.hmModules.nur + inputs.nur.hmModules.nur { _module.args.customPkgs = customPkgs; + _module.args.inputs = inputs; # inherit customPkgs; # pkgs.pkgs = customPkgs; # home-manager.useUserPackages = true; @@ -69,23 +66,25 @@ }; }; nixosConfigurations = { - nixos-pulse = nixpkgs.lib.nixosSystem { + nixos-pulse = inputs.nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./configuration.nix ./users.nix ./disko.nix - disko.nixosModules.disko - home-manager.nixosModules.home-manager - tuxedo-nixos.nixosModules.default - nur.nixosModules.nur + inputs.disko.nixosModules.disko + inputs.home-manager.nixosModules.home-manager + inputs.tuxedo-nixos.nixosModules.default + inputs.nur.nixosModules.nur { _module.args.customPkgs = customPkgs; + # _module.args.nix-wallpaper = nix-wallpaper; + _module.args.inputs = inputs; nixpkgs.pkgs = customPkgs; home-manager.useUserPackages = true; home-manager.useGlobalPkgs = true; hardware.tuxedo-control-center.enable = true; - hardware.tuxedo-control-center.package = tuxedo-nixos.packages.x86_64-linux.default; + hardware.tuxedo-control-center.package = inputs.tuxedo-nixos.packages.x86_64-linux.default; } ]; }; diff --git a/home.nix b/home.nix index 3d52683..0f281de 100644 --- a/home.nix +++ b/home.nix @@ -2,8 +2,15 @@ pkgs, customPkgs, config, + inputs, ... -}: { +}: let + wallpaper = inputs.nix-wallpaper.packages.${pkgs.system}.default.override { + logoSize = 24; + preset = "gruvbox-dark-rainbow"; + }; + wallpaperPath = "${wallpaper}/share/wallpapers/nixos-wallpaper.png"; +in { dconf.settings = { "org/virt-manager/virt-manager/connections" = { autoconnect = ["qemu:///system"]; @@ -293,6 +300,8 @@ home.username = "tristand"; home.homeDirectory = "/home/tristand"; + home.file.".background".source = wallpaperPath; + home.packages = with pkgs; [ alejandra atool diff --git a/users.nix b/users.nix index 2a204e5..617c246 100644 --- a/users.nix +++ b/users.nix @@ -2,6 +2,7 @@ pkgs, config, customPkgs, + inputs, ... }: { users.users.tristand = { @@ -17,5 +18,6 @@ inherit pkgs; inherit config; inherit customPkgs; + inherit inputs; }; }