diff options
| author | Miran Bastaja <miran.bastaja04@gmail.com> | 2024-07-06 06:48:40 +0200 |
|---|---|---|
| committer | Miran Bastaja <miran.bastaja04@gmail.com> | 2024-07-06 06:48:40 +0200 |
| commit | c97a1d66084aaf50ca816d9c482f296d31346f9f (patch) | |
| tree | d03726dfb1edfa87b93ca42b9076658c7c50c940 /share | |
| parent | fed01b401d65e655f565fc5c6304f2ab0d758513 (diff) | |
formatting
Diffstat (limited to 'share')
| -rw-r--r-- | share/cfg/default.nix | 3 | ||||
| -rw-r--r-- | share/cfg/firefox/default.nix | 41 | ||||
| -rw-r--r-- | share/cfg/fish.nix | 3 | ||||
| -rw-r--r-- | share/cfg/gallery-dl.nix | 35 | ||||
| -rw-r--r-- | share/cfg/git.nix | 3 | ||||
| -rw-r--r-- | share/cfg/helix.nix | 37 | ||||
| -rw-r--r-- | share/cfg/hyprland.nix | 25 | ||||
| -rw-r--r-- | share/cfg/kitty.nix | 7 | ||||
| -rw-r--r-- | share/cfg/mpv.nix | 3 | ||||
| -rw-r--r-- | share/cfg/shellenv.nix | 9 | ||||
| -rw-r--r-- | share/cfg/tofi.nix | 3 | ||||
| -rw-r--r-- | share/cfg/waybar.nix | 30 | ||||
| -rw-r--r-- | share/cfg/wpaperd.nix | 6 | ||||
| -rw-r--r-- | share/hm-modules/default.nix | 8 | ||||
| -rw-r--r-- | share/hm-modules/hyprdesktop.nix | 78 | ||||
| -rw-r--r-- | share/hm-modules/wpaperd.nix | 14 | ||||
| -rw-r--r-- | share/home/minimal.nix | 3 | ||||
| -rw-r--r-- | share/nixos-modules/iwd-ext.nix | 29 | ||||
| -rw-r--r-- | share/system/client-common.nix | 25 | ||||
| -rw-r--r-- | share/system/common.nix | 8 | ||||
| -rw-r--r-- | share/system/spotifyd.nix | 6 | ||||
| -rw-r--r-- | share/system/steam.nix | 12 | ||||
| -rw-r--r-- | share/system/virt.nix | 18 |
23 files changed, 284 insertions, 122 deletions
diff --git a/share/cfg/default.nix b/share/cfg/default.nix index 9a6407d..ed290a7 100644 --- a/share/cfg/default.nix +++ b/share/cfg/default.nix @@ -1,4 +1,5 @@ -{ ... }: { +{ ... }: +{ imports = [ ../hm-modules diff --git a/share/cfg/firefox/default.nix b/share/cfg/firefox/default.nix index 5590d5d..9c486e4 100644 --- a/share/cfg/firefox/default.nix +++ b/share/cfg/firefox/default.nix @@ -1,10 +1,10 @@ { pkgs, ... }: let # Concatenate all files in the `./usercss` directory into one string - css-files = - map (n: ./usercss/${n}) (builtins.attrNames (builtins.readDir ./usercss)); + css-files = map (n: ./usercss/${n}) (builtins.attrNames (builtins.readDir ./usercss)); userChrome = builtins.concatStringsSep "\n" (map builtins.readFile css-files); -in { +in +{ home.sessionVariables.BROWSER = "firefox"; programs.firefox = { @@ -18,29 +18,28 @@ in { default = "DuckDuckGo"; engines = { "Nix Packages" = { - urls = [{ - template = "https://search.nixos.org/packages"; - params = [ - { - name = "type"; - value = "packages"; - } - { - name = "query"; - value = "{searchTerms}"; - } - ]; - }]; + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + } + ]; - icon = - "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; definedAliases = [ "@np" ]; }; "NixOS Wiki" = { - urls = [{ - template = "https://nixos.wiki/index.php?search={searchTerms}"; - }]; + urls = [ { template = "https://nixos.wiki/index.php?search={searchTerms}"; } ]; iconUpdateURL = "https://nixos.wiki/favicon.png"; updateInterval = 24 * 60 * 60 * 1000; # every day definedAliases = [ "@nw" ]; diff --git a/share/cfg/fish.nix b/share/cfg/fish.nix index d697942..62cb6ee 100644 --- a/share/cfg/fish.nix +++ b/share/cfg/fish.nix @@ -1,4 +1,5 @@ -{ ... }: { +{ ... }: +{ imports = [ ./shellenv.nix ]; programs.starship.enableFishIntegration = true; diff --git a/share/cfg/gallery-dl.nix b/share/cfg/gallery-dl.nix index 802141f..3ee065b 100644 --- a/share/cfg/gallery-dl.nix +++ b/share/cfg/gallery-dl.nix @@ -1,4 +1,5 @@ -{ config, ... }: { +{ config, ... }: +{ programs.gallery-dl = { settings.extractor = { base-directory = "${config.xdg.userDirs.download}/gallery-dl"; @@ -7,15 +8,24 @@ { name = "metadata"; mode = "json"; - whitelist = - [ "danbooru" "moebooru" "gelbooru" "sankaku" "nhentai" "rule34" ]; + whitelist = [ + "danbooru" + "moebooru" + "gelbooru" + "sankaku" + "nhentai" + "rule34" + ]; } { name = "zip"; compression = "store"; extension = "cbz"; filter = "extension not in ('zip', 'rar')"; - whitelist = [ "nhentai" "mangadex" ]; + whitelist = [ + "nhentai" + "mangadex" + ]; } ]; @@ -24,14 +34,21 @@ reddit = { archive-format = "s_{subreddit}{filename}"; directory = { - "locals().get('is_gallery')" = - [ "Reddit" "S" "{subreddit!C}" "{title[:120]!t:?/_/R /_/}{id}" ]; - "" = [ "Reddit" "S" "{subreddit!C}" ]; + "locals().get('is_gallery')" = [ + "Reddit" + "S" + "{subreddit!C}" + "{title[:120]!t:?/_/R /_/}{id}" + ]; + "" = [ + "Reddit" + "S" + "{subreddit!C}" + ]; }; filename = { - "locals().get('is_gallery')" = - "{title[:120]!t:?/_/R /_/}{id}{num:?_//>02}.{extension}"; + "locals().get('is_gallery')" = "{title[:120]!t:?/_/R /_/}{id}{num:?_//>02}.{extension}"; "" = "{title[:120]!t:?/_/R /_/}{id}.{extension}"; }; }; diff --git a/share/cfg/git.nix b/share/cfg/git.nix index 67170a0..eb05865 100644 --- a/share/cfg/git.nix +++ b/share/cfg/git.nix @@ -1,4 +1,5 @@ -{ ... }: { +{ ... }: +{ programs.git = { userEmail = "miran.bastaja04@gmail.com"; userName = "Miran Bastaja"; diff --git a/share/cfg/helix.nix b/share/cfg/helix.nix index 78c22fe..dd99557 100644 --- a/share/cfg/helix.nix +++ b/share/cfg/helix.nix @@ -1,9 +1,11 @@ { -# inputs, -pkgs, -# config, -# lib, -... }: { + # inputs, + pkgs, + # config, + # lib, + ... +}: +{ programs.helix = { defaultEditor = true; extraPackages = with pkgs; [ @@ -64,8 +66,7 @@ pkgs, command = "astro-ls"; args = [ "--stdio" ]; config = { - typescript.tsdk = - "${pkgs.typescript}/lib/node_modules/typescript/lib"; + typescript.tsdk = "${pkgs.typescript}/lib/node_modules/typescript/lib"; environment = "node"; }; # language-server.snippets-html = { @@ -96,8 +97,14 @@ pkgs, scope = "source.astro"; injection-regex = "astro"; file-types = [ "astro" ]; - roots = [ "package.json" "astro.config.mjs" ]; - language-servers = [ "astro-ls" "emmet-ls" ]; + roots = [ + "package.json" + "astro.config.mjs" + ]; + language-servers = [ + "astro-ls" + "emmet-ls" + ]; auto-format = true; } { @@ -124,14 +131,22 @@ pkgs, { name = "typescript"; shebangs = [ "deno" ]; - roots = [ "deno.json" "deno.jsonc" "package.json" ]; + roots = [ + "deno.json" + "deno.jsonc" + "package.json" + ]; auto-format = true; language-servers = [ "deno-lsp" ]; } ]; }; # end of languages - ignores = [ "*.lock" "!.gitignore" "!.cargo" ]; + ignores = [ + "*.lock" + "!.gitignore" + "!.cargo" + ]; }; # end of programs.helix # xdg.configFile = { diff --git a/share/cfg/hyprland.nix b/share/cfg/hyprland.nix index 629f105..b9353ef 100644 --- a/share/cfg/hyprland.nix +++ b/share/cfg/hyprland.nix @@ -17,7 +17,8 @@ let }; terminal = "kitty"; }; -in { +in +{ wayland.windowManager.hyprland = { extraConfig = '' $mod = SUPER @@ -35,12 +36,22 @@ in { # workspaces # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} - ${builtins.concatStringsSep "\n" (builtins.genList (x: - let ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); - in '' - bind = $mod, ${ws}, workspace, ${toString (x + 1)} - bind = $mod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)} - '') 10)} + ${builtins.concatStringsSep "\n" ( + builtins.genList ( + x: + let + ws = + let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in + '' + bind = $mod, ${ws}, workspace, ${toString (x + 1)} + bind = $mod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)} + '' + ) 10 + )} bind = $mod SHIFT, C, killactive bind = $mod SHIFT, F, togglefloating diff --git a/share/cfg/kitty.nix b/share/cfg/kitty.nix index a28091b..9cf33f8 100644 --- a/share/cfg/kitty.nix +++ b/share/cfg/kitty.nix @@ -1,4 +1,5 @@ -{ pkgs, ... }: { +{ pkgs, ... }: +{ programs.kitty = { theme = "Mayukai"; @@ -24,5 +25,7 @@ }; }; - home.shellAliases = { s = "kitty +kitten ssh"; }; + home.shellAliases = { + s = "kitty +kitten ssh"; + }; } diff --git a/share/cfg/mpv.nix b/share/cfg/mpv.nix index 427ed33..f86da15 100644 --- a/share/cfg/mpv.nix +++ b/share/cfg/mpv.nix @@ -1,4 +1,5 @@ -{ config, ... }: { +{ config, ... }: +{ programs.mpv = { config = { # The format is '<Filename without extension> [<screenshot number>].<ext>' diff --git a/share/cfg/shellenv.nix b/share/cfg/shellenv.nix index 16b28ac..0b1e7d6 100644 --- a/share/cfg/shellenv.nix +++ b/share/cfg/shellenv.nix @@ -1,11 +1,16 @@ -{ ... }: { +{ ... }: +{ home.shellAliases = { ltg = "ls --git --tree"; ltgi = "ltg --git-ignore"; }; programs.eza = { icons = true; - extraOptions = [ "--header" "--group-directories-first" "--long" ]; + extraOptions = [ + "--header" + "--group-directories-first" + "--long" + ]; }; programs.starship = { diff --git a/share/cfg/tofi.nix b/share/cfg/tofi.nix index 998b6dc..433a911 100644 --- a/share/cfg/tofi.nix +++ b/share/cfg/tofi.nix @@ -1,4 +1,5 @@ -{ lib, config, ... }: { +{ lib, config, ... }: +{ # Tofi's cache seems to get messed up sometimes, so we regenerate it when # building the system. # https://github.com/philj56/tofi/issues/115#issuecomment-1701748297 diff --git a/share/cfg/waybar.nix b/share/cfg/waybar.nix index 892850a..bd6cc96 100644 --- a/share/cfg/waybar.nix +++ b/share/cfg/waybar.nix @@ -1,4 +1,5 @@ -{ lib, ... }: { +{ lib, ... }: +{ programs.waybar = { systemd = { enable = true; @@ -24,15 +25,34 @@ ]; # TODO: fix clock format - clock = { format = "{:%H:%M}"; }; + clock = { + format = "{:%H:%M}"; + }; "battery#capacity" = { - format = lib.concatStringsSep "\n" [ "{icon}" "{capacity}%" ]; - format-icons = [ "" "" "" "" "" "" "" "" "" "" ]; + format = lib.concatStringsSep "\n" [ + "{icon}" + "{capacity}%" + ]; + format-icons = [ + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + ]; }; "battery#power" = { - format = lib.concatStringsSep "\n" [ "" "{power:4.1f}W" ]; + format = lib.concatStringsSep "\n" [ + "" + "{power:4.1f}W" + ]; interval = 1; }; diff --git a/share/cfg/wpaperd.nix b/share/cfg/wpaperd.nix index f5e58b4..3760caf 100644 --- a/share/cfg/wpaperd.nix +++ b/share/cfg/wpaperd.nix @@ -2,8 +2,10 @@ # /share/hm-modules/wpaperd.nix. In order to use this config you have to also # import that module. { config, ... }: -let wallpapers-dir = "${config.xdg.userDirs.pictures}/Wallpapers"; -in { +let + wallpapers-dir = "${config.xdg.userDirs.pictures}/Wallpapers"; +in +{ services.wpaperd = { settings.default = { path = wallpapers-dir; diff --git a/share/hm-modules/default.nix b/share/hm-modules/default.nix index e20d424..c4ddc87 100644 --- a/share/hm-modules/default.nix +++ b/share/hm-modules/default.nix @@ -1 +1,7 @@ -{ ... }: { imports = [ ./hyprdesktop.nix ./wpaperd.nix ]; } +{ ... }: +{ + imports = [ + ./hyprdesktop.nix + ./wpaperd.nix + ]; +} diff --git a/share/hm-modules/hyprdesktop.nix b/share/hm-modules/hyprdesktop.nix index a9f2ed4..20e52ab 100644 --- a/share/hm-modules/hyprdesktop.nix +++ b/share/hm-modules/hyprdesktop.nix @@ -1,8 +1,21 @@ -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: let - inherit (lib) mkIf mkOption mkEnableOption types mdDoc lists; + inherit (lib) + mkIf + mkOption + mkEnableOption + types + mdDoc + lists + ; cfg = config.custom.hyprdesktop; -in { +in +{ imports = [ ../home/minimal.nix ]; options.custom.hyprdesktop = { @@ -49,7 +62,8 @@ in { config = mkIf cfg.enable { wayland.windowManager.hyprland.enable = true; - home.packages = with pkgs; + home.packages = + with pkgs; [ xh # Nice to use HTTP client bc # CLI calculator @@ -107,20 +121,28 @@ in { # Flat-Remix icon themes don't contain all the icons that Foliate uses, # so I'm bringing in the adwaita icons as a fallback. gnome3.adwaita-icon-theme - ] ++ lists.optionals cfg.hasBluetooth [ overskride ] + ] + ++ lists.optionals cfg.hasBluetooth [ overskride ] ++ lists.optionals cfg.enableGaming [ jdk17_headless superTuxKart wineWowPackages.full winetricks - ] ++ lists.optionals (cfg.enableWindowsCompat || cfg.enableGaming) [ + ] + ++ lists.optionals (cfg.enableWindowsCompat || cfg.enableGaming) [ wineWowPackages.full winetricks qemu_kvm - ] ++ lists.optionals cfg.hasBrightnessCtl [ brightnessctl ] - ++ lists.optionals cfg.enableGitAnnex [ git-annex git-remote-gcrypt ]; + ] + ++ lists.optionals cfg.hasBrightnessCtl [ brightnessctl ] + ++ lists.optionals cfg.enableGitAnnex [ + git-annex + git-remote-gcrypt + ]; - home.shellAliases = { sl = "sl -awFc5"; }; + home.shellAliases = { + sl = "sl -awFc5"; + }; services.dunst.enable = true; services.wpaperd.enable = true; @@ -152,22 +174,28 @@ in { }; xdg = { - systemDirs.data = let - gds = pkgs.gsettings-desktop-schemas; - gtk3 = pkgs.gtk3; - in [ - "${gds}/share/gsettings-schemas/${gds.name}" - "${gtk3}/share/gsettings-schemas/${gtk3.name}" - ]; - userDirs = let annex = "${config.home.homeDirectory}/Annex"; - in { - enable = true; - createDirectories = true; - } // mkIf cfg.enableGitAnnex { - pictures = "${annex}/Pictures"; - music = "${annex}/Music"; - documents = "${annex}/Documents"; - }; + systemDirs.data = + let + gds = pkgs.gsettings-desktop-schemas; + gtk3 = pkgs.gtk3; + in + [ + "${gds}/share/gsettings-schemas/${gds.name}" + "${gtk3}/share/gsettings-schemas/${gtk3.name}" + ]; + userDirs = + let + annex = "${config.home.homeDirectory}/Annex"; + in + { + enable = true; + createDirectories = true; + } + // mkIf cfg.enableGitAnnex { + pictures = "${annex}/Pictures"; + music = "${annex}/Music"; + documents = "${annex}/Documents"; + }; portal.xdgOpenUsePortal = true; }; diff --git a/share/hm-modules/wpaperd.nix b/share/hm-modules/wpaperd.nix index 022f54d..82aacb5 100644 --- a/share/hm-modules/wpaperd.nix +++ b/share/hm-modules/wpaperd.nix @@ -1,9 +1,15 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: with lib; let cfg = config.services.wpaperd; tomlFormat = pkgs.formats.toml { }; -in { +in +{ options.services.wpaperd = { enable = mkEnableOption "enable wpaperd"; @@ -44,9 +50,7 @@ in { }; config = mkIf cfg.enable { - assertions = [ - (hm.assertions.assertPlatform "services.wpaperd" pkgs platforms.linux) - ]; + assertions = [ (hm.assertions.assertPlatform "services.wpaperd" pkgs platforms.linux) ]; home.packages = [ cfg.package ]; diff --git a/share/home/minimal.nix b/share/home/minimal.nix index 566fa42..e78862d 100644 --- a/share/home/minimal.nix +++ b/share/home/minimal.nix @@ -1,6 +1,7 @@ # This module contains a bunch of things that make up a minimal environment that # I want on ALL of my machines. -{ pkgs, config, ... }: { +{ pkgs, config, ... }: +{ home.packages = with pkgs; [ curl git diff --git a/share/nixos-modules/iwd-ext.nix b/share/nixos-modules/iwd-ext.nix index 09327a9..754be40 100644 --- a/share/nixos-modules/iwd-ext.nix +++ b/share/nixos-modules/iwd-ext.nix @@ -1,6 +1,17 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let - inherit (lib) mkEnableOption mkIf mkOption types recursiveUpdate; + inherit (lib) + mkEnableOption + mkIf + mkOption + types + recursiveUpdate + ; cfg = config.networking.wireless.iwd-ext; ini = pkgs.formats.ini { }; @@ -8,12 +19,14 @@ let # without UseDefaultInterface, sometimes wlan0 simply goes AWOL with # NetworkManager # https://iwd.wiki.kernel.org/interface_lifecycle#interface_management_in_iwd - General.UseDefaultInterface = with config.networking.networkmanager; + General.UseDefaultInterface = + with config.networking.networkmanager; (enable && (wifi.backend == "iwd")); }; configFile = ini.generate "main.conf" (recursiveUpdate defaults cfg.settings); -in { +in +{ options.networking.wireless.iwd-ext = { enable = mkEnableOption (lib.mdDoc "iwd"); @@ -50,8 +63,12 @@ in { type = types.attrsOf ini.type; default = { }; example = { - HomeNetwork = { Security.PreSharedKey = "totallysecurepsk"; }; - "@NETWORK_2_SSID@" = { Security.PreSharedKey = "@NETWORK_2_PSK@"; }; + HomeNetwork = { + Security.PreSharedKey = "totallysecurepsk"; + }; + "@NETWORK_2_SSID@" = { + Security.PreSharedKey = "@NETWORK_2_PSK@"; + }; }; description = lib.mdDoc '' diff --git a/share/system/client-common.nix b/share/system/client-common.nix index 4d3c3ca..e3d2b60 100644 --- a/share/system/client-common.nix +++ b/share/system/client-common.nix @@ -1,9 +1,13 @@ # Common configuration options for client machines (i.e. not servers) -{ pkgs, ... }: { +{ pkgs, ... }: +{ imports = [ ./steam.nix ]; programs.hyprland.enable = true; - boot.supportedFilesystems = [ "ntfs" "bcachefs" ]; + boot.supportedFilesystems = [ + "ntfs" + "bcachefs" + ]; nixpkgs.config.allowUnfree = true; nix.gc = { @@ -17,7 +21,11 @@ useNetworkd = true; firewall = { enable = true; - allowedTCPPorts = [ 80 443 34197 ]; + allowedTCPPorts = [ + 80 + 443 + 34197 + ]; }; }; services.mullvad-vpn.enable = true; @@ -34,7 +42,9 @@ enable = true; enableSSHSupport = true; pinentryPackage = pkgs.pinentry-gnome3; - settings = { default-cache-ttl = 1200; }; + settings = { + default-cache-ttl = 1200; + }; }; sound.enable = true; @@ -49,7 +59,12 @@ noto-fonts-cjk noto-fonts-emoji proggyfonts - (nerdfonts.override { fonts = [ "FiraCode" "CascadiaCode" ]; }) + (nerdfonts.override { + fonts = [ + "FiraCode" + "CascadiaCode" + ]; + }) overpass inter ]; diff --git a/share/system/common.nix b/share/system/common.nix index b280667..a785573 100644 --- a/share/system/common.nix +++ b/share/system/common.nix @@ -1,8 +1,12 @@ # Common system settings shared across every machine # Used mostly for adding substituters and such -{ ... }: { +{ ... }: +{ nix.settings = { - experimental-features = [ "nix-command" "flakes" ]; + experimental-features = [ + "nix-command" + "flakes" + ]; auto-optimise-store = true; }; } diff --git a/share/system/spotifyd.nix b/share/system/spotifyd.nix index 5e04898..406d5bf 100644 --- a/share/system/spotifyd.nix +++ b/share/system/spotifyd.nix @@ -1,6 +1,8 @@ { config, ... }: -let secrets = config.sops.secrets; -in { +let + secrets = config.sops.secrets; +in +{ services.spotifyd = { enable = true; settings.global = { diff --git a/share/system/steam.nix b/share/system/steam.nix index 7137bfa..4217d9d 100644 --- a/share/system/steam.nix +++ b/share/system/steam.nix @@ -1,23 +1,23 @@ -{ lib, ... }: { +{ lib, ... }: +{ programs.steam.enable = true; nixpkgs.config = { - allowUnfreePredicate = pkg: + allowUnfreePredicate = + pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-original" "steam-runtime" ]; packageOverrides = pkgs: { - steam = - pkgs.steam.override { extraPkgs = pkgs: with pkgs; [ libgdiplus ]; }; + steam = pkgs.steam.override { extraPkgs = pkgs: with pkgs; [ libgdiplus ]; }; }; }; environment.sessionVariables = rec { # Steam needs this to find Proton-GE - STEAM_EXTRA_COMPAT_TOOLS_PATHS = - "\${HOME}/.steam/root/compatibilitytools.d"; + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d"; # note: this doesn't replace PATH, it just adds this to it PATH = [ "\${XDG_BIN_HOME}" ]; }; diff --git a/share/system/virt.nix b/share/system/virt.nix index 6f5a9fe..ac74332 100644 --- a/share/system/virt.nix +++ b/share/system/virt.nix @@ -1,10 +1,18 @@ -{ pkgs, virt-users ? [ ], ... }: +{ + pkgs, + virt-users ? [ ], + ... +}: let # https://stackoverflow.com/questions/75855410/nix-map-list-of-keys-to-attribute-set-members - attrSetRepeatValue = value: list: - let acc = { }; # accumulator - in builtins.foldl' (acc: key: acc // { "${key}" = value; }) acc list; -in { + attrSetRepeatValue = + value: list: + let + acc = { }; # accumulator + in + builtins.foldl' (acc: key: acc // { "${key}" = value; }) acc list; +in +{ users.users = attrSetRepeatValue { extraGroups = [ "libvirtd" ]; } virt-users; home-manager.users = attrSetRepeatValue { |
