diff --git a/flake.lock b/flake.lock index c72b894..df62322 100644 --- a/flake.lock +++ b/flake.lock @@ -147,6 +147,21 @@ "type": "github" } }, + "impurity": { + "locked": { + "lastModified": 1689836741, + "narHash": "sha256-82KeRg2sAqDXCdzVs8P8GoqVaPsZjkWgrfsj6kgOLTY=", + "owner": "outfoxxed", + "repo": "impurity.nix", + "rev": "bbc41b69ab5485cd55aa315d08cff865781d3913", + "type": "github" + }, + "original": { + "owner": "outfoxxed", + "repo": "impurity.nix", + "type": "github" + } + }, "ironbar": { "inputs": { "nixpkgs": [ @@ -224,6 +239,7 @@ "hyprland": "hyprland", "hyprland-hy3": "hyprland-hy3", "hyprpaper": "hyprpaper", + "impurity": "impurity", "ironbar": "ironbar", "nixpkgs": "nixpkgs", "nur": "nur", diff --git a/flake.nix b/flake.nix index 7d4c789..cb0efbe 100755 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + impurity.url = "github:outfoxxed/impurity.nix"; + emacs-overlay = { url = "github:nix-community/emacs-overlay?rev=b7a065e692e944e6b68d4285013ca426a8de6663"; inputs.nixpkgs.follows = "nixpkgs"; @@ -50,10 +52,10 @@ nixosConfigurations = { lenovo = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; - specialArgs = { inherit system inputs; }; + specialArgs = { inherit self system inputs; }; modules = [ - (import ./modules/impurity.nix self) + ./modules/impurity.nix ./modules/preserve-system.nix ./modules/devenv ./modules/system.nix diff --git a/modules/devenv/flake.nix b/modules/devenv/flake.nix index e767092..ca7a166 100644 --- a/modules/devenv/flake.nix +++ b/modules/devenv/flake.nix @@ -10,6 +10,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + impurity.url = "github:outfoxxed/impurity.nix"; + emacs-overlay = { url = "github:nix-community/emacs-overlay?rev=b7a065e692e944e6b68d4285013ca426a8de6663"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/impurity.nix b/modules/impurity.nix index 14356d3..ff2e296 100644 --- a/modules/impurity.nix +++ b/modules/impurity.nix @@ -1,43 +1,5 @@ -self: { lib, config, pkgs, ... }: with lib; let - relativePath = path: assert types.path.check path; - with builtins; strings.removePrefix (toString self) (toString path); +{ self, inputs, ... }: { + imports = [ inputs.impurity.nixosModules.impurity ]; - impurityGroupEnabled = group: let - impurityGroups = strings.splitString " " (builtins.getEnv "IMPURITY_GROUPS"); - in group == "" || builtins.elem group impurityGroups; - - impurePath = let - impurePathEnv = builtins.getEnv "IMPURITY_PATH"; - in if impurePathEnv == "" - then throw "impurity.enable is true but IMPURITY_PATH is not set" - else impurePathEnv; - - createImpurePath = path: let - relative = (relativePath path); - full = impurePath + relative; - in pkgs.runCommand "impurity-${relative}" {} "ln -s ${full} $out"; - -in { - options.impurity.enable = mkOption { - type = types.bool; - default = false; - description = "Enable impure symlinks"; - }; - - config._module.args.impurity = rec { - groupedLink = groupspec: path: - assert types.path.check path; let - groups = - if groupspec == null - then [ "" ] - else if (types.listOf types.string).check groupspec - then groupspec - else assert types.string.check groupspec; - strings.splitString " " groupspec; - in if config.impurity.enable && lists.any (group: impurityGroupEnabled group) groups - then createImpurePath path - else path; - - link = path: groupedLink null path; - }; + impurity.configRoot = self; } diff --git a/modules/user/default.nix b/modules/user/default.nix index 3757dd4..2c45caa 100644 --- a/modules/user/default.nix +++ b/modules/user/default.nix @@ -1,4 +1,4 @@ -{ system, inputs, config, lib, impurity, ... }: let +{ self, system, inputs, config, lib, impurity, ... }: let username = "admin"; homeDirectory = "/home/${username}"; in { @@ -23,7 +23,7 @@ in { home-manager = { extraSpecialArgs = { - inherit system inputs impurity; + inherit self system inputs impurity; }; # use system nixpkgs instead of home-manager nixpkgs