Loading...
Portfolio
nixos-config May 4, 2025

Nix Configurations for MacOS + NixOS

This is a group of personal configuration files using Nix that runs on MacOS as well as NixOS. This is 100% Flake driven with no configuration.nix as well as channels. This is my first time delving into everything that is Nix and while so far has been tested on a MacOS VM and a NixOS VM running on unRaid, this is my daily driver for both. 🤓 Please note this is a work in progress so there are bugs as I am learning to improve and set up for my personal needs.

NixOS MacOS
Shell zsh
DE none+bspwm Aqua
WM bspwm Amethyst
Theme WhiteSur-gtk-theme [GTK2/3]
Icons WhiteSur [GTK2/3]
Terminal Alacritty

Installing

MacOS

Change name for Mac and enable Full Disk Access for Terminal in settings

Install Dependencies

  • This is my daily driver on a Macbook Air (M1) running MacOS Sonoma
  • xcode-select --install

Install Nix

    curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

Create Keys

    nix run github:michaelkeates/nixos-config#createKeys

Initialize

    nix flake init -t github:michaelkeates/nixos-config#default

Installation

  • For the first-time, it is required to move the current /etc/nix/nix.conf out of the way
  • sudo mv /etc/nix/nix.conf /etc/nix/nix.conf.before-nix-darwin
  • Then finally run the script below. This wraps the Nix commands, builds and deploys a new Nix Generation as well as removes files that will crash the script.
  • chmod +x bin/darwin-build && chmod +x bin/build && bin/build


NixOS

Create Keys

    nix run github:michaelkeates/nixos-config#createKeys
  • This opens an editor to accept, encrypt, and write your secret to disk. Then push the age file to your private github repo
    • EDITOR=vim nix run github:ryantm/agenix -- -e secret.age

    Installation

      nix run --experimental-features 'nix-command flakes' github:michaelkeates/nixos-config#install

    Rebuild

    MacOS & NixOS

      nix run github:michaelkeates/nixos-config#rebuild

    Mentions

      dustinlyons for his Nix configuration files that this is heavily based on and what I learnt from so all rights to him.

      Repository

    Author



    Profile image

    Michael Keates

    I am a dedicated, hardworking individual with a robust background in all things related to computing and technology. Diligent, enthusiastic, and a team player, I possess a passion for learning and developing new skills, a strong attention to detail, and excellent verbal and written communication abilities. I am reliable and constantly seeking new challenges to broaden my knowledge and experience, while also enhancing my capacity to develop efficient and effective solutions for diverse requirements.

    © 2025 Michael Keates. All Rights Reserved.