diff --git a/hosts/gerg-desktop/git.nix b/hosts/gerg-desktop/git.nix index 4a69ad1..31434d9 100644 --- a/hosts/gerg-desktop/git.nix +++ b/hosts/gerg-desktop/git.nix @@ -1,5 +1,4 @@ -{ _file }: -{ pkgs, config, ... }: +{ pkgs, config }: { programs.git = { enable = true; @@ -30,5 +29,4 @@ commit.gpgsign = true; }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/main.nix b/hosts/gerg-desktop/main.nix index f9714b5..bb29ecc 100644 --- a/hosts/gerg-desktop/main.nix +++ b/hosts/gerg-desktop/main.nix @@ -1,10 +1,11 @@ { + nix-index-database, nvim-flake, - self, - _file, + self', + pkgs, + config, }: -{ pkgs, config, ... }: { local = { remoteBuild.isBuilder = true; @@ -97,7 +98,7 @@ #qmk ; inherit (nvim-flake.packages) neovim; - inherit (self.packages) lint; + inherit (self'.packages) lint; librewolf = pkgs.librewolf.override { cfg.speechSynthesisSupport = false; }; nixpkgs-review = pkgs.nixpkgs-review.override { nix = config.nix.package; }; @@ -194,5 +195,4 @@ }; system.stateVersion = "23.05"; - inherit _file; } diff --git a/hosts/gerg-desktop/services/ddns.nix b/hosts/gerg-desktop/services/ddns.nix index faf5143..042a0b2 100644 --- a/hosts/gerg-desktop/services/ddns.nix +++ b/hosts/gerg-desktop/services/ddns.nix @@ -1,5 +1,4 @@ -{ _file }: -{ config, pkgs, ... }: +{ config, pkgs }: { sops.secrets.cloudflare = { }; @@ -84,5 +83,4 @@ func "nix-fu.com" "cc2df9163c3730f58b866409ac5a108c" ''; }; - inherit _file; } diff --git a/hosts/gerg-desktop/services/gitea.nix b/hosts/gerg-desktop/services/gitea.nix index ba4878e..55d773a 100644 --- a/hosts/gerg-desktop/services/gitea.nix +++ b/hosts/gerg-desktop/services/gitea.nix @@ -1,5 +1,4 @@ -{ _file }: -#{ config, ... }: +#{ config }: { # users.users = { # ${config.services.gitea.user} = { @@ -30,5 +29,4 @@ createDatabase = true; }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/services/minecraft.nix b/hosts/gerg-desktop/services/minecraft.nix index 2940696..5f8bbd1 100644 --- a/hosts/gerg-desktop/services/minecraft.nix +++ b/hosts/gerg-desktop/services/minecraft.nix @@ -1,5 +1,4 @@ -{ _file, self }: -{ lib, ... }: +{ self', lib }: { # I manually switch this sometimes config = lib.mkIf false { @@ -35,7 +34,7 @@ "network.target" "minecraft-server.socket" ]; - path = [ self.packages.papermc ]; + path = [ self'.packages.papermc ]; script = '' minecraft-server \ -Xms8G \ @@ -100,5 +99,4 @@ ''; }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/services/miniflux.nix b/hosts/gerg-desktop/services/miniflux.nix index 945df4b..495c460 100644 --- a/hosts/gerg-desktop/services/miniflux.nix +++ b/hosts/gerg-desktop/services/miniflux.nix @@ -1,9 +1,7 @@ -{ _file }: { config, lib, pkgs, - ... }: { sops.secrets.minifluxenv = { }; @@ -97,5 +95,4 @@ ${config.services.nginx.user}.extraGroups = [ "miniflux" ]; }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/services/nextcloud.nix b/hosts/gerg-desktop/services/nextcloud.nix index 3530c34..916672d 100644 --- a/hosts/gerg-desktop/services/nextcloud.nix +++ b/hosts/gerg-desktop/services/nextcloud.nix @@ -1,5 +1,4 @@ -{ _file }: -{ pkgs, config, ... }: +{ pkgs, config }: { sops.secrets.nextcloud.owner = "nextcloud"; @@ -24,5 +23,4 @@ default_phone_region = "US"; }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/services/nginx.nix b/hosts/gerg-desktop/services/nginx.nix index c41ef41..9b9d590 100644 --- a/hosts/gerg-desktop/services/nginx.nix +++ b/hosts/gerg-desktop/services/nginx.nix @@ -1,5 +1,4 @@ -{ _file }: -{ config, lib, ... }: +{ config, lib }: { sops.secrets = lib.genAttrs @@ -65,5 +64,4 @@ 80 443 ]; - inherit _file; } diff --git a/hosts/gerg-desktop/services/parrot.nix b/hosts/gerg-desktop/services/parrot.nix index b1af796..3287d3a 100644 --- a/hosts/gerg-desktop/services/parrot.nix +++ b/hosts/gerg-desktop/services/parrot.nix @@ -1,9 +1,8 @@ -{ _file }: { pkgs, config, lib, - ... + }: { sops.secrets.discordenv = { }; @@ -22,5 +21,4 @@ RestartSec = "30s"; }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/services/postgresql.nix b/hosts/gerg-desktop/services/postgresql.nix index c791bc0..92331bc 100644 --- a/hosts/gerg-desktop/services/postgresql.nix +++ b/hosts/gerg-desktop/services/postgresql.nix @@ -1,5 +1,4 @@ -{ _file }: -{ config, pkgs, ... }: +{ config, pkgs }: { services.postgresql = { enable = true; @@ -19,5 +18,4 @@ settings.unix_socket_permissions = "0770"; }; - inherit _file; } diff --git a/hosts/gerg-desktop/services/searxng.nix b/hosts/gerg-desktop/services/searxng.nix index 45e7aeb..f7c7a70 100644 --- a/hosts/gerg-desktop/services/searxng.nix +++ b/hosts/gerg-desktop/services/searxng.nix @@ -1,5 +1,4 @@ -{ _file }: -{ config, pkgs, ... }: +{ config, pkgs }: { sops.secrets.searxngenv = { }; users.users.${config.services.nginx.user}.extraGroups = [ "searx" ]; @@ -36,5 +35,4 @@ ui.theme_args.simple_style = "dark"; }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/spicetify.nix b/hosts/gerg-desktop/spicetify.nix index dddd264..02cfc9e 100644 --- a/hosts/gerg-desktop/spicetify.nix +++ b/hosts/gerg-desktop/spicetify.nix @@ -1,4 +1,4 @@ -{ spicetify-nix, _file }: +{ spicetify-nix }: let spicePkgs = spicetify-nix.legacyPackages; in @@ -37,5 +37,4 @@ in misc = "282a36"; }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/vfio.nix b/hosts/gerg-desktop/vfio.nix index c333719..6ed76d1 100644 --- a/hosts/gerg-desktop/vfio.nix +++ b/hosts/gerg-desktop/vfio.nix @@ -1,9 +1,8 @@ -{ _dir, _file }: { + _dir, pkgs, lib, - config, - ... + }: /* This section is just me bullying @@ -187,5 +186,4 @@ in ); }; }; - inherit _file; } diff --git a/hosts/gerg-desktop/zfs.nix b/hosts/gerg-desktop/zfs.nix index 1b8ef5b..0069b6a 100644 --- a/hosts/gerg-desktop/zfs.nix +++ b/hosts/gerg-desktop/zfs.nix @@ -1,9 +1,9 @@ -{ lanzaboote, _file }: { + lanzaboote, config, lib, pkgs, - ... + }: { imports = [ lanzaboote.nixosModules.lanzaboote ]; @@ -86,5 +86,4 @@ efi.efiSysMountPoint = "/efi"; }; }; - inherit _file; } diff --git a/hosts/iso/main.nix b/hosts/iso/main.nix index e3db36e..654b958 100644 --- a/hosts/iso/main.nix +++ b/hosts/iso/main.nix @@ -1,13 +1,10 @@ { disko, nixos-generators, - _file, -}: -{ lib, modulesPath, pkgs, - ... + }: { ##Build wtih nix build .#nixosConfigurations.iso.config.formats.iso @@ -43,5 +40,4 @@ edition = lib.mkForce "gerg-minimal"; isoName = lib.mkForce "NixOS"; }; - inherit _file; } diff --git a/hosts/media-laptop/main.nix b/hosts/media-laptop/main.nix index 6f8bfa3..601bee5 100644 --- a/hosts/media-laptop/main.nix +++ b/hosts/media-laptop/main.nix @@ -1,9 +1,8 @@ -{ _file }: { lib, pkgs, config, - ... + }: { local = { @@ -84,5 +83,4 @@ size = 8 * 1024; } ]; - inherit _file; } diff --git a/lib/default.nix b/lib/default.nix index 1dc628b..ee216f0 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -43,11 +43,74 @@ rec { (lib.removeSuffix ".nix") (lib.removePrefix "${path}/") ]; - value = name; + value = addSchizophreniaToModule name; })) builtins.listToAttrs ]; + addSchizophreniaToModule = + x: + let + imported = import x; + in + if !lib.isFunction imported then + x + else + let + + allArgs = { + inherit inputs self; + _dir = + let + dir = builtins.dirOf x; + in + if (dir == builtins.storeDir) then null else dir; + }; + + funcArgs = lib.functionArgs imported; + + argNames = builtins.attrNames inputs ++ [ + "inputs" + "inputs'" + "self'" + "_dir" + ]; + + providedArgs = lib.pipe funcArgs [ + (lib.filterAttrs (n: _: builtins.elem n argNames)) + (lib.mapAttrs (n: _: allArgs.${n} or { })) + ]; + + neededArgs = (lib.filterAttrs (n: _: !builtins.elem n argNames) funcArgs); + in + { + __functor = + _: args: + imported ( + (lib.filterAttrs (n: _: neededArgs ? ${n}) args) + # (formatter helping comment) + // ( + providedArgs + // ( + let + inputs' = constructInputs' (args.pkgs.stdenv.system) inputs; + actuallyAllArgs = inputs' // { + inherit inputs'; + self' = inputs'.self; + }; + in + lib.filterAttrs (n: _: providedArgs ? ${n}) actuallyAllArgs + ) + ) + ) + // { + _file = x; + }; + __functionArgs = neededArgs // { + pkgs = false; + }; + }; + gerg-utils = pkgsf: outputs: lib.pipe @@ -73,56 +136,21 @@ rec { lib.evalModules { specialArgs.modulesPath = "${unstable}/nixos/modules"; - modules = - let - importWithArgs = map ( - x: - let - allArgs = (constructInputs' system inputs) // { - inherit inputs; - _dir = - let - dir = builtins.dirOf x; - in - if (dir != builtins.storeDir) then dir else null; - _file = x; - }; - imported = import x; - in - lib.pipe imported [ - lib.functionArgs - builtins.attrNames - (map ( - x: - if allArgs ? ${x} then - { - name = x; - value = allArgs.${x}; - } - else - null - )) - (builtins.filter builtins.isAttrs) - builtins.listToAttrs - imported - ] - ); - in - builtins.concatLists [ - (importWithArgs (builtins.attrValues self.nixosModules)) - (importWithArgs (listNixFilesRecursive "${self}/hosts/${hostName}")) - (import "${unstable}/nixos/modules/module-list.nix") - (lib.singleton { - networking = { - inherit hostName; - }; - nixpkgs.hostPlatform = system; - }) - (lib.optionals (self.diskoConfigurations ? "disko-${hostName}") [ - self.diskoConfigurations."disko-${hostName}" - disko.nixosModules.default - ]) - ]; + modules = builtins.concatLists [ + (builtins.attrValues self.nixosModules) + (map addSchizophreniaToModule (listNixFilesRecursive "${self}/hosts/${hostName}")) + (import "${unstable}/nixos/modules/module-list.nix") + (lib.singleton { + networking = { + inherit hostName; + }; + nixpkgs.hostPlatform = system; + }) + (lib.optionals (self.diskoConfigurations ? "disko-${hostName}") [ + self.diskoConfigurations."disko-${hostName}" + disko.nixosModules.default + ]) + ]; } ); mkDisko = wrench [ diff --git a/modules/DE/dwm.nix b/modules/DE/dwm.nix index ce68d04..0c1f88b 100644 --- a/modules/DE/dwm.nix +++ b/modules/DE/dwm.nix @@ -1,13 +1,10 @@ -{ - suckless, - self, - _file, -}: { pkgs, config, lib, - ... + suckless, + self', + }: { options.local.DE.dwm.enable = lib.mkEnableOption ""; @@ -43,7 +40,7 @@ enable = true; displayManager = { sessionCommands = '' - feh --bg-center "${self.packages.images}/recursion.png" + feh --bg-center "${self'.packages.images}/recursion.png" numlockx systemctl --user start sxhkd systemctl --user start picom @@ -125,5 +122,4 @@ }; }; }; - inherit _file; } diff --git a/modules/DE/gnome.nix b/modules/DE/gnome.nix index 83f6c3d..59a6388 100644 --- a/modules/DE/gnome.nix +++ b/modules/DE/gnome.nix @@ -1,9 +1,8 @@ -{ _file }: { config, lib, pkgs, - ... + }: { options.local.DE.gnome.enable = lib.mkEnableOption ""; @@ -50,5 +49,4 @@ }; }; }; - inherit _file; } diff --git a/modules/DE/xfce.nix b/modules/DE/xfce.nix index a5872e9..156093e 100644 --- a/modules/DE/xfce.nix +++ b/modules/DE/xfce.nix @@ -1,9 +1,8 @@ -{ _file }: { config, lib, pkgs, - ... + }: { options.local.DE.xfce.enable = lib.mkEnableOption ""; @@ -21,5 +20,4 @@ displayManager.defaultSession = "xfce"; }; }; - inherit _file; } diff --git a/modules/DM/autoLogin.nix b/modules/DM/autoLogin.nix index 230b6a0..26c52ac 100644 --- a/modules/DM/autoLogin.nix +++ b/modules/DM/autoLogin.nix @@ -1,5 +1,4 @@ -{ _file }: -{ config, lib, ... }: +{ config, lib }: { options.local.DM = { autoLogin = lib.mkEnableOption ""; @@ -17,5 +16,4 @@ }; }; }; - inherit _file; } diff --git a/modules/DM/lightDM.nix b/modules/DM/lightDM.nix index 584aad6..a14c280 100644 --- a/modules/DM/lightDM.nix +++ b/modules/DM/lightDM.nix @@ -1,5 +1,9 @@ -{ self, _file }: -{ config, lib, ... }: +{ + self', + config, + lib, + +}: { options.local.DM.lightdm.enable = lib.mkEnableOption ""; @@ -7,7 +11,7 @@ services.xserver.displayManager = { lightdm = { enable = true; - background = "${self.packages.images}/recursion.png"; + background = "${self'.packages.images}/recursion.png"; extraConfig = "minimum-vt=1"; greeters.mini = { enable = true; @@ -41,5 +45,4 @@ }; }; }; - inherit _file; } diff --git a/modules/X11.nix b/modules/X11.nix index aef7533..095c904 100644 --- a/modules/X11.nix +++ b/modules/X11.nix @@ -1,5 +1,4 @@ -{ _file }: -{ pkgs, lib, ... }: +{ pkgs, lib }: { services.xserver = { tty = lib.mkDefault 1; @@ -9,5 +8,4 @@ excludePackages = [ pkgs.xterm ]; desktopManager.xterm.enable = false; }; - inherit _file; } diff --git a/modules/boot.nix b/modules/boot.nix index 8a254c4..c874b09 100644 --- a/modules/boot.nix +++ b/modules/boot.nix @@ -1,9 +1,9 @@ -{ self, _file }: { + self', lib, pkgs, config, - ... + }: { options.local.bootConfig.disable = lib.mkEnableOption ""; @@ -34,7 +34,7 @@ plymouth = { enable = lib.mkDefault true; theme = "breeze"; - logo = "${self.packages.images}/logo.png"; + logo = "${self'.packages.images}/logo.png"; }; loader = { grub = { @@ -68,5 +68,4 @@ ''; }; }; - inherit _file; } diff --git a/modules/builders.nix b/modules/builders.nix index 9bdabc7..a41371c 100644 --- a/modules/builders.nix +++ b/modules/builders.nix @@ -1,5 +1,4 @@ -{ _file }: -{ config, lib, ... }: +{ config, lib }: { options.local.remoteBuild = { enable = lib.mkEnableOption ""; @@ -97,5 +96,4 @@ } ) ]; - inherit _file; } diff --git a/modules/hardware.nix b/modules/hardware.nix index 37e8d0a..4617787 100644 --- a/modules/hardware.nix +++ b/modules/hardware.nix @@ -1,5 +1,4 @@ -{ _file }: -{ config, lib, ... }: +{ config, lib }: let cfg = config.local.hardware; in @@ -41,5 +40,4 @@ in }; } ]; - inherit _file; } diff --git a/modules/keys.nix b/modules/keys.nix index 287d7c7..d050f71 100644 --- a/modules/keys.nix +++ b/modules/keys.nix @@ -1,5 +1,4 @@ -{ _file }: -{ lib, ... }: +{ lib }: { options.local.keys = lib.mkOption { }; @@ -12,5 +11,4 @@ gerg-desktop_fingerprint = "BQxvBOWsTw1gdNDR0KzrSRmbVhDrJdG05vYXkVmw8yA"; gerg_gerg-desktop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJWbwkFJmRBgyWyWU+w3ksZ+KuFw9uXJN3PwqqE7Z/i8"; }; - inherit _file; } diff --git a/modules/misc.nix b/modules/misc.nix index 09a27b4..67b40aa 100644 --- a/modules/misc.nix +++ b/modules/misc.nix @@ -1,9 +1,9 @@ -{ _file, self }: { + self', lib, config, pkgs, - ... + }: { options.local.allowedUnfree = lib.mkOption { @@ -33,7 +33,7 @@ nix-tree # view packages pciutils # lspci ; - inherit (self.packages) nix-janitor; + inherit (self'.packages) nix-janitor; } ); @@ -69,5 +69,4 @@ # Useless with flakes (without configuring) programs.command-not-found.enable = false; }; - inherit _file; } diff --git a/modules/nix.nix b/modules/nix.nix index 82745e7..c1ca482 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -1,13 +1,11 @@ { + nix, inputs, - _file, -}: -{ lib, config, pkgs, - ... + }: { # @@ -73,5 +71,4 @@ # reject-flake-config = true; }; - inherit _file; } diff --git a/modules/shell.nix b/modules/shell.nix index 68ad0bd..b26d408 100644 --- a/modules/shell.nix +++ b/modules/shell.nix @@ -1,9 +1,9 @@ -{ fetch-rs, _file }: { + fetch-rs, pkgs, config, lib, - ... + }: { systemd.tmpfiles.rules = [ "d /tmp/neovim-page 0777 root root - -" ]; @@ -160,5 +160,4 @@ }; }; }; - inherit _file; } diff --git a/modules/sops.nix b/modules/sops.nix index 359d63c..0ca1e5e 100644 --- a/modules/sops.nix +++ b/modules/sops.nix @@ -1,13 +1,10 @@ -{ - sops-nix, - self, - _file, -}: { pkgs, config, lib, - ... + sops-nix, + self', + }: { imports = [ sops-nix.nixosModules.sops ]; @@ -15,9 +12,8 @@ config = lib.mkIf (!config.local.sops.disable) { environment.systemPackages = [ pkgs.sops ]; sops = { - defaultSopsFile = "${self}/hosts/${config.networking.hostName}/secrets.yaml"; + defaultSopsFile = "${self'}/hosts/${config.networking.hostName}/secrets.yaml"; age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; }; }; - inherit _file; } diff --git a/modules/theming.nix b/modules/theming.nix index cf23a51..2598bb5 100644 --- a/modules/theming.nix +++ b/modules/theming.nix @@ -1,9 +1,8 @@ -{ _file }: { pkgs, config, lib, - ... + }: let cfg = config.local.theming; @@ -98,5 +97,4 @@ in }; }) ]; - inherit _file; }