Avsnitt
-
Daniel Firth
Horizon HaskellIOHK
Glasgow Haskell Compiler (GHC)
https://hackage.haskell.org/package/base
https://hackage.haskell.org/package/bytestring
https://hackage.haskell.org/package/template-haskellThe Haskell Tool Stack
Stackage
Nixpkgs HaskellThe Python Package Index (PyPI)
ghc-devs mailing list thread about reinstallable base
The Dhall configuration language
https://hackage.haskell.org/package/dhall
https://hackage.haskell.org/package/hnixhttps://hackage.haskell.org/package/aeson
Pattern: every file is a flake-parts module
flake-parts
A repo in which the pattern is explained is demonstrated
Generated chapters00:00 Introduction
01:41 Motivation Behind Horizon Haskell
02:35 Understanding GHC and Haskell Code Compatibility
05:06 Breaking Changes in GHC
06:27 Maintaining Backwards Compatibility
13:01 Horizon Haskell's Role in Package Management
18:57 Challenges with Nixpkgs
19:23 Future Improvements for Haskell Compatibility
20:34 The Philosophy of Breaking Changes
22:38 Overview of Horizon Haskell's Functionality
30:38 Introduction to Horizon Haskell and Its Toolkit
34:35 Building Haskell Libraries with Horizon Haskell
37:55 Understanding Horizon Package Sets
40:16 Managing Package Compatibility and Upgrades
44:44 Patching and Upstream Contributions
51:21 Future Developments and User Engagement -
https://nix.dev/manual/nix/2.28/release-notes/rl-2.27
https://nix.dev/manual/nix/2.28/release-notes/rl-2.28
https://snix.dev/
https://github.com/NixOS/rfcs/blob/master/rfcs/0132-meson-builds-nix.md
https://fzakaria.com/2025/03/10/an-early-look-at-nix-dynamic-derivations
https://fzakaria.com/2025/03/11/nix-dynamic-derivations-a-practical-application
https://fzakaria.com/2025/03/12/nix-dynamic-derivations-a-lang2nix-practicum
https://discourse.nixos.org/t/nix-ninja-ninja-compatible-incremental-build-system-for-nix/62594?u=mightyiam
https://mesonbuild.com/
https://cmake.org/
https://ninja-build.org/
https://bazel.build/
https://buck2.build/
Chapters (generated)00:00 Introduction
01:26 Nix File Formatting
02:38 Packaging Improvements and Granularity
05:27 Development Shell and Build Process
06:32 Error Message Improvements
09:21 Hydra Code Simplification
13:00 Bug Fixes and Maintenance
17:25 New Features in Flakes
21:32 Git LFS Support and Fetching Mechanisms
24:09 Change Root Store Enhancements
28:10 --out-link flag for Prefetch Command
30:13 Understanding File Descriptors and Process Management
31:59 BLAKE3 Hash Support and Its Implications
34:03 Release 2.27.0: Infrastructure Overhaul and Changes
35:47 C++ API Rework and Its Impact
38:25 Stability and Breaking Changes in Nix
42:34 Downstream Project Involvement and Ecosystem Participation
50:03 C API Development and Global Variables
52:32 Future Directions: Dynamic Derivations and Ecosystem Growth -
Saknas det avsnitt?
-
Summary (generated)
In this conversation, Shahar "Dawn" Or interviews Farid Zakaria, a software engineer and PhD candidate, about his experiences with Nix, a powerful tool for reproducible software development. Farid shares his journey of learning Nix, its infectious nature, and its application in enterprise environments. He discusses the concept of innovation tokens, the challenges of teaching Nix, and how it has influenced his PhD research. The conversation also delves into dynamic linking, performance improvements, and the potential of Nix as a research platform. In this conversation, Farid Zakaria discusses the challenges and innovations in software performance, particularly focusing on application start-up times and the implications of dynamic versus static linking. He introduces the concept of stable linking, which aims to enhance software responsiveness and security while addressing historical decisions in software development. The discussion also touches on the potential for broader applications beyond C/C++, the importance of auditing in software, and the cultural shifts needed in the software development community to adopt these innovations.
Takeaways (generated)
Nix empowers reproducible software development.
The journey to learning Nix can be challenging but rewarding.
Nix is increasingly being adopted in enterprise environments.
Innovation tokens are crucial for evaluating new technologies.
Teaching Nix effectively requires understanding its practical applications.
Nix can significantly improve development environments.
Dynamic linking presents unique challenges that Nix can address.
Nix allows for performance optimizations in software applications.
Nix serves as a valuable research platform for PhD candidates.
The community around Nix is diverse and supportive.
Application start-up times can be significantly improved with optimization techniques.
Reducing the number of symbols in applications can lead to faster performance.
Stable linking offers a way to enhance software security and performance.
Dynamic linking has historical roots in resource constraints and code reuse.
The future of software may see faster responsiveness across all applications.
Auditing software for compatibility and security is crucial in modern development.
Compiler innovations can lead to substantial speed improvements in software builds.
C and C++ are not the only languages that can benefit from these linking techniques.
Cultural shifts in the software community are necessary for adopting new practices.
Practical implementation of stable linking could revolutionize how software is built and run.Chapters (generated)
00:00 Introduction and Background
02:14 Exploring Nix and Its Community
05:00 The Transition from Hobbyist to Enterprise
06:47 Nix's Infectious Nature and Deployment Challenges
09:18 The Appeal of Nix for Development Environments
11:48 Innovation Tokens and Nix's Value Proposition
13:57 Bringing Nix to Looker and Google
15:39 Teaching Nix and Overcoming Adoption Hurdles
18:33 The Role of Nix in PhD Research
21:04 Dynamic Linking and Performance Optimization
23:41 Benchmarking and Results
26:19 Conclusion and Future Directions
48:14 The Impact of Speed on Software Development
55:34 The Future of Dynamic Linking and Its Implications
58:49 Stable Linking: A New Paradigm
01:05:04 Revisiting the Rationale Behind Dynamic Linking
01:11:15 Implementing Stable Linking in Nixpkgs
https://fzakaria.com/https://www.confluent.io/
https://kafka.apache.org/
https://bazel.build/
https://www.ucsc.edu/
https://fulltimenix.com/episodes/domen-kozar
https://fulltimenix.com/episodes/jonathan-ringer
https://edolstra.github.io/pubs/phd-thesis.pdf
https://cloud.google.com/lookerhttps://www.youtube.com/watch?v=HGEY6ABQUBw
https://www.youtube.com/watch?v=GkgsFbwYdYA
https://www.youtube.com/watch?v=HZKFe4mCkr4
https://www.youtube.com/watch?v=gQstiX7H8MQ&t=183shttps://spack.io/
https://www.debian.org/
https://fedoraproject.org/
“apt-get mindset”
https://brew.sh/
https://nixos.org/manual/nixpkgs/unstable/#haskell
https://nixos.org/manual/nixpkgs/unstable/#python
https://man7.org/linux/man-pages/man8/ld.so.8.html
https://github.com/nix-community/nix-ld
https://supercomputing.org/https://github.com/fzakaria/shrinkwrap
https://github.com/NixOS/nixpkgs/pull/207061https://arxiv.org/abs/2501.06716
How To Write Shared Libraries by Ulrich Drepper
https://en.wikipedia.org/wiki/Address_space_layout_randomization
https://en.wikipedia.org/wiki/Global_Offset_Tablehttps://clang.llvm.org/
https://www.openoffice.org/
https://en.wikipedia.org/wiki/Network_File_System
https://en.wikipedia.org/wiki/Epyc
https://en.wikipedia.org/wiki/NVM_Expresshttps://musl.libc.org/
https://www.alpinelinux.org/
https://cve.mitre.org/
https://github.com/openssl/openssl#overview
https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
https://nixos.org/manual/nixpkgs/unstable/#setup-hook-autopatchelfhook
https://guix.gnu.org/ -
https://cache.nixos.org
https://nixbuild.net/
https://nix.dev/manual/nix/2.26/store/types/
https://www.cachix.org/
https://nix.dev/manual/nix/2.26/development/experimental-features.html#xp-feature-dynamic-derivations
https://nix.dev/manual/nix/2.26/development/experimental-features.html#xp-feature-ca-derivationshttps://lix.systems/
https://tvix.dev/https://github.com/ngi-nix/summer-of-nix
https://nixos.org/community/teams/nix/
https://github.com/Ericson2314https://www.haskell.org/
https://slurm.schedmd.com/https://planetnix.com/
Generated chapters:
00:00 Introduction to Nix and Remote Building
02:38 Understanding Nix Daemon and Communication Protocols
05:01 Exploring Derivations and Their Role in Nix
07:26 Setting Up Remote Builders in Nix
09:48 Remote Building Process and Configuration
12:08 Remote Store vs Remote Builder Features
14:21 Managing Build Outputs and Dependencies
16:45 Optimizing Remote Builds and Scheduling
19:28 Conclusion and Future Improvements
24:16 Understanding Remote Store Features
24:43 Continuous Integration (CI) Workflows
26:37 Leveraging Remote Builders in CI
29:20 Exploring Nix Store Components
35:26 The Role of Substitutes in Nix
40:48 Introducing nixbuild.net: A Solution for Nix Builds
50:15 The Power of Concurrency in Build Services
54:11 Choosing nixbuild.net for Efficient Builds
55:17 Understanding Latency and On-Site Options
59:29 Hardware and Architectures for Nix Builds
01:01:37 When to Consider nixbuild.net
01:03:49 Managing Compatibility with Nix Versions
01:06:22 The Nix Community and Company Dynamics
01:07:59 Contributions to the Open Source Ecosystem
01:16:28 Internal Stack and Resource Management
01:21:05 Final Thoughts and Future Directions -
https://opensource.apple.com/releases/
https://en.wikipedia.org/wiki/NeXTSTEP
https://brew.sh/
https://www.opengroup.org/openbrand/register/
https://en.wikipedia.org/wiki/Property_list
https://repology.org/repository/nix_unstable
https://nixos.org/manual/nixpkgs/unstable/#chap-stdenv
https://libcxx.llvm.org/ReleaseNotes/19.html#deprecations-and-removals
Tracking issue for Darwin stdenv LLVM update:
I’d also credit reno and emilazy for driving the LLVM 19 upgrade. They used a few patches from a WIP Clang 18 branch I’d started over the summer, but they pushed the update over the finish line once breaking changes were allowed after the 24.11 release.
https://github.com/NixOS/nixpkgs/issues/234710https://en.wikipedia.org/wiki/Interface_Builder
https://developer.apple.com/metal/
https://developer.apple.com/xcode/
https://github.com/facebookarchive/xcbuild
https://ghostty.org/
https://nixos.org/manual/nixpkgs/unstable/#deploying-a-proxy-component-wrapper-exposing-xcode
MacVim in nixpkgs:
https://github.com/NixOS/nixpkgs/blob/50784a2835c150d6055861a5ad703a57b8070cbb/pkgs/applications/editors/vim/macvim.nixhttps://github.com/orgs/NixOS/teams/darwin-core
https://github.com/reckenrode
https://github.com/emilazy
https://github.com/toonnPR establishing the Darwin team:
https://github.com/NixOS/nixpkgs/pull/348183https://developer.apple.com/documentation/corefoundation
when Apple implemented this hardening, before it just happened to work. So, and this actually affected Nix because Nix uses the AWS C++ SDK and that stopped building
https://github.com/NixOS/nixpkgs/pull/265102macOS 15 Sequoia clobbers _nixbld1-4 users:
https://github.com/NixOS/nix/issues/10892https://github.com/DeterminateSystems/nix-installer
https://fishshell.com/
https://github.com/LnL7/nix-darwin
Fixing waifu2x-converter-cpp on Darwin:
Though it turns out my actually first nixpkgs PR was fixing vscode-lldb on Darwin:
https://github.com/NixOS/nixpkgs/pull/135725
https://github.com/NixOS/nixpkgs/pull/131324https://github.com/KhronosGroup/MoltenVK
Last year, Connor Baker created a draft PR to add the missing SDK.
Connor Baker’s draft PR adding more SDKs:
https://github.com/NixOS/nixpkgs/pull/229210https://www.vulkan.org/
Darwin SDK PR (has links to my PRs fixing issues):
https://github.com/NixOS/nixpkgs/pull/346043Discourse post with the SDK update announcement:
Here’s that list (by GitHub id). These people were all very helpful with ensuring these Darwin improvements made it to master.staging-next with the clang 16 update (tried to get everyone who contributed during that cycle; appologies if I missed anyone):AtemuanthonyrousselazuwisboltzmannrainemilytraujosephstjudofyrmfrischknechphiliptarontoonntrofiwegankDarwin SDK update. It turns out that in spite of radically changing the pattern, providing an SDK by default tends to just work.emilazykhanelimanpaparodeotoonnI also want to thank midchildan for contributing fixes to xcbuild to address some of the post-release issues users have encountered with having it in a dev shell by default. I also wanted to call out the great work getting Zed and Firefox building on Darwin with these SDK changes:niklaskorz (for Zed)booxter (for Firefox)
https://discourse.nixos.org/t/the-darwin-sdks-have-been-updated/55295https://github.com/apple-oss-distributions
https://github.com/apple-oss-distributions/dyld
Note that the source for ld-prime is actually removed from the distribution. I’d package it if it were there, but it’s not.https://github.com/LnL7/nix-darwin
https://github.com/nix-community/home-manager
Another call for Darwin maintainers:
https://github.com/NixOS/nixpkgs/issues/323144https://github.com/NixOS/rfcs/pull/112
Generated chapters:
00:00 Introduct...
-
https://github.com/NixOS/nix/releases/tag/2.24.11
https://github.com/NixOS/nix/releases/tag/2.25.4
https://github.com/NixOS/nix/releases/tag/2.24.12
https://github.com/NixOS/nix/releases/tag/2.26.0
https://github.com/NixOS/nix/releases/tag/2.26.1https://github.com/NixOS/nix/issues/6316
https://github.com/NixOS/nix/pull/12045
https://github.com/NixOS/rfcs/pull/132
-
https://github.com/NixOS/nixpkgs/commits?author=GaetanLepage
https://github.com/nix-community/nixvimhttps://ensimag.grenoble-inp.fr/en
https://github.com/nix-community/nixvim/commits?author=traxyshttps://nixos.org/manual/nixpkgs/unstable/#python
https://nix.dev/guides/recipes/python-environment.html
https://wiki.nixos.org/wiki/Pythonhttps://github.com/NixOS/nixpkgs/tree/00c24cc9cabab1bb8828311a670242ac80dd2ac5/pkgs/development/python-modules/torch
https://wiki.nixos.org/wiki/JAX
https://github.com/NixOS/nixpkgs/tree/00c24cc9cabab1bb8828311a670242ac80dd2ac5/pkgs/development/python-modules/jaxhttps://wiki.nixos.org/wiki/Tensorflow
https://github.com/NixOS/nixpkgs/blob/00c24cc9cabab1bb8828311a670242ac80dd2ac5/pkgs/development/python-modules/tensorflowhttps://github.com/NixOS/nixpkgs/blob/00c24cc9cabab1bb8828311a670242ac80dd2ac5/pkgs/development/python-modules/protobuf
https://github.com/NixOS/nixpkgs/issues/157398
https://github.com/NixOS/rfcs/pull/166
https://github.com/NixOS/rfcs/pull/140Some recent contributions by Gaétan
https://github.com/NixOS/nixpkgs/pull/362844
https://github.com/NixOS/nixpkgs/pull/363751
https://github.com/Mic92/nixpkgs-review/pull/440https://github.com/NixOS/nixfmt
https://github.com/nix-community/nix-inithttps://github.com/ekala-project
https://github.com/jonringer
https://github.com/nrdxphttps://github.com/nix-community/nixvim
https://github.com/nix-community/home-manager
Pedro Alves
https://github.com/pta2002https://github.com/traxys
https://github.com/MattSturgeon
https://github.com/khaneliman
https://github.com/nix-community/nixvim/graphs/contributorsNixvim: Configure Neovim with the power of Nix (NeovimConf 2023):
https://youtu.be/GOe0C7Qtypk?si=T9gd0evaS8W3HvG-```
nix run github:mightyiam/infra#nixvim
```https://github.com/folke/lazy.nvim
https://github.com/nvim-neorocks/lz.nGenerated chapters:
00:00 Introduction to the Podcast and Guest
06:15 Understanding NixOS Use Cases
11:53 The Contribution Process Explained
25:22 Nixpkgs Review Tool and CI Challenges
34:26 Infrastructure and CI Limitations
38:37 Transitioning to GitHub Actions
45:07 Multi-System Evaluation Explained
50:32 Contributions to Python Packages
58:08 Challenges in Nix Packages
01:02:27 Recent Progress in Nixpkgs
01:07:53 NixVim Features and Benefits
01:11:22 Gaétan's Involvement in NixVim
01:19:33 NixVim: Configuration vs Distribution
01:23:44 NixVim Options and Flexibility
01:26:27 Plugin Management in NixVim
01:29:27 Settings and Configuration Options
01:32:06 Keeping Up with Plugin Changes
01:37:24 User Contributions and Community Engagement
01:44:13 Future Perspectives for NixVim -
https://www.youtube.com/@molybdenumsoftware
https://github.com/NixOS/rfcs/pull/101
https://github.com/NixOS/nixfmt
nixfmt created by https://serokell.io/
https://github.com/nix-community/nixpkgs-fmt
https://github.com/NixOS/rfcs/pull/166
https://github.com/kamadorueda/alejandra
https://piegames.de/
https://github.com/0x4A6F
https://github.com/tomberek
https://github.com/dasJ
https://nixos.org/community/teams/formatting/https://github.com/numtide/treefmt
https://github.com/NixOS/nixpkgs/pull/322537
https://github.com/NixOS/nixpkgs/pull/322537#issuecomment-2532934880https://www.tweag.io/
https://antithesis.com/https://hintjens.gitbooks.io/social-architecture/content/chapter4.html
https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md
https://moduscreate.com/
Auto-generated chapters:
00:00 Introduction and Background
01:44 The Journey to Standardized Formatting
06:17 The Evolution of RFC 101 to 166
11:22 The Role of the Shepherd Team
15:59 Defining the Formatting Rules
19:51 Finalizing the RFC and Implementation
25:01 Implementation Insights and Challenges
27:23 Finalizing the Formatter and Addressing Issues
30:09 Tree-Wide Reformatting: Strategies and Challenges
34:15 Ensuring Consistency in Formatting
38:54 Future Plans for Formatting and Maintenance
46:51 Enhancing PR Review Processes
49:28 Streamlining Local Formatting with treefmt
53:14 Managing Version Control and Formatting Conflicts
55:45 The Role of the Formatting Team
57:16 Exploring Linting and Future Maintenance
01:01:02 Automation and Community Contributions
01:04:10 C4 Guidelines for Effective PR Reviews
01:07:30 The Future of Documentation and Automation
01:10:15 Motivation Behind Community Contributions -
https://github.com/NixOS/nix/releases/tag/2.25.3
-
https://fulltimenix.com/episodes/martin-schwaighofer-steering-committee-candidate
https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf
https://github.com/NixOS/nixpkgs
https://oxide.computer/
https://github.com/nix-community/lanzaboote
https://en.wikipedia.org/wiki/UEFI#Secure_Boot
NixCon2024 rebuilding builders instead of trusting trust
https://youtu.be/UlJUpUQc9Lc?si=_EebfQszx062M2mRExtending cloud build systems to eliminate transitive trust:
https://discourse.nixos.org/t/extending-cloud-build-systems-to-eliminate-transitive-trust/50841https://scored.dev/
https://reproducible-builds.org/
Build systems à la carte: Theory and practice
https://www.cambridge.org/core/journals/journal-of-functional-programming/article/build-systems-a-la-carte-theory-and-practice/097CE52C750E69BD16B78C318754C7A4?utm_campaign=shareaholic&utm_medium=copy_link&utm_source=bookmarkImplementing a content-addressed Nix, 2 December 2021 — by Théophane Hufschmitt
https://www.tweag.io/blog/2021-12-02-nix-cas-4/https://github.com/nix-community/trustix
https://nixos.org/research/
00:00 Introduction and Background
01:28 Martin's Journey in Computer Science
02:57 Compiler Construction Course Insights
04:20 The Concept of Self-Compiling Compilers
07:10 Hiding stuff in the compiler
08:47 Trusting Trust: Compiler Security Issues
09:58 Nix and Build Process Management
12:09 Bootstrapping and Auditing in Nixpkgs
13:21 Trust in Software and Hardware Security
18:01 Secure Boot and Its Implications
20:39 Scenario: Government Agency Targeting
22:15 More on boot security
28:09 The Role of Secure Boot and Measured Boot
29:52 Measured boot
35:13 Democratizing Trust with Remote Attestation
36:11 Raising the bar on security
39:31 Research Directions in Supply Chain Security
47:34 Enhancing Nix for Security and Efficiency
50:20 Understanding Reproducibility in Build Processes
53:13 Navigating Trust and Threat Models in Nix
53:22 Identifying Gaps in Nix's Trust Mechanisms
56:48 Attribution and Trust in Build Systems
01:05:35 Distinguishing Between Input and Content Addressing in Nix
01:06:38 Nix store hashes
01:12:52 The Challenges of Content Addressing
01:14:04 Self-References and Their Implications
01:20:24 Trust and Attribution in Build Processes
01:24:31 Future Directions for Nix and Content Addressing
01:30:00 Sponsoring opportunitySponsor:
-
https://github.com/NixOS/nix/releases/tag/2.25.0
https://github.com/NixOS/nix/releases/tag/2.25.1
https://github.com/NixOS/nix/releases/tag/2.25.2 -
https://github.com/NixOS/SC-election-2024/blob/main/candidates/roberth.md
-
https://github.com/NixOS/SC-election-2024/blob/main/candidates/nyabinary.md
If you have any further questions for Niko, please reach out to them on Matrix at: @niko:nyanbinary.rs
-
https://github.com/NixOS/SC-election-2024/blob/main/candidates/numinit.md
-
https://github.com/NixOS/SC-election-2024/blob/main/candidates/djacu.md
-
https://github.com/NixOS/SC-election-2024/blob/main/candidates/phaer.md
-
https://github.com/NixOS/SC-election-2024/blob/main/candidates/asymmetric.md
-
https://github.com/NixOS/SC-election-2024/blob/main/candidates/mschwaig.md
-
https://github.com/NixOS/SC-election-2024/blob/main/candidates/Gabriella439.md
- Visa fler