Emacs now uses flake pinning and cached packages. And dock stall workaround
This commit is contained in:
1 parent
ca6ddc4b48
commit
5e24c62d7b
8 files changed
+632
-35
No files matched your search
@@ -2,7 +2,6 @@ README.md~
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
result
|
result
|
||||||
dump.txt
|
dump.txt
|
||||||
flake.lock
|
|
||||||
*~
|
*~
|
||||||
Platformio - NixOS Wiki*
|
Platformio - NixOS Wiki*
|
||||||
.platformio/
|
.platformio/
|
||||||
@@ -7,3 +7,29 @@ Started with a configuration generated from [this nixos config template](https:/
|
|||||||
Initialy created 'with secrets' but stripped out the git/agenix in favor of sops
|
Initialy created 'with secrets' but stripped out the git/agenix in favor of sops
|
||||||
|
|
||||||
Refactored the configuration to remove nixos but keep the shared modules and Darwin host setup, with no NixOS trees or Linux app targets.
|
Refactored the configuration to remove nixos but keep the shared modules and Darwin host setup, with no NixOS trees or Linux app targets.
|
||||||
|
|
||||||
|
## Emacs and binary caches
|
||||||
|
|
||||||
|
The Emacs overlay is a flake input pinned in `flake.lock`. Keep the lock file
|
||||||
|
in version control so builds use the same input revisions. Update only the
|
||||||
|
overlay with:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix flake update emacs-overlay
|
||||||
|
```
|
||||||
|
|
||||||
|
Emacs uses the unmodified release package from each architecture's nixpkgs,
|
||||||
|
rather than `emacs-git`, to reuse builds from `https://cache.nixos.org`.
|
||||||
|
The overlay still supplies `emacsWithPackagesFromUsePackage` and the Lisp
|
||||||
|
package definitions. The installed Emacs and launchd daemon share the same
|
||||||
|
configured package; client launchers use the matching release Emacs client.
|
||||||
|
|
||||||
|
Both the NixOS and nix-community caches are configured in the Darwin host.
|
||||||
|
Cache availability depends on the locked revisions and architecture. Check the
|
||||||
|
base Emacs build without compiling (substitute `x86_64-darwin` for Intel):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix build --dry-run '.#darwinConfigurations.aarch64-darwin.pkgs.emacs'
|
||||||
|
```
|
||||||
|
|
||||||
|
The custom Lisp package collection and wrapper may still need local builds.
|
||||||
Generated
+533
@@ -0,0 +1,533 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"brew-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792568047,
|
||||||
|
"narHash": "sha256-3t+GIzv/Shf6JZN6GhZmOdTgI8UCOcVASV5PMXVuqdk=",
|
||||||
|
"owner": "Homebrew",
|
||||||
|
"repo": "brew",
|
||||||
|
"rev": "1ef73bbf695bfa42a4a26b19eeeb3f890f3cfbee",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Homebrew",
|
||||||
|
"ref": "main",
|
||||||
|
"repo": "brew",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bun2nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": [
|
||||||
|
"llm-agents",
|
||||||
|
"flake-parts"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"llm-agents",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"llm-agents",
|
||||||
|
"systems"
|
||||||
|
],
|
||||||
|
"treefmt-nix": [
|
||||||
|
"llm-agents",
|
||||||
|
"treefmt-nix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790001035,
|
||||||
|
"narHash": "sha256-1/SLBjSYBzDdDhvLQ83wrzBakyS/xNGgtxHGNuveOEQ=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "bun2nix",
|
||||||
|
"rev": "07a5bfc8ac36c5370199343fa620b69f63186e33",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"ref": "llm-agents",
|
||||||
|
"repo": "bun2nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"catppuccin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792238796,
|
||||||
|
"narHash": "sha256-mRsa8oJ8R7fkvR5K+uQYfuxX9Np0ai/KvzTE8FYVx7E=",
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "nix",
|
||||||
|
"rev": "30c87b95a628e81ec82a4fa0ed4db85d7c7d46d6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darwinAarch64": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgsAarch64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792366139,
|
||||||
|
"narHash": "sha256-jto4pdsl0bgErQ5vaMc3gOyj//PILLRJuqX3I7fUk6s=",
|
||||||
|
"owner": "nix-darwin",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "f0ec2b3fae4df92ea7788359aef9e07bb88d720f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-darwin",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darwinX86": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgsX86"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1783744694,
|
||||||
|
"narHash": "sha256-2cp6N3rrwnGYLTx9l6N+NI+kwrCWxvJUbj5WJhvB29A=",
|
||||||
|
"owner": "nix-darwin",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "c3e90c89649b07d1a96e4b9dd6cd0d6e44b91a74",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-darwin",
|
||||||
|
"ref": "nix-darwin-26.05",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"emacs-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgsAarch64"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": [
|
||||||
|
"nixpkgsX86"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792556335,
|
||||||
|
"narHash": "sha256-G9mIKKECDAZRzbBWtV8UgcVePr9A6/njVj2VQT02DhE=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "emacs-overlay",
|
||||||
|
"rev": "1c943e86dcb4e8e4971b0b3db15e2067fe4454b7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "emacs-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"llm-agents",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790898470,
|
||||||
|
"narHash": "sha256-zTwuwezD0w3hpga6a6P8emidzAZFyWqlNeRBlpWOOl8=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "024633cd702b10285db5cb19b40ad48d2399ba60",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790898470,
|
||||||
|
"narHash": "sha256-zTwuwezD0w3hpga6a6P8emidzAZFyWqlNeRBlpWOOl8=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "024633cd702b10285db5cb19b40ad48d2399ba60",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"homeManagerAarch64": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgsAarch64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792495086,
|
||||||
|
"narHash": "sha256-TyoYH983Nsc++1scw0SoOEKshPSJWJDxK7tTmuZ974M=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "ec80131710bffcdf3b8498cf41f3a0579833b023",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"homeManagerX86": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgsX86"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792438572,
|
||||||
|
"narHash": "sha256-5mQQOcggBRBXB7NlzUxO0dbvQN4euJOISjNybrtfxPk=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "24f8f8e786f87d6a818e1746cb2389bf922afdab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "release-26.05",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"homebrew-cask": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792588409,
|
||||||
|
"narHash": "sha256-9cnhu5dCgHml3CDQ6z7NIxs9wPNi+lSgbhZ+3BFU8Kc=",
|
||||||
|
"owner": "homebrew",
|
||||||
|
"repo": "homebrew-cask",
|
||||||
|
"rev": "9475b270ce47ed3985c1df096041e5a363c2eeb3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "homebrew",
|
||||||
|
"repo": "homebrew-cask",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"homebrew-core": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792588123,
|
||||||
|
"narHash": "sha256-fKKwQn8v+qn4U6T0RFhg18ASE6mdPIM3+8wab6l+Ox4=",
|
||||||
|
"owner": "homebrew",
|
||||||
|
"repo": "homebrew-core",
|
||||||
|
"rev": "9d40ca63d343b014026e7e30f7f0851130df1473",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "homebrew",
|
||||||
|
"repo": "homebrew-core",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"llm-agents": {
|
||||||
|
"inputs": {
|
||||||
|
"bun2nix": "bun2nix",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"systems": "systems",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792577217,
|
||||||
|
"narHash": "sha256-YRvnXVnyZGr6+v118Lb4pTtzLzeJet2Y69qf00katjQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "llm-agents.nix",
|
||||||
|
"rev": "4c0e549dab7167b1fe7433af15adf892a299fb83",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "llm-agents.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-homebrew": {
|
||||||
|
"inputs": {
|
||||||
|
"brew-src": [
|
||||||
|
"brew-src"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1789928041,
|
||||||
|
"narHash": "sha256-iV37ieTcE4ZLOYEe0VznW6dWMBe4lEL8AbK1vblyZGM=",
|
||||||
|
"owner": "zhaofengli-wip",
|
||||||
|
"repo": "nix-homebrew",
|
||||||
|
"rev": "c11cccfdd36dd69b5323d70d354b2853379c2426",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "zhaofengli-wip",
|
||||||
|
"repo": "nix-homebrew",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-vscode-extensions": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792555615,
|
||||||
|
"narHash": "sha256-hgkjMS7s4GRhZiHAgzF1UHFrXwu+2dcBohgF57Wrgps=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-vscode-extensions",
|
||||||
|
"rev": "2a46f9d8fac507c47e8a659d5a4e91676d06273c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-vscode-extensions",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixd": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"treefmt-nix": "treefmt-nix_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1791202410,
|
||||||
|
"narHash": "sha256-rhfHJ+F9IU7G2pbRWnlyJvHEfwW7Ezm7SHhBrteoVYc=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixd",
|
||||||
|
"rev": "bdb467082c4ecb467f7818f7a84d1f69db53784f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixd",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790652569,
|
||||||
|
"narHash": "sha256-k8Fu4c9Z+4Nh7mUr0cfw++ITQiyEhlWxoJBOkI3tOcQ=",
|
||||||
|
"rev": "b6c8664de9b6cc07fe5666a29f91884ba81197c4",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1082290.b6c8664de9b6/nixexprs.tar.xz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-lib": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790477367,
|
||||||
|
"narHash": "sha256-oujbxmVKDhci2E4EM3KyAbRUgp5/IsCoiA/LfEF7OOk=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "f7cd230690d9fc982d06129f9189b101fddcfa3b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgsAarch64": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792506237,
|
||||||
|
"narHash": "sha256-Q/8KLB6jNfpaUN1HAedE/u/Et9feE/zYSsutBLKrCFk=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5adc50831c259f87faeb09ddf930d43597197473",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgsX86": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792526774,
|
||||||
|
"narHash": "sha256-+qjpjRPb6ak1rkodfh7wEtgQB3DaAI5tg0kSklSUmio=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "36fd15bbb657815e2028e31d715c2e43a1230c91",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-26.05-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792116957,
|
||||||
|
"narHash": "sha256-EjZqHKObBfIOeHZnMRVV87HB3pPq/WBkmRJWyFxmZu8=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "f20cd90e28fe0403873f473b29e42662cd86e8c4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1784564315,
|
||||||
|
"narHash": "sha256-7OpsHHIZFUBLbeHNQ0oC40DZRQjsmGWodXge+OqgPgk=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0c2094806c9e542f31785ef3569ab9e900e3ce9c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0c2094806c9e542f31785ef3569ab9e900e3ce9c",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790463110,
|
||||||
|
"narHash": "sha256-VZHcT2wKLkApBCACQ2SH4P1jVZUbbOA7jWAGi1MIViw=",
|
||||||
|
"rev": "e158d9ed9b51c98974c5e66e1ba1c9e0255fecaa",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1080189.e158d9ed9b51/nixexprs.tar.xz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"brew-src": "brew-src",
|
||||||
|
"catppuccin": "catppuccin",
|
||||||
|
"darwinAarch64": "darwinAarch64",
|
||||||
|
"darwinX86": "darwinX86",
|
||||||
|
"emacs-overlay": "emacs-overlay",
|
||||||
|
"homeManagerAarch64": "homeManagerAarch64",
|
||||||
|
"homeManagerX86": "homeManagerX86",
|
||||||
|
"homebrew-cask": "homebrew-cask",
|
||||||
|
"homebrew-core": "homebrew-core",
|
||||||
|
"llm-agents": "llm-agents",
|
||||||
|
"nix-homebrew": "nix-homebrew",
|
||||||
|
"nix-vscode-extensions": "nix-vscode-extensions",
|
||||||
|
"nixd": "nixd",
|
||||||
|
"nixpkgsAarch64": "nixpkgsAarch64",
|
||||||
|
"nixpkgsX86": "nixpkgsX86",
|
||||||
|
"sops-nix": "sops-nix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sops-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgsAarch64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1792056300,
|
||||||
|
"narHash": "sha256-YU1LjDe1o2Ymg5zEiCHbmMXLkDCtxHQRiVqZ3nC5GGk=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"rev": "44931708c62937c2b1bf7953902989fa5bb9ee1b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1791244623,
|
||||||
|
"narHash": "sha256-uuanbkFk8a313Zfrxdcz8Us/yQtaxNnKJtX8v0ZPpd8=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "d36eeed142f88b5a636f2e3856a53c61654cf29b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"llm-agents",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1791885023,
|
||||||
|
"narHash": "sha256-C3alQ2MEt0zVrUSho5NUDo3jmhbff72++bfwoqT9Omo=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "0d6d739a833ba9a9c93034862e4a7b061a062a1c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixd",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1786901030,
|
||||||
|
"narHash": "sha256-WSFCsDSE5ffgD2MqzkM2CYjeFiKhRF/dJUN8uedb6YE=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "27b3b12a8e6375f28ebe122f07d230ca5459bbfa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
@@ -10,6 +10,12 @@
|
|||||||
url = "github:nixos/nixpkgs//nixpkgs-26.05-darwin";
|
url = "github:nixos/nixpkgs//nixpkgs-26.05-darwin";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
emacs-overlay = {
|
||||||
|
url = "github:nix-community/emacs-overlay";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgsAarch64";
|
||||||
|
inputs.nixpkgs-stable.follows = "nixpkgsX86";
|
||||||
|
};
|
||||||
|
|
||||||
homeManagerAarch64 = {
|
homeManagerAarch64 = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgsAarch64";
|
inputs.nixpkgs.follows = "nixpkgsAarch64";
|
||||||
|
|||||||
+15
-14
@@ -7,6 +7,19 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
user = "olaf";
|
user = "olaf";
|
||||||
|
configuredEmacs = pkgs.emacsWithPackagesFromUsePackage {
|
||||||
|
config = ../config/emacs/emacs.el;
|
||||||
|
defaultInitFile = true;
|
||||||
|
package = pkgs.emacs;
|
||||||
|
alwaysEnsure = true;
|
||||||
|
extraEmacsPackages =
|
||||||
|
epkgs: with epkgs; [
|
||||||
|
magit
|
||||||
|
company
|
||||||
|
nix-mode
|
||||||
|
use-package
|
||||||
|
];
|
||||||
|
};
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -101,19 +114,7 @@ in
|
|||||||
with pkgs;
|
with pkgs;
|
||||||
[
|
[
|
||||||
# Emacs with automatic package management from overlay
|
# Emacs with automatic package management from overlay
|
||||||
(emacsWithPackagesFromUsePackage {
|
configuredEmacs
|
||||||
config = ../config/emacs/emacs.el;
|
|
||||||
defaultInitFile = true;
|
|
||||||
package = emacs-git;
|
|
||||||
alwaysEnsure = true;
|
|
||||||
extraEmacsPackages =
|
|
||||||
epkgs: with epkgs; [
|
|
||||||
magit
|
|
||||||
company
|
|
||||||
nix-mode
|
|
||||||
use-package
|
|
||||||
];
|
|
||||||
})
|
|
||||||
]
|
]
|
||||||
++ (import ../../modules/darwin/packages.nix { inherit pkgs llm-agents; })
|
++ (import ../../modules/darwin/packages.nix { inherit pkgs llm-agents; })
|
||||||
|
|
||||||
@@ -125,7 +126,7 @@ in
|
|||||||
ProgramArguments = [
|
ProgramArguments = [
|
||||||
"/bin/sh"
|
"/bin/sh"
|
||||||
"-c"
|
"-c"
|
||||||
"/bin/wait4path ${pkgs.emacs}/bin/emacs && exec ${pkgs.emacs}/bin/emacs --fg-daemon"
|
"/bin/wait4path ${configuredEmacs}/bin/emacs && exec ${configuredEmacs}/bin/emacs --fg-daemon"
|
||||||
];
|
];
|
||||||
StandardErrorPath = "/tmp/emacs.err.log";
|
StandardErrorPath = "/tmp/emacs.err.log";
|
||||||
StandardOutPath = "/tmp/emacs.out.log";
|
StandardOutPath = "/tmp/emacs.out.log";
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
## Layout
|
## Layout
|
||||||
```
|
```
|
||||||
|
|
||||||
.
|
.
|
||||||
├── dock # MacOS dock configuration
|
├── dock # MacOS dock configuration
|
||||||
├── casks.nix # List of homebrew casks
|
├── casks.nix # List of homebrew casks
|
||||||
@@ -9,3 +10,16 @@
|
|||||||
├── home-manager.nix # Defines user programs
|
├── home-manager.nix # Defines user programs
|
||||||
├── packages.nix # List of packages to install for MacOS
|
├── packages.nix # List of packages to install for MacOS
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Dock activation
|
||||||
|
|
||||||
|
Dock setup runs only when `olaf` is the active console user. Each `dockutil`
|
||||||
|
command runs as that user in their GUI session, avoiding the root-mode
|
||||||
|
`defaults export` pipe deadlock in dockutil 3.1.3. Commands have a 30-second
|
||||||
|
timeout (with a forced stop after another 5 seconds) and report failures.
|
||||||
|
A failed Dock listing aborts activation before resetting any entries.
|
||||||
|
The Dock is restarted through its user launchd service.
|
||||||
|
|
||||||
|
If setup is skipped because no matching desktop session is active, run
|
||||||
|
`sudo darwin-rebuild switch --flake .#aarch64-darwin` again after logging in
|
||||||
|
(use `x86_64-darwin` on Intel).
|
||||||
@@ -1,8 +1,4 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, emacs-overlay, ... }:
|
||||||
|
|
||||||
let
|
|
||||||
emacsOverlaySha256 = "149iwabscwrndxmrfy1c4jcyh4hqz6i8gvja4jv752y7lcm7h9kq";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
home-manager.backupFileExtension = "nix-backup";
|
home-manager.backupFileExtension = "nix-backup";
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
@@ -23,10 +19,6 @@ in
|
|||||||
pathExists (path + ("/" + n + "/default.nix")))
|
pathExists (path + ("/" + n + "/default.nix")))
|
||||||
(attrNames (readDir path)))
|
(attrNames (readDir path)))
|
||||||
|
|
||||||
++ [(import (builtins.fetchTarball {
|
++ [ emacs-overlay.overlays.default ];
|
||||||
url = "https://github.com/nix-community/emacs-overlay/archive/master.tar.gz";
|
|
||||||
sha256 = emacsOverlaySha256;
|
|
||||||
}))
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -78,23 +78,49 @@ in
|
|||||||
wantURIs = concatMapStrings (entry: "${entryURI entry.path}\n") cfg.entries;
|
wantURIs = concatMapStrings (entry: "${entryURI entry.path}\n") cfg.entries;
|
||||||
createEntries = concatMapStrings (
|
createEntries = concatMapStrings (
|
||||||
entry:
|
entry:
|
||||||
"if [ -e '${entry.path}' ]; then ${dockutil}/bin/dockutil --no-restart --add '${entry.path}' --section ${entry.section} ${entry.options} /Users/${user} ; fi \n "
|
''
|
||||||
|
if [ -e ${escapeShellArg entry.path} ]; then
|
||||||
|
runDockutil --no-restart --add ${escapeShellArg entry.path} --section ${escapeShellArg entry.section} ${entry.options} /Users/${user} || exit 1
|
||||||
|
fi
|
||||||
|
''
|
||||||
) cfg.entries;
|
) cfg.entries;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
system.activationScripts.postActivation.text = ''
|
system.activationScripts.postActivation.text = ''
|
||||||
echo >&2 "Setting up the Dock for ${user}..."
|
echo >&2 "Setting up the Dock for ${user}..."
|
||||||
haveURIs="$(${dockutil}/bin/dockutil --list /Users/${user} | ${pkgs.coreutils}/bin/cut -f2)"
|
if [ "$(/usr/bin/stat -f %Su /dev/console)" = ${escapeShellArg user} ]; then
|
||||||
|
dockUid="$(/usr/bin/id -u ${escapeShellArg user})"
|
||||||
if ! diff -wu <(echo "$haveURIs") <(echo -n '${wantURIs}') >&2 ; then
|
runDockutil() {
|
||||||
{
|
# Avoid dockutil's root-only defaults-export pipe deadlock.
|
||||||
echo >&2 "Resetting Dock."
|
local status
|
||||||
${dockutil}/bin/dockutil --no-restart --remove all /Users/${user}
|
if ${pkgs.coreutils}/bin/timeout --kill-after=5s 30s \
|
||||||
${createEntries}
|
/bin/launchctl asuser "$dockUid" \
|
||||||
killall Dock
|
/usr/bin/sudo -H -n -u ${escapeShellArg user} \
|
||||||
|
${dockutil}/bin/dockutil "$@"; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
status=$?
|
||||||
|
echo >&2 "Dock setup failed: dockutil $* exited with status $status (timeout: 30s)."
|
||||||
|
return "$status"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
dockListing="$(runDockutil --list /Users/${user})" || exit 1
|
||||||
|
haveURIs="$(printf '%s\n' "$dockListing" | ${pkgs.coreutils}/bin/cut -f2)"
|
||||||
|
|
||||||
|
if ! diff -wu <(echo "$haveURIs") <(echo -n ${escapeShellArg wantURIs}) >&2; then
|
||||||
|
echo >&2 "Resetting Dock."
|
||||||
|
runDockutil --no-restart --remove all /Users/${user} || exit 1
|
||||||
|
${createEntries}
|
||||||
|
if ! ${pkgs.coreutils}/bin/timeout --kill-after=5s 30s \
|
||||||
|
/bin/launchctl kickstart -k "gui/$dockUid/com.apple.Dock.agent"; then
|
||||||
|
echo >&2 "Dock setup failed: could not restart the Dock for ${user}."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
echo >&2 "Dock setup complete."
|
echo >&2 "Dock setup complete."
|
||||||
|
else
|
||||||
|
echo >&2 "Skipping Dock setup: ${user} is not the active console user. Re-run activation after logging in."
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user