Compare commits

12 Commits
Author SHA1 Message Date
Olaf 421f42e5f5 comment on how to test the overlay is needed. 2026-09-30 20:41:34 +02:00
Olaf 12f04133c2 Pinned Zotero after a compile time error. 2026-09-30 20:21:53 +02:00
Olaf 92fa9b7456 authorized keys and gpg/common CNC.js removed 2026-09-25 15:28:46 +02:00
Olaf 8b48e295c6 CNCjs and update 2026-09-25 12:49:11 +02:00
Olaf 303bf80633 bit of cleanup of linux remnants and libreoffice-bin from packages instead of mas 2026-09-18 10:59:57 +02:00
Olaf de3eb544a8 alicrity error [config change] 2026-09-16 16:22:03 +02:00
Olaf acdb913edb emacs startup error in projectile 2026-09-16 16:17:02 +02:00
Olaf 41a9a18e0a alacrity term definition 2026-09-16 16:16:48 +02:00
Olaf a0b974e71a texlive deprication 2026-09-16 16:16:36 +02:00
Olaf f923fb7717 emacs Sha 2026-09-16 14:23:19 +02:00
kolkman 969e5e5dd3 excluded nightsky on x86 2026-09-15 20:55:37 +02:00
kolkman 3e6a7391df Architecture split. 2026-09-15 20:46:52 +02:00
11 changed files with 163 additions and 110 deletions
+1 -10
View File
@@ -113,20 +113,11 @@ confirm_details
replace_tokens() {
local file="$1"
if [[ $(basename $1) != "apply" ]]; then
if [[ "$OS" == "Darwin" ]]; then
# macOS
LC_ALL=C LANG=C sed -i '' -e "s/%USER%/$USERNAME/g" "$file"
LC_ALL=C LANG=C sed -i '' -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
LC_ALL=C LANG=C sed -i '' -e "s/%NAME%/$GIT_NAME/g" "$file"
else
# Linux or other
sed -i -e "s/%USER%/$USERNAME/g" "$file"
sed -i -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
sed -i -e "s/%NAME%/$GIT_NAME/g" "$file"
sed -i -e "s/%INTERFACE%/$PRIMARY_IFACE/g" "$file"
sed -i -e "s/%DISK%/$BOOT_DISK/g" "$file"
sed -i -e "s/%HOST%/$HOST_NAME/g" "$file"
fi
fi
}
-10
View File
@@ -113,20 +113,10 @@ confirm_details
replace_tokens() {
local file="$1"
if [[ $(basename $1) != "apply" ]]; then
if [[ "$OS" == "Darwin" ]]; then
# macOS
LC_ALL=C LANG=C sed -i '' -e "s/%USER%/$USERNAME/g" "$file"
LC_ALL=C LANG=C sed -i '' -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
LC_ALL=C LANG=C sed -i '' -e "s/%NAME%/$GIT_NAME/g" "$file"
else
# Linux or other
sed -i -e "s/%USER%/$USERNAME/g" "$file"
sed -i -e "s/%EMAIL%/$GIT_EMAIL/g" "$file"
sed -i -e "s/%NAME%/$GIT_NAME/g" "$file"
sed -i -e "s/%INTERFACE%/$PRIMARY_IFACE/g" "$file"
sed -i -e "s/%DISK%/$BOOT_DISK/g" "$file"
sed -i -e "s/%HOST%/$HOST_NAME/g" "$file"
fi
fi
}
+71 -26
View File
@@ -2,23 +2,36 @@
description = "Starter configuration for macOS with nix-darwin";
inputs = {
nixpkgs = {
url = "github:nixos/nixpkgs//nixpkgs-26.05-darwin";
# url = "github:nixos/nixpkgs/nixpkgs-unstable";
nixpkgsAarch64 = {
url = "github:nixos/nixpkgs/nixpkgs-unstable";
};
home-manager = {
nixpkgsX86 = {
url = "github:nixos/nixpkgs//nixpkgs-26.05-darwin";
};
homeManagerAarch64 = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgsAarch64";
};
homeManagerX86 = {
url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgsX86";
};
nixd = {
url = "github:nix-community/nixd";
};
darwin = {
# url = "github:nix-darwin/nix-darwin";
darwinAarch64 = {
url = "github:nix-darwin/nix-darwin";
inputs.nixpkgs.follows = "nixpkgsAarch64";
};
darwinX86 = {
url = "github:nix-darwin/nix-darwin/nix-darwin-26.05";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs.follows = "nixpkgsX86";
};
brew-src = {
@@ -43,7 +56,7 @@
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs.follows = "nixpkgsAarch64";
};
nix-vscode-extensions = {
@@ -67,12 +80,15 @@
outputs =
{
self,
darwin,
darwinAarch64,
darwinX86,
nix-homebrew,
homebrew-core,
homebrew-cask,
home-manager,
nixpkgs,
homeManagerAarch64,
homeManagerX86,
nixpkgsAarch64,
nixpkgsX86,
nixd,
sops-nix,
nix-vscode-extensions,
@@ -82,17 +98,33 @@
}@inputs:
let
user = "olaf";
lib = nixpkgsAarch64.lib;
darwinSystems = [
"aarch64-darwin"
"x86_64-darwin"
];
forAllSystems = f: nixpkgs.lib.genAttrs darwinSystems f;
perSystem = {
aarch64-darwin = {
nixpkgs = nixpkgsAarch64;
darwin = darwinAarch64;
home-manager = homeManagerAarch64;
pkgs = nixpkgsAarch64.legacyPackages.aarch64-darwin;
};
x86_64-darwin = {
nixpkgs = nixpkgsX86;
darwin = darwinX86;
home-manager = homeManagerX86;
pkgs = nixpkgsX86.legacyPackages.x86_64-darwin;
};
};
forAllSystems = f: lib.genAttrs darwinSystems f;
devShell =
system:
let
pkgs = nixpkgs.legacyPackages.${system};
pkgs = perSystem.${system}.pkgs;
in
{
default =
@@ -125,18 +157,23 @@
};
};
mkApp = scriptName: system: {
type = "app";
program = "${
(nixpkgs.legacyPackages.${system}.writeScriptBin scriptName ''
mkApp =
scriptName: system:
let
pkgs = perSystem.${system}.pkgs;
in
{
type = "app";
program = "${
(pkgs.writeScriptBin scriptName ''
#!/usr/bin/env bash
PATH=${nixpkgs.legacyPackages.${system}.git}/bin:$PATH
PATH=${pkgs.git}/bin:$PATH
echo "Running ${scriptName} for ${system}"
sudo chmod +x ${self}/apps/${system}/${scriptName}
exec ${self}/apps/${system}/${scriptName}
'')
}/bin/${scriptName}";
};
}/bin/${scriptName}";
};
mkDarwinApps = system: {
"apply" = mkApp "apply" system;
@@ -147,15 +184,23 @@
in
{
devShells = forAllSystems devShell;
apps = nixpkgs.lib.genAttrs darwinSystems mkDarwinApps;
apps = lib.genAttrs darwinSystems mkDarwinApps;
darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems (
darwinConfigurations = lib.genAttrs darwinSystems (
system:
darwin.lib.darwinSystem {
let
systemConfig = perSystem.${system};
in
systemConfig.darwin.lib.darwinSystem {
inherit system;
specialArgs = inputs // { inherit system; };
specialArgs = inputs // {
inherit system;
nixpkgs = systemConfig.nixpkgs;
darwin = systemConfig.darwin;
home-manager = systemConfig.home-manager;
};
modules = [
home-manager.darwinModules.home-manager
systemConfig.home-manager.darwinModules.home-manager
nix-homebrew.darwinModules.nix-homebrew
{
nix-homebrew = {
@@ -170,7 +215,7 @@
};
home-manager.sharedModules =
nixpkgs.lib.optionals (system != "x86_64-darwin") [
lib.optionals (system != "x86_64-darwin") [
catppuccin.homeModules.catppuccin
];
}
+1 -1
View File
@@ -49,7 +49,7 @@
:bind-keymap ("C-c p" . projectile-command-map)
:defer 5
:config
(projectile-global-mode))
(projectile-mode +1))
+1
View File
@@ -14,6 +14,7 @@ _:
"inkscape"
"vcv-rack"
"affinity"
# Communication Tools
"adium"
+1 -1
View File
@@ -1,7 +1,7 @@
{ config, pkgs, ... }:
let
emacsOverlaySha256 = "1abfqnjs3ysmg8k41hwncwzphkcw9884sskmfp2kj24cd9j7kpsz";
emacsOverlaySha256 = "1smprpp3zqh04jdv0b7ibc69n025j1bnpp76lnwyvidilf055g2h";
in
{
home-manager.backupFileExtension = "nix-backup";
+24
View File
@@ -9,11 +9,32 @@ let
xdg_configHome = "${config.users.users.${user}.home}/.config";
xdg_dataHome = "${config.users.users.${user}.home}/.local/share";
xdg_stateHome = "${config.users.users.${user}.home}/.local/state";
inkscapeExtensionsHome = "${config.users.users.${user}.home}/Library/Application Support/org.inkscape.Inkscape/config/inkscape/extensions";
hatchFillSource = pkgs.fetchzip {
url = "https://gitlab.com/moini_ink/hatch_fill/-/archive/master/hatch_fill-master.tar.gz";
sha256 = "1m3qhvf158dngg7shwd33xhn3bawn9yxw2srv2k8qjn889wjvi82";
};
in
{
# Shared file definitions moved into the Darwin module set.
"${config.users.users.${user}.home}/.gnupg/common.conf" = {
text = ''
# keyboxd configuration collides with gpg keymanager.app
# use-keyboxd
'';
};
"${config.users.users.${user}.home}/.ssh/authorized_keys" = {
text = ''
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAILVdAx+U1xhcJmh1hRaF0CVB0ivIF/U0oIbAWYPwko4iAAAABHNzaDo= Yubikey 35775013
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIIjnJyJUDnia6ZWPRa5iSBKCb+DMGmFtiFa+9gkeiTwQAAAABHNzaDo= Yubikey 36431751
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIFhuPQUHUHchx8wHVCciMi6etzZStkpECbG/r/1imy+kAAAABHNzaDo= Yubikey 36431881
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILCEBZrQ9F3nLhEM9uqdPijut11vhYkdmLtj7gT/zgV3 Key Nov 2024
'';
};
# Raycast script so that "Run Emacs" is available and uses Emacs daemon
"${xdg_dataHome}/bin/emacsclient" = {
executable = true;
@@ -39,4 +60,7 @@ in
fi
'';
};
"${inkscapeExtensionsHome}/hatch_fill.inx".source = "${hatchFillSource}/hatch_fill.inx";
"${inkscapeExtensionsHome}/hatch_fill.py".source = "${hatchFillSource}/hatch_fill.py";
}
+27 -27
View File
@@ -62,13 +62,12 @@ in
"Affinity Publisher 2" = 1606941598;
# "DaisyDisk" = 409907375; # (4.32) # Don't use this, we need the official version that is not sandboxed
"Fantastical - Calendar" = 975937182;
"Fedistar" = 6445863996; # (1.13.1)
"Fedistar" = 6445863996; # (1.13.1)
"Home Assistant" = 1099568401; # (2025.7.1)
"Ice Cubes for Mastodon" = 6444915884; # (1.11.3)
"LibreOffice" = 1630474372;
#"LibreOffice" = 1630474372;
"Monal - XMPP Chatting " = 1637078500;
"MQTT Explorer" = 1455214828; # (0.3.5)
"Night Sky" = 475772902; # 475772902
"Native SQLite Manager" = 1416282836; # (1.31.0)
"Remarkable Desktop" = 1276493162; # (3.19.0)
"Slack for Desktop" = 803453959; # (4.45.60)
@@ -76,6 +75,9 @@ in
"Windows App Installer" = 1295203466; # (1.0.16)
"Wireguard" = 1451685025; # (1.0.16)
### "1Password: Password Manager" = 1511601750; # (8.11.0) Does not seem to insta
}
// lib.optionalAttrs (system != "x86_64-darwin") {
"Night Sky" = 475772902; # 475772902
};
};
@@ -116,8 +118,19 @@ in
style = "Block";
};
env = {
TERM = "xterm-256color";
};
window = {
opacity = 1.0;
dynamic_padding = true;
decorations = "full";
title = "Terminal";
class = {
instance = "Alacritty";
general = "Alacritty";
};
padding = {
x = 24;
y = 24;
@@ -129,18 +142,7 @@ in
family = "MesloLGS NF";
style = "Regular";
};
size = lib.mkMerge [
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux 10)
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin 14)
];
};
dynamic_padding = true;
decorations = "full";
title = "Terminal";
class = {
instance = "Alacritty";
general = "Alacritty";
size = 14;
};
colors = {
@@ -202,10 +204,7 @@ in
"vps3.evangineer.net".forwardAgent = true;
"vps2.evangineer.net".forwardAgent = true;
};
includes = [
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux "/home/${user}/.ssh/config_external")
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin "/Users/${user}/.ssh/config_external")
];
includes = [ "/Users/${user}/.ssh/config_external" ];
};
gpg = {
@@ -229,19 +228,19 @@ in
};
initContent =
let
zshConfigBefore = lib.mkBefore ''
if [[ "$TERM" == "alacritty" ]] && ! infocmp alacritty >/dev/null 2>&1; then
export TERM="xterm-256color"
fi
export TERMINFO_DIRS="$HOME/.nix-profile/share/terminfo:/run/current-system/sw/share/terminfo:/nix/var/nix/profiles/default/share/terminfo:/usr/share/terminfo"
'';
zshConfigEarlyInit = lib.mkOrder 500 ''
if [[ -f /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh ]]; then
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
. /nix/var/nix/profiles/default/etc/profile.d/nix.sh
fi
if [[ "$TERM" == "alacritty" ]]; then
export TERMINFO_DIRS="$HOME/.nix-profile/share/terminfo:/run/current-system/sw/share/terminfo:/nix/var/nix/profiles/default/share/terminfo:/usr/share/terminfo"
if ! infocmp alacritty >/dev/null 2>&1; then
export TERM="xterm-256color"
fi
fi
# GPGAgent for SSH
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
@@ -283,6 +282,7 @@ in
'';
in
lib.mkMerge [
zshConfigBefore
zshConfigEarlyInit
zshConfigLastInit
];
@@ -579,7 +579,7 @@ in
{ path = "/Applications/Visual Studio Code.app/"; }
{ path = "/Applications/Home Assistant.app/"; }
{ path = "/Applications/reMarkable.app/"; }
{ path = "/Applications/LibreOffice.app/"; }
{ path = "/run/current-system/Applications/LibreOffice.app/"; }
{ path = "/Applications/Microsoft Word.app/"; }
{ path = "/Applications/Microsoft PowerPoint.app/"; }
{ path = "/Applications/Microsoft Teams.app/"; }
+10 -5
View File
@@ -35,6 +35,7 @@ with pkgs;
killall
minicom
mtr
ncurses
ncdu
nodejs
@@ -86,6 +87,7 @@ with pkgs;
hunspell
iftop
inetutils # includes Telnet
libreoffice-bin
ripgrep
tmux
tree
@@ -96,7 +98,9 @@ with pkgs;
uv
(python3.withPackages (
python-pkgs: with python-pkgs; [
python-pkgs:
with python-pkgs;
[
bidict
blinker
certifi
@@ -106,6 +110,7 @@ with pkgs;
flask-socketio
h11
idna
intelhex
importlib-metadata
itsdangerous
jinja2
@@ -150,8 +155,8 @@ with pkgs;
xml2rfc
zotero
(texlive.combine {
inherit (texlive)
(texliveSmall.withPackages (
texlivePackages: with texlivePackages; [
apa6
apa7
apacite
@@ -200,8 +205,8 @@ with pkgs;
xecjk
xifthen
xurl
;
})
]
))
dockutil
]
-30
View File
@@ -1,30 +0,0 @@
self: super: with super; {
feather-font = let
version = "1.0";
pname = "feather-font";
in stdenv.mkDerivation {
name = "${pname}-${version}";
src = fetchzip {
url = "https://github.com/dustinlyons/feather-font/archive/refs/tags/${version}.zip";
sha256 = "sha256-Zsz8/qn7XAG6BVp4XdqooEqioFRV7bLH0bQkHZvFbsg=";
};
buildInputs = [ unzip ];
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
mkdir -p $out/share/fonts/truetype
cp $src/feather.ttf $out/share/fonts/truetype/
'';
meta = with lib; {
homepage = "https://www.feathericons.com/";
description = "Set of font icons from the open source collection Feather Icons";
license = licenses.mit;
maintainers = [ maintainers.dlyons ];
platforms = [ platforms.x86_64-linux platforms.x86_64-darwin ];
};
};
}
+27
View File
@@ -0,0 +1,27 @@
# To test if a new Zotero package works without the overlay try
# nix --extra-experimental-features 'nix-command flakes' eval --raw --impure --expr '
# let
# flake = builtins.getFlake (toString ./.);
# pkgs = import flake.inputs.nixpkgsAarch64 {
# system = "aarch64-darwin";
# config.allowUnfree = true;
# };
# in
# pkgs.zotero.version
# '
final: prev:
let
pinnedPkgs = import (builtins.fetchTarball {
# Last nixpkgs Zotero package revision before 10.0.2.
url = "https://github.com/NixOS/nixpkgs/archive/4118d63e017feb54b48e7341e4b6f0ac5348f074.tar.gz";
sha256 = "1w33226pjk7hs9hbzy0ghcvgps0yicm0r2zxnnrzsr26pzvjjm6z";
}) {
system = prev.stdenv.hostPlatform.system;
config = prev.config;
};
in
{
zotero = pinnedPkgs.zotero;
}