Nix configurations for my personal machines (Linux & macOS)

Compare changes

Choose any two refs to compare.

+4 -2
files/karabiner/keybind-helpers.json
···
"description": "MacBook internal keyboard",
"vendor_id": 1452,
"product_id": 641
-
}
+
},
+
{ "is_built_in_keyboard": true }
]
}
],
···
"description": "MacBook internal keyboard",
"vendor_id": 1452,
"product_id": 641
-
}
+
},
+
{ "is_built_in_keyboard": true }
]
}
],
+39 -58
flake.lock
···
"home-manager": [
"home-manager"
],
-
"nix-darwin": "nix-darwin",
+
"nix-darwin": [
+
"nix-darwin"
+
],
"nixpkgs": [
"nixpkgs"
],
···
]
},
"locked": {
-
"lastModified": 1762087455,
-
"narHash": "sha256-hpbPma1eUKwLAmiVRoMgIHbHiIKFkcACobJLbDt6ABw=",
+
"lastModified": 1766682973,
+
"narHash": "sha256-GKO35onS711ThCxwWcfuvbIBKXwriahGqs+WZuJ3v9E=",
"owner": "nix-community",
"repo": "home-manager",
-
"rev": "43e205606aeb253bfcee15fd8a4a01d8ce8384ca",
+
"rev": "91cdb0e2d574c64fae80d221f4bf09d5592e9ec2",
"type": "github"
},
"original": {
···
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
-
"lastModified": 1762112996,
-
"narHash": "sha256-hDYJWcxcYrpCJ9Lxva9B+pAlhGJgwbr2e0guoQQfMoc=",
+
"lastModified": 1766765523,
+
"narHash": "sha256-DCk3GKdKZNjpvNuDy9ZVfVwCy3tlm96/UZnYkJO7N44=",
"owner": "sodiboo",
"repo": "niri-flake",
-
"rev": "bf4782cf43600a4bf14269ee28a7daae962b054b",
+
"rev": "a3e638c75d07de759421e6f34bd69c3f9a0a3567",
"type": "github"
},
"original": {
···
"niri-unstable": {
"flake": false,
"locked": {
-
"lastModified": 1761888958,
-
"narHash": "sha256-YgArUHI81Esn6fOCwVSrMI2G4RI3f3BPbRbPWsJubAc=",
+
"lastModified": 1766751930,
+
"narHash": "sha256-83/YSW6c58i/iwGzAFApuMy6MCgoIaROeCcoIGh+ViU=",
"owner": "YaLTeR",
"repo": "niri",
-
"rev": "e2576879216a39e5c45b9d2906531bc2065e724c",
+
"rev": "b5640d5293ad8dca06cb447692ea7cbb21680eb1",
"type": "github"
},
"original": {
···
"nix-darwin": {
"inputs": {
"nixpkgs": [
-
"denix",
"nixpkgs"
]
},
"locked": {
-
"lastModified": 1751313918,
-
"narHash": "sha256-HsJM3XLa43WpG+665aGEh8iS8AfEwOIQWk3Mke3e7nk=",
+
"lastModified": 1766784396,
+
"narHash": "sha256-rIlgatT0JtwxsEpzq+UrrIJCRfVAXgbYPzose1DmAcM=",
"owner": "nix-darwin",
"repo": "nix-darwin",
-
"rev": "e04a388232d9a6ba56967ce5b53a8a6f713cdfcf",
+
"rev": "f0c8e1f6feb562b5db09cee9fb566a2f989e6b55",
"type": "github"
},
"original": {
"owner": "nix-darwin",
-
"repo": "nix-darwin",
-
"type": "github"
-
}
-
},
-
"nix-darwin_2": {
-
"inputs": {
-
"nixpkgs": [
-
"nixpkgs"
-
]
-
},
-
"locked": {
-
"lastModified": 1762039661,
-
"narHash": "sha256-oM5BwAGE78IBLZn+AqxwH/saqwq3e926rNq5HmOulkc=",
-
"owner": "LnL7",
-
"repo": "nix-darwin",
-
"rev": "c3c8c9f2a5ed43175ac4dc030308756620e6e4e4",
-
"type": "github"
-
},
-
"original": {
-
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
···
]
},
"locked": {
-
"lastModified": 1762055842,
-
"narHash": "sha256-Pu1v3mlFhRzZiSxVHb2/i/f5yeYyRNqr0RvEUJ4UgHo=",
+
"lastModified": 1765267181,
+
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
"owner": "nix-community",
"repo": "nix-index-database",
-
"rev": "359ff6333a7b0b60819d4c20ed05a3a1f726771f",
+
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
"type": "github"
},
"original": {
···
"nixpkgs": "nixpkgs_2"
},
"locked": {
-
"lastModified": 1762048816,
-
"narHash": "sha256-gAGed5eYA6WTVQSMELyi+168A9N2UNEjwXn5xm0czsk=",
+
"lastModified": 1766801300,
+
"narHash": "sha256-1bl/PO1sXIeDLmvIJhWTv+hPxqDaFJEFrUu3C0eQ85M=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
-
"rev": "c8261cd60b0623635b4b88ae0f75ac3bfeddf260",
+
"rev": "9c58688d08c61abee3e564a89e35661480311647",
"type": "github"
},
"original": {
···
},
"nixpkgs-stable": {
"locked": {
-
"lastModified": 1761999846,
-
"narHash": "sha256-IYlYnp4O4dzEpL77BD/lj5NnJy2J8qbHkNSFiPBCbqo=",
+
"lastModified": 1766736597,
+
"narHash": "sha256-BASnpCLodmgiVn0M1MU2Pqyoz0aHwar/0qLkp7CjvSQ=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "3de8f8d73e35724bf9abef41f1bdbedda1e14a31",
+
"rev": "f560ccec6b1116b22e6ed15f4c510997d99d5852",
"type": "github"
},
"original": {
"owner": "NixOS",
-
"ref": "nixos-25.05",
+
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
-
"lastModified": 1759770925,
-
"narHash": "sha256-CZwkCtzTNclqlhuwDsVtGoRumTpqCUK0xSnFIMgd8ls=",
+
"lastModified": 1766025857,
+
"narHash": "sha256-Lav5jJazCW4mdg1iHcROpuXqmM94BWJvabLFWaJVJp0=",
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "674c2b09c59a220204350ced584cadaacee30038",
+
"rev": "def3da69945bbe338c373fddad5a1bb49cf199ce",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "674c2b09c59a220204350ced584cadaacee30038",
+
"rev": "def3da69945bbe338c373fddad5a1bb49cf199ce",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
-
"lastModified": 1761907660,
-
"narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=",
+
"lastModified": 1766651565,
+
"narHash": "sha256-QEhk0eXgyIqTpJ/ehZKg9IKS7EtlWxF3N7DXy42zPfU=",
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15",
+
"rev": "3e2499d5539c16d0d173ba53552a4ff8547f4539",
"type": "github"
},
"original": {
···
"iosevka-solai": "iosevka-solai",
"lix-module": "lix-module",
"niri-flake": "niri-flake",
-
"nix-darwin": "nix-darwin_2",
+
"nix-darwin": "nix-darwin",
"nix-index-database": "nix-index-database",
"nix-vscode-extensions": "nix-vscode-extensions",
"nixpkgs": "nixpkgs_3",
···
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
-
"lastModified": 1761622056,
-
"narHash": "sha256-fBrUszJXmB4MY+wf3QsCnqWHcz7u7fLq0QMAWCltIQg=",
+
"lastModified": 1766429945,
+
"narHash": "sha256-9Kv4gWagx/u4RfZJzBMAoagW9ava5waxd+XoTkzqF7E=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
-
"rev": "0728d59ff6463a502e001fb090f6eb92dbc04756",
+
"rev": "0dde7ca1d3a8e8c5082533d76084e2aa02bef70e",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1761883599,
-
"narHash": "sha256-ntnfAAqSuXI/+uqXAWUjbY5arB7sRK9cpgFbHbCZgK8=",
+
"lastModified": 1766377218,
+
"narHash": "sha256-y3g3OqPB0tmRjbHJNnJKivSQRtAJR+/9S1xbxBWEatg=",
"owner": "youwen5",
"repo": "zen-browser-flake",
-
"rev": "5355c0dc6857a2aa34b126fb4a93a454ed702f52",
+
"rev": "2f61341b32dd69c07e147188e67e09ba2bb99c33",
"type": "github"
},
"original": {
+18 -28
flake.nix
···
# nur.url = "github:nix-community/NUR";
nix-darwin = {
-
url = "github:LnL7/nix-darwin";
+
url = "github:nix-darwin/nix-darwin";
inputs.nixpkgs.follows = "nixpkgs";
};
···
denix = {
url = "github:yunfachi/denix";
inputs.nixpkgs.follows = "nixpkgs";
+
inputs.nix-darwin.follows = "nix-darwin";
inputs.home-manager.follows = "home-manager";
};
···
url = "github:youwen5/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
-
-
# ags = {
-
# url = "github:Aylur/ags";
-
# inputs.nixpkgs.follows = "nixpkgs";
-
# };
};
outputs = {
-
# ags,
denix,
home-manager,
lix-module,
···
self,
...
} @ inputs: let
-
system = "x86_64-linux";
-
pkgs = nixpkgs.legacyPackages.${system};
-
# agsPkgs = ags.packages.${system};
+
forSystems = fn:
+
nixpkgs.lib.genAttrs [
+
"aarch64-linux"
+
"aarch64-darwin"
+
"x86_64-darwin"
+
"x86_64-linux"
+
] (system: fn nixpkgs.legacyPackages.${system});
+
defaultForSystems = fn: forSystems (pkgs: {default = fn pkgs;});
+
mkConfigurations = moduleSystem:
denix.lib.configurations (let
homeManagerUser = "ovy";
···
specialArgs = {inherit inputs moduleSystem homeManagerUser;};
});
in {
-
packages.${system} = {
+
packages = forSystems (pkgs: {
iconifydl = pkgs.callPackage ./pkgs/iconifydl.nix {};
+
});
-
# default = ags.lib.bundle {
-
# inherit pkgs;
-
# src = ./files/astal;
-
# name = "ovy-shell";
-
# entry = "app.ts";
-
# };
-
};
-
-
# devShells.x86_64-linux.default = pkgs.mkShell {
-
# buildInputs = [agsPkgs.agsFull agsPkgs.io agsPkgs.apps agsPkgs.tray self.packages.${system}.iconifydl];
-
# };
+
devShells = defaultForSystems (pkgs:
+
pkgs.mkShell {
+
buildInputs = [pkgs.just];
+
});
nixosConfigurations = mkConfigurations "nixos";
darwinConfigurations = mkConfigurations "darwin";
···
# };
# };
-
formatter = {
-
aarch64-linux = nixpkgs.legacyPackages.aarch64-linux.alejandra;
-
aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.alejandra;
-
x86_64-darwin = nixpkgs.legacyPackages.x86_64-darwin.alejandra;
-
x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
-
};
+
formatter = forSystems (pkgs: pkgs.alejandra);
};
}
+15
hosts/setsuna/default.nix
···
+
{delib, ...}:
+
delib.host {
+
name = "setsuna";
+
+
myconfig._1password.enable = false;
+
myconfig.gaming.enable = false;
+
myconfig.tray.enable = false;
+
myconfig.virtualisation.enable = false;
+
+
myconfig.programs.chromium.enable = false;
+
myconfig.programs.desktop-apps.enable = false;
+
myconfig.programs.espanso.enable = false;
+
myconfig.programs.kitty.enable = false;
+
myconfig.programs.syncthing.enable = false;
+
}
+19
hosts/setsuna/hardware.nix
···
+
{
+
delib,
+
inputs,
+
...
+
}:
+
delib.host {
+
name = "setsuna";
+
+
homeManagerSystem = "aarch64-darwin";
+
home.home.stateVersion = "26.05";
+
+
darwin = {
+
nixpkgs.hostPlatform = "aarch64-darwin";
+
# TODO: `darwin-rebuild changelog` to see what changed, latest is 6
+
system.stateVersion = 6;
+
# TODO: see what this does, i forgor
+
system.configurationRevision = inputs.self.rev or inputs.self.dirtyRev or null;
+
};
+
}
-1
hosts/shimmer/default.nix
···
myconfig.tray.enable = false;
myconfig.virtualisation.enable = false;
-
myconfig.programs.firefox.enable = false;
myconfig.programs.chromium.enable = false;
myconfig.programs.desktop-apps.enable = false;
myconfig.programs.espanso.enable = false;
+2
hosts/wallsocket/hardware.nix
···
{
delib,
lib,
+
pkgs,
...
}: let
platform = "x86_64-linux";
···
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
+
boot.kernelPackages = pkgs.linuxPackages_latest;
# Bootloader
boot.loader.systemd-boot.enable = true;
+15
justfile
···
+
[private]
+
default:
+
just --list
+
+
[linux]
+
boot:
+
sudo nixos-rebuild boot -L
+
+
[linux]
+
switch:
+
sudo nixos-rebuild switch -L
+
+
[macos]
+
switch:
+
sudo darwin-rebuild switch --flake . -L
+1
modules/1password.nix
···
text = ''
vivaldi-bin
zen
+
zen-bin
'';
mode = "0755";
};
+2
modules/darwin/homebrew.nix
···
casks = [
"1password"
+
"blender"
"discord"
"figma"
"httpie"
···
"swiftformat-for-xcode"
"tailscale-app"
# "vorta"
+
"vesktop"
"zen"
];
+2
modules/nix.nix
···
auto-optimise-store = true;
experimental-features = ["nix-command" "flakes"];
trusted-users = ["root" "@wheel" "ovy"];
+
warn-dirty = false;
};
};
···
experimental-features = "nix-command flakes";
trusted-users = ["root" "ovy"];
sandbox = true;
+
warn-dirty = false;
};
};
};
-10
modules/ollama.nix
···
-
{delib, ...}:
-
delib.module {
-
name = "ollama";
-
-
# nixos.always.services.ollama = {
-
# enable = true;
-
# acceleration = "rocm";
-
# rocmOverrideGfx = "11.0.0";
-
# };
-
}
+2
modules/plasma.nix
···
environment.plasma6.excludePackages = with pkgs.kdePackages; [
elisa
gwenview
+
kate
konsole
+
krunner
];
qt = {
+2 -4
modules/programs/desktop-apps.nix
···
home.packages = with pkgs; [
alejandra
audacity
-
blender
+
blender-hip
btop # TODO: module & options
bruno
davinci-resolve
···
temurin-bin-17
];
})
+
protonup-qt
qbittorrent
qimgv
slack
-
# vesktop
vlc
vorta
winetricks
yt-dlp
yubioath-flutter
];
-
-
services.owncloud-client.enable = true;
};
}
+2 -2
modules/programs/desktop-cli.nix
···
{
delib,
+
lib,
pkgs,
...
}:
···
age-plugin-yubikey
alejandra
cachix
-
claude-code
-
claude-code-router
fastfetch
hexyl
lazydocker
···
minisign
mtr
nix-output-monitor
+
opencode
pgcli
rage
systemctl-tui
+3 -1
modules/programs/direnv.nix
···
nix-direnv.enable = true;
config.whitelist.prefix = [
"${homeConfig.home.homeDirectory}/Projects/bots-gg"
-
"${homeConfig.home.homeDirectory}/Projects/dijit"
"${homeConfig.home.homeDirectory}/Projects/personal"
"${homeConfig.home.homeDirectory}/Projects/work"
+
"/Volumes/Developer/bots-gg"
+
"/Volumes/Developer/personal"
+
"/Volumes/Developer/work"
];
};
}
-16
modules/programs/firefox.nix
···
-
{
-
delib,
-
pkgs,
-
inputs,
-
...
-
}:
-
delib.module {
-
name = "programs.firefox";
-
-
options = delib.singleEnableOption true;
-
-
home.ifEnabled.programs.firefox = {
-
enable = true;
-
package = inputs.zen-browser.packages.${pkgs.system}.default;
-
};
-
}
+2 -2
modules/programs/fish.nix
···
owner = "PatrickF1";
repo = "fzf.fish";
rev = "8920367cf85eee5218cc25a11e209d46e2591e7a";
-
hash = "sha256-lxQZo6APemNjt2c21IL7+uY3YVs81nuaRUL7NDMcB6s=";
+
hash = "sha256-T8KYLA/r/gOKvAivKRoeqIwE2pINlxFQtZJHpOy9GMM=";
};
}
{
···
owner = "gazorby";
repo = "fifc";
rev = "a01650cd432becdc6e36feeff5e8d657bd7ee84a";
-
hash = "sha256-Nrart7WAh2VQhsDDe0EFI59TqvBO56US2MraqencxgE";
+
hash = "sha256-Ynb0Yd5EMoz7tXwqF8NNKqCGbzTZn/CwLsZRQXIAVp4=";
};
}
{
+2 -1
modules/programs/git.nix
···
git = {
sign-on-push = true;
-
push-new-bookmarks = true;
write-change-id-header = true;
};
···
key = "~/.ssh/id_ed25519_sk_rk.pub";
backends.ssh.allowed-signers = "~/.config/git/allowed_signers";
};
+
+
remotes.origin.auto-track-bookmarks = "glob:*";
};
};
+38
modules/programs/opencloud.nix
···
+
{
+
delib,
+
homeConfig,
+
pkgs,
+
...
+
}: let
+
system = pkgs.stdenv.hostPlatform.system;
+
in
+
delib.module {
+
name = "programs.opencloud";
+
+
options = delib.singleEnableOption true;
+
+
home.ifEnabled = pkgs.lib.optionalAttrs (system == "x86_64-linux") {
+
home.packages = [pkgs.opencloud-desktop];
+
+
systemd.user.services.opencloud-client = {
+
Unit = {
+
Description = "OpenCloud Client";
+
After = ["graphical-session.target"];
+
PartOf = ["graphical-session.target"];
+
};
+
+
Service = {
+
Environment = ["PATH=${homeConfig.home.profileDirectory}/bin"];
+
ExecStart = "${pkgs.opencloud-desktop}/bin/opencloud";
+
};
+
+
Install = {
+
WantedBy = ["graphical-session.target"];
+
};
+
};
+
};
+
+
darwin.ifEnabled = {
+
homebrew.casks = ["opencloud"];
+
};
+
}
+3 -1
modules/programs/vscode.nix
···
enableExtensionUpdateCheck = false;
extensions = let
-
vscode-extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system};
+
system = pkgs.stdenv.hostPlatform.system;
+
vscode-extensions = inputs.nix-vscode-extensions.extensions.${system};
inherit (vscode-extensions) open-vsx vscode-marketplace;
in
with open-vsx; [
···
"editor.defaultFormatter" = "esbenp.prettier-vscode";
"[elixir]"."editor.defaultFormatter" = "JakeBecker.elixir-ls";
"[nix]"."editor.defaultFormatter" = "kamadorueda.alejandra";
+
"[phoenix-heex]"."editor.defaultFormatter" = "JakeBecker.elixir-ls";
"[prisma]"."editor.defaultFormatter" = "Prisma.prisma";
"[python]"."editor.defaultFormatter" = "ms-python.python";
"[rust]"."editor.defaultFormatter" = "rust-lang.rust-analyzer";