feat: impure symlink

This commit is contained in:
2025-12-28 10:47:21 +08:00
parent f9308dda9e
commit 7eb32cfabc
6 changed files with 41 additions and 16 deletions

1
.envrc Normal file
View File

@@ -0,0 +1 @@
export IMPURE_ROOT=$(pwd)

View File

@@ -1,28 +1,29 @@
root := `pwd`
NH := "IMPURE_ROOT=" + root + " nh"
all: fmt switch
switch:
@echo "Rebuilding NixOS..."
@nh os switch .
@{{NH}} os switch . --impure
switch-offline:
@echo "Rebuilding NixOS without net..."
@nh os switch . --no-net
@{{NH}} os switch . --impure --no-net
offline:
@echo "Rebuilding NixOS without net..."
@nh os switch . --no-net
alias offline := switch-offline
boot:
@echo "Rebuilding NixOS..."
@nh os boot .
@{{NH}} os boot . --impure
test:
@echo "Rebuilding NixOS..."
@nh os test .
@{{NH}} os test . --impure
vm:
@echo "Building NixOS VM..."
@nh os build-vm .
@{{NH}} os build-vm . --impure
update:
@echo "Updating flakes..."
@@ -47,5 +48,3 @@ gc:
fmt:
@echo "Formatting nix files..."
@nix fmt
.PHONY: all switch switch-offline boot test vm update repl cleandry clean gc fmt

View File

@@ -1,8 +1,8 @@
{ lib, inputs }:
lib.extend (
self: super: {
umport = import ./umport.nix { lib = self; };
inherit (inputs.home-manager.lib) hm;
umport = import ./umport.nix { lib = self; };
haumea = inputs.haumea.lib;
infuse = (import inputs.infuse { inherit lib; }).v1.infuse;
}

View File

@@ -2,6 +2,7 @@
config,
lib,
pkgs,
impure,
...
}:
let
@@ -14,11 +15,8 @@ in
config = lib.mkIf cfg.enable {
my.hm = {
xdg.configFile."nvim/init.lua".source = ./nvim/init.lua;
xdg.configFile."nvim/lua" = {
source = ./nvim/lua;
recursive = true;
};
xdg.configFile."nvim/init.lua".source = impure.mkImpureLink ./nvim/init.lua;
xdg.configFile."nvim/lua".source = impure.mkImpureLink ./nvim/lua;
programs.neovim = {
enable = true;
defaultEditor = true;

View File

@@ -15,6 +15,7 @@ in
config = lib.mkIf cfg.enable {
my.hm = {
home.packages = with pkgs; [
just
gnumake
github-cli # gh
];

26
modules/impure.nix Normal file
View File

@@ -0,0 +1,26 @@
{
lib,
pkgs,
self,
...
}:
let
relativePath =
path:
assert lib.types.path.check path;
lib.strings.removePrefix (toString self) (toString path);
mkImpureLink =
path:
let
relative = relativePath path;
in
pkgs.runCommandLocal relative { } "ln -s ${lib.escapeShellArg (impureRoot + relative)} $out";
impureRoot =
let
impureRoot = builtins.getEnv "IMPURE_ROOT";
in
if impureRoot == "" then throw "IMPURE_ROOT is not set" else impureRoot;
in
{
_module.args.impure = { inherit mkImpureLink; };
}