Nix configurations for my personal machines (Linux & macOS)

refactor: port darwin config to Denix

ovyerus.com 92f3a879 355cf57a

verified
-105
darwin/shimmer/configuration.nix
···
-
{
-
config,
-
lib,
-
inputs,
-
pkgs,
-
...
-
}: {
-
imports = [./homebrew.nix ./wm.nix ../../modules/nixpkgs.nix];
-
-
nixpkgs.hostPlatform = "aarch64-darwin";
-
-
# Nix setup
-
nix.distributedBuilds = true;
-
-
nix.gc = {
-
automatic = true;
-
options = "--delete-older-than 7d";
-
interval.Weekday = 6;
-
};
-
-
nix.optimise.automatic = true;
-
-
nix.settings = {
-
builders-use-substitutes = true;
-
experimental-features = "nix-command flakes";
-
trusted-users = ["root" "ovy"];
-
};
-
-
environment.systemPackages = with pkgs; [
-
ffmpeg-full
-
git
-
imagemagick
-
nil
-
obsidian
-
openssh
-
wget
-
# TODO: the Xcode packages makes us manually download and put it into the Nix store
-
# but it seems to contain no reference to our actual result so I don't think `systemPackages`
-
# picks it up properly. Need to see how `requireFile` works and how `systemPackages`
-
# works under the hood.
-
# darwin.xcode_14_1
-
];
-
-
programs.bash.enable = true;
-
programs.zsh.enable = true;
-
programs.fish.enable = true;
-
-
# Fix problem in nix-darwin relating to $PATH order in fish.
-
# https://github.com/LnL7/nix-darwin/issues/122#issuecomment-1659465635
-
programs.fish.loginShellInit = let
-
dquote = str: "\"${str}\"";
-
makeBinPathList = map (path: path + "/bin");
-
in ''
-
fish_add_path --move --prepend --path ${lib.concatMapStringsSep " " dquote (makeBinPathList config.environment.profiles)}
-
set fish_user_paths $fish_user_paths
-
fish_add_path /opt/homebrew/bin
-
alias tailscale /Applications/Tailscale.app/Contents/MacOS/Tailscale
-
'';
-
-
nix.buildMachines = [
-
{
-
hostName = "rushing.axolotl-map.ts.net";
-
sshUser = "colmena-deploy";
-
system = "x86_64-linux";
-
speedFactor = 2;
-
maxJobs = 6;
-
protocol = "ssh-ng";
-
}
-
{
-
hostName = "skyline.axolotl-map.ts.net";
-
sshUser = "colmena-deploy";
-
system = "aarch64-linux";
-
speedFactor = 1;
-
maxJobs = 2;
-
protocol = "ssh-ng";
-
}
-
];
-
-
# nix-darwin
-
system.configurationRevision = inputs.self.rev or inputs.self.dirtyRev or null;
-
# Used for backwards compatibility, please read the changelog before changing.
-
# $ darwin-rebuild changelog
-
system.stateVersion = 4;
-
-
system.defaults.NSGlobalDomain.AppleShowAllExtensions = true;
-
system.defaults.finder.ShowPathbar = true;
-
system.defaults.menuExtraClock.Show24Hour = true;
-
system.defaults.trackpad.Dragging = true;
-
-
# Dock settings
-
system.defaults.dock = {
-
autohide = false;
-
magnification = false;
-
minimize-to-application = false;
-
mru-spaces = false;
-
orientation = "bottom";
-
show-recents = false;
-
tilesize = 48;
-
};
-
-
fonts.packages = with pkgs; [
-
inter
-
inputs.iosevka-solai.packages.aarch64-darwin.bin
-
];
-
}
+9 -5
darwin/shimmer/homebrew.nix modules/darwin/homebrew.nix
···
-
{...}: {
-
homebrew = {
+
{delib, ...}:
+
delib.module {
+
name = "darwin.homebrew";
+
+
options = delib.singleEnableOption true;
+
+
darwin.ifEnabled.homebrew = {
enable = true;
# Update and cleanup homebrew packages when rebuilding.
global.autoUpdate = false;
···
];
brews = [
-
"bitwarden-cli"
"klog"
"mas"
"swiftformat"
···
# Actually searches symlinks for apps, compared to Alfred.
"raycast"
"swiftformat-for-xcode"
-
"visual-studio-code"
+
# "visual-studio-code"
# "vorta"
];
···
Keka = 470158793;
"Yubico Authenticator" = 1497506650;
"System Color Picker" = 1545870783;
-
Tailsacle = 1475387142;
+
Tailscale = 1475387142;
};
};
}
-89
darwin/shimmer/wm.nix
···
-
{lib, ...}: {
-
services.yabai = {
-
enable = true;
-
config = let
-
gap = 10;
-
gapKeys = [
-
"window_gap"
-
"top_padding"
-
"bottom_padding"
-
"left_padding"
-
"right_padding"
-
];
-
-
gaps = builtins.listToAttrs (
-
builtins.map (k: lib.attrsets.nameValuePair k gap) gapKeys
-
);
-
in
-
{
-
layout = "bsp";
-
window_placement = "second_child";
-
}
-
// gaps;
-
extraConfig = ''
-
yabai -m rule --add app="Bitwarden" manage=off
-
yabai -m rule --add app="Discord" manage=off
-
yabai -m rule --add app="^Finder$" manage=off
-
yabai -m rule --add app="Keka" manage=off
-
yabai -m rule --add app="^System Information$" manage=off
-
yabai -m rule --add app="^System Preferences$" manage=off
-
yabai -m rule --add app="^System Settings$" manage=off
-
yabai -m rule --add title="Preferences$" manage=off
-
yabai -m rule --add title="^Archive Utility$" manage=off
-
yabai -m rule --add title="Settings$" manage=off
-
yabai -m rule --add title="Karabiner" manage=off
-
yabai -m rule --add title="^Weather$" manage=off
-
yabai -m rule --add title="Yubico Authenticator" manage=off
-
yabai -m rule --add app="Rewind" manage=off
-
yabai -m rule --add app="eqMac" manage=off
-
yabai -m rule --add app="^Arc$" manage=off
-
yabai -m rule --add app="OBS" manage=off
-
yabai -m rule --add app="Raycast" manage=off
-
'';
-
};
-
-
services.skhd = {
-
enable = true;
-
skhdConfig = ''
-
# Move/swap windows
-
meh - w : yabai -m window --swap north
-
meh - a : yabai -m window --swap west
-
meh - r : yabai -m window --swap south
-
meh - s : yabai -m window --swap east
-
-
hyper - w : yabai -m window --warp north
-
hyper - a : yabai -m window --warp west
-
hyper - r : yabai -m window --warp south
-
hyper - s : yabai -m window --warp east
-
-
# Focus windows
-
ralt + rcmd - w : yabai -m window --focus north
-
ralt + rcmd - a : yabai -m window --focus west
-
ralt + rcmd - r : yabai -m window --focus south
-
ralt + rcmd - s : yabai -m window --focus east
-
-
# Increase window size
-
meh - n : yabai -m window --resize left:-100:0
-
meh - e : yabai -m window --resize bottom:0:100
-
meh - i : yabai -m window --resize top:0:-100
-
meh - o : yabai -m window --resize right:100:0
-
-
# Decrease window size
-
hyper - n : yabai -m window --resize right:-100:0
-
hyper - e : yabai -m window --resize top:0:100
-
hyper - i : yabai -m window --resize bottom:0:-100
-
hyper - o : yabai -m window --resize left:100:0
-
-
# Expand floating window to fill screen
-
# (full stop)
-
meh - 0x2F : yabai -m window --grid 1:1:0:0:1:1
-
-
meh - p : yabai -m window --toggle float; \
-
yabai -m window --grid 4:4:1:1:2:2
-
-
# Rebalance grid
-
# (backtick)
-
hyper - 0x32 : yabai -m space --balance
-
'';
-
};
-
}
+75 -46
flake.lock
···
"nixpkgs": [
"nixpkgs"
],
+
"nixpkgs-lib": "nixpkgs-lib",
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
-
"lastModified": 1749374482,
-
"narHash": "sha256-IAyAgmxZ+8YUPkyxn6gvCUZiV93dX6oLmcOOCSU9We4=",
+
"lastModified": 1749889036,
+
"narHash": "sha256-sLj+y810h3a02G/b5pj6J9Uj1fWw3xGgl6LkCLr5UQw=",
"owner": "yunfachi",
"repo": "denix",
-
"rev": "5a27d210ee6ff79375731a515810a02c6bb8b0d4",
+
"rev": "9f6b0cb1c5bfb1bed685b9d953b2a9779ccaa3a0",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1749526396,
-
"narHash": "sha256-UL9F76abAk87llXOrcQRjhd5OaOclUd6MIltsqcUZmo=",
+
"lastModified": 1750304462,
+
"narHash": "sha256-Mj5t4yX05/rXnRqJkpoLZTWqgStB88Mr/fegTRqyiWc=",
"owner": "nix-community",
"repo": "home-manager",
-
"rev": "427c96044f11a5da50faf6adaf38c9fa47e6d044",
+
"rev": "863842639722dd12ae9e37ca83bcb61a63b36f6c",
"type": "github"
},
"original": {
···
"narHash": "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=",
"rev": "f19bd752910bbe3a861c9cad269bd078689d50fe",
"type": "tarball",
-
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/f19bd752910bbe3a861c9cad269bd078689d50fe.tar.gz?rev=f19bd752910bbe3a861c9cad269bd078689d50fe"
+
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/f19bd752910bbe3a861c9cad269bd078689d50fe.tar.gz"
},
"original": {
"type": "tarball",
···
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
-
"lastModified": 1749533158,
-
"narHash": "sha256-wIw3Q/Ls1nsLjBN4VsAiTMHZiyf5RGRVy2MWfyYPgMI=",
+
"lastModified": 1750339466,
+
"narHash": "sha256-lX8iwxjvubzEwSR2THa4HgwN6e+9ZZUs4dyAEMds33g=",
"owner": "sodiboo",
"repo": "niri-flake",
-
"rev": "e5c4564ec3704f5e358f50d883b5200c4e8dfd7e",
+
"rev": "c7a546d233748e8af0b5747b9130f49d06fdf871",
"type": "github"
},
"original": {
···
"niri-stable": {
"flake": false,
"locked": {
-
"lastModified": 1740117926,
-
"narHash": "sha256-mTTHA0RAaQcdYe+9A3Jx77cmmyLFHmRoZdd8RpWa+m8=",
+
"lastModified": 1748151941,
+
"narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=",
"owner": "YaLTeR",
"repo": "niri",
-
"rev": "b94a5db8790339cf9134873d8b490be69e02ac71",
+
"rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7",
"type": "github"
},
"original": {
"owner": "YaLTeR",
-
"ref": "v25.02",
+
"ref": "v25.05.1",
"repo": "niri",
"type": "github"
}
···
"niri-unstable": {
"flake": false,
"locked": {
-
"lastModified": 1749474820,
-
"narHash": "sha256-hf5eCZ0bbqwOKPvPKn8Rutwj+xs3GhAfB0AjGa8tIEM=",
+
"lastModified": 1750334747,
+
"narHash": "sha256-nsD1Z6vVP2Hhdgrd0uYHacre2+NhaH/53TFRXn6pRcs=",
"owner": "YaLTeR",
"repo": "niri",
-
"rev": "a18d24fc24d8b17242e336ccf39fcbe91e8161fd",
+
"rev": "e0b0b04b445f7044f383e50104f861e632e1c905",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1749194393,
-
"narHash": "sha256-vt6hM9DNywnXXuW1qPDLzECmbDcmxhh58wpb0EEQjAo=",
+
"lastModified": 1750325256,
+
"narHash": "sha256-vvlxGz/waqJ3TGqM/iqXbnEc7/R1qnEXmaBiPaQ1RE0=",
"owner": "LnL7",
"repo": "nix-darwin",
-
"rev": "19346808c445f23b08652971be198b9df6c33edc",
+
"rev": "0d71cbf88d63e938b37b85b3bf8b238bcf7b39b9",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1749355504,
-
"narHash": "sha256-L17CdJMD+/FCBOHjREQLXbe2VUnc3rjffenBbu2Kwpc=",
+
"lastModified": 1749960154,
+
"narHash": "sha256-EWlr9MZDd+GoGtZB4QsDzaLyaDQPGnRY03MFp6u2wSg=",
"owner": "nix-community",
"repo": "nix-index-database",
-
"rev": "40a6e15e44b11fbf8f2b1df9d64dbfc117625e94",
+
"rev": "424a40050cdc5f494ec45e46462d288f08c64475",
"type": "github"
},
"original": {
···
"nix-vscode-extensions": {
"inputs": {
"flake-utils": "flake-utils_3",
-
"nixpkgs": "nixpkgs"
+
"nixpkgs": "nixpkgs_2"
},
"locked": {
-
"lastModified": 1749521131,
-
"narHash": "sha256-ezZ15tLA2L+rmtn39dKLFW/UM2xlksC61V12blulpjE=",
+
"lastModified": 1750298804,
+
"narHash": "sha256-GEp1QwoQ7qQPYuOm5cGb3f5FZSlVwbw86KUrHlLbI2E=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
-
"rev": "299b2aa650d32310153746135b6a84a6c4de9c21",
+
"rev": "7b962ab252cecf0b88ae621e1986899e20a4ead3",
"type": "github"
},
"original": {
···
},
"nixpkgs": {
"locked": {
-
"lastModified": 1744868846,
-
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
+
"lastModified": 1749213349,
+
"narHash": "sha256-UAaWOyQhdp7nXzsbmLVC67fo+QetzoTm9hsPf9X3yr4=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
+
"rev": "a4ff0e3c64846abea89662bfbacf037ef4b34207",
"type": "github"
},
"original": {
"owner": "NixOS",
+
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
-
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
+
"type": "github"
+
}
+
},
+
"nixpkgs-lib": {
+
"locked": {
+
"lastModified": 1749345370,
+
"narHash": "sha256-w2J8aeSsMT6v6xAokr076vSCDHs5LRi2JkTUyNsEl4o=",
+
"owner": "nix-community",
+
"repo": "nixpkgs.lib",
+
"rev": "2a3d74c76852805ec8eba6dd52350e85e75805ec",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nix-community",
+
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
-
"lastModified": 1749237914,
-
"narHash": "sha256-N5waoqWt8aMr/MykZjSErOokYH6rOsMMXu3UOVH5kiw=",
+
"lastModified": 1750133334,
+
"narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "70c74b02eac46f4e4aa071e45a6189ce0f6d9265",
+
"rev": "36ab78dab7da2e4e27911007033713bab534187b",
"type": "github"
},
"original": {
···
},
"nixpkgs_2": {
"locked": {
-
"lastModified": 1749285348,
-
"narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=",
+
"lastModified": 1744868846,
+
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
+
"owner": "NixOS",
+
"repo": "nixpkgs",
+
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
+
"type": "github"
+
},
+
"original": {
+
"owner": "NixOS",
+
"repo": "nixpkgs",
+
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
+
"type": "github"
+
}
+
},
+
"nixpkgs_3": {
+
"locked": {
+
"lastModified": 1750134718,
+
"narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=",
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "3e3afe5174c561dee0df6f2c2b2236990146329f",
+
"rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c",
"type": "github"
},
"original": {
···
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
-
"nixpkgs": [
-
"denix",
-
"nixpkgs"
-
]
+
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1746537231,
···
"nix-darwin": "nix-darwin_2",
"nix-index-database": "nix-index-database",
"nix-vscode-extensions": "nix-vscode-extensions",
-
"nixpkgs": "nixpkgs_2"
+
"nixpkgs": "nixpkgs_3"
}
},
"systems": {
···
"xwayland-satellite-stable": {
"flake": false,
"locked": {
-
"lastModified": 1739246919,
-
"narHash": "sha256-/hBM43/Gd0/tW+egrhlWgOIISeJxEs2uAOIYVpfDKeU=",
+
"lastModified": 1748488455,
+
"narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
-
"rev": "44590a416d4a3e8220e19e29e0b6efe64a80315d",
+
"rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73",
"type": "github"
},
"original": {
"owner": "Supreeeme",
-
"ref": "v0.5.1",
+
"ref": "v0.6",
"repo": "xwayland-satellite",
"type": "github"
}
+2 -1
flake.nix
···
in {
inherit moduleSystem homeManagerUser;
-
paths = [./denix/hosts ./denix/modules]; #./denix/rices];
+
paths = [./hosts ./modules]; #./rices];
specialArgs = {inherit inputs moduleSystem homeManagerUser;};
});
in {
···
# };
nixosConfigurations = mkConfigurations "nixos";
+
darwinConfigurations = mkConfigurations "darwin";
# nixosModules.serverHomeManager = {...}: {
# imports = [home-manager.nixosModules.home-manager];
+15
hosts/shimmer/default.nix
···
+
{delib, ...}:
+
delib.host {
+
name = "shimmer";
+
+
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/shimmer/hardware.nix
···
+
{
+
delib,
+
inputs,
+
...
+
}:
+
delib.host {
+
name = "shimmer";
+
+
homeManagerSystem = "aarch64-darwin";
+
home.home.stateVersion = "24.05";
+
+
darwin = {
+
nixpkgs.hostPlatform = "aarch64-darwin";
+
# TODO: `darwin-rebuild changelog` to see what changed, latest is 6
+
system.stateVersion = 4;
+
# TODO: see what this does, i forgor
+
system.configurationRevision = inputs.self.rev or inputs.self.dirtyRev or null;
+
};
+
}
+4 -1
modules/config/home.nix
···
in {
home = {
inherit username;
-
homeDirectory = "/home/${username}";
+
homeDirectory =
+
if moduleSystem == "darwin"
+
then "/Users/${username}"
+
else "/home/${username}";
};
news.display = "silent";
programs.home-manager.enable = false;
+15 -7
modules/config/user.nix
···
nixos.always = {myconfig, ...}: let
inherit (myconfig.constants) username userfullname;
in {
-
users = {
-
users.${username} = {
-
isNormalUser = true;
-
description = userfullname;
-
extraGroups = ["wheel" "cdrom" "adbusers"];
-
shell = pkgs.fish;
-
};
+
users.users.${username} = {
+
isNormalUser = true;
+
description = userfullname;
+
extraGroups = ["wheel" "cdrom" "adbusers"];
+
shell = pkgs.fish;
+
};
+
};
+
+
darwin.always = {myconfig, ...}: let
+
inherit (myconfig.constants) username userfullname;
+
in {
+
users.users.${username} = {
+
description = userfullname;
+
home = "/Users/${username}";
+
shell = pkgs.fish;
};
};
}
+24
modules/darwin/defaults.nix
···
+
{delib, ...}:
+
delib.module {
+
name = "darwin.defaults";
+
+
options = delib.singleEnableOption true;
+
+
darwin.ifEnabled.system.defaults = {
+
NSGlobalDomain.AppleShowAllExtensions = true;
+
finder.ShowPathbar = true;
+
menuExtraClock.Show24Hour = true;
+
trackpad.Dragging = true;
+
+
# Dock settings
+
dock = {
+
autohide = false;
+
magnification = false;
+
minimize-to-application = false;
+
mru-spaces = false;
+
orientation = "bottom";
+
show-recents = false;
+
tilesize = 48;
+
};
+
};
+
}
+100
modules/darwin/wm.nix
···
+
{
+
delib,
+
lib,
+
...
+
}:
+
delib.module {
+
name = "darwin.wm";
+
+
options = delib.singleEnableOption true;
+
+
darwin.ifEnabled = {
+
services.yabai = {
+
enable = true;
+
config = let
+
gap = 10;
+
gapKeys = [
+
"window_gap"
+
"top_padding"
+
"bottom_padding"
+
"left_padding"
+
"right_padding"
+
];
+
+
gaps = builtins.listToAttrs (
+
builtins.map (k: lib.attrsets.nameValuePair k gap) gapKeys
+
);
+
in
+
{
+
layout = "bsp";
+
window_placement = "second_child";
+
}
+
// gaps;
+
extraConfig = ''
+
yabai -m rule --add app="Bitwarden" manage=off
+
yabai -m rule --add app="Discord" manage=off
+
yabai -m rule --add app="^Finder$" manage=off
+
yabai -m rule --add app="Keka" manage=off
+
yabai -m rule --add app="^System Information$" manage=off
+
yabai -m rule --add app="^System Preferences$" manage=off
+
yabai -m rule --add app="^System Settings$" manage=off
+
yabai -m rule --add title="Preferences$" manage=off
+
yabai -m rule --add title="^Archive Utility$" manage=off
+
yabai -m rule --add title="Settings$" manage=off
+
yabai -m rule --add title="Karabiner" manage=off
+
yabai -m rule --add title="^Weather$" manage=off
+
yabai -m rule --add title="Yubico Authenticator" manage=off
+
yabai -m rule --add app="Rewind" manage=off
+
yabai -m rule --add app="eqMac" manage=off
+
yabai -m rule --add app="^Arc$" manage=off
+
yabai -m rule --add app="OBS" manage=off
+
yabai -m rule --add app="Raycast" manage=off
+
'';
+
};
+
+
services.skhd = {
+
enable = true;
+
skhdConfig = ''
+
# Move/swap windows
+
meh - w : yabai -m window --swap north
+
meh - a : yabai -m window --swap west
+
meh - r : yabai -m window --swap south
+
meh - s : yabai -m window --swap east
+
+
hyper - w : yabai -m window --warp north
+
hyper - a : yabai -m window --warp west
+
hyper - r : yabai -m window --warp south
+
hyper - s : yabai -m window --warp east
+
+
# Focus windows
+
ralt + rcmd - w : yabai -m window --focus north
+
ralt + rcmd - a : yabai -m window --focus west
+
ralt + rcmd - r : yabai -m window --focus south
+
ralt + rcmd - s : yabai -m window --focus east
+
+
# Increase window size
+
meh - n : yabai -m window --resize left:-100:0
+
meh - e : yabai -m window --resize bottom:0:100
+
meh - i : yabai -m window --resize top:0:-100
+
meh - o : yabai -m window --resize right:100:0
+
+
# Decrease window size
+
hyper - n : yabai -m window --resize right:-100:0
+
hyper - e : yabai -m window --resize top:0:100
+
hyper - i : yabai -m window --resize bottom:0:-100
+
hyper - o : yabai -m window --resize left:100:0
+
+
# Expand floating window to fill screen
+
# (full stop)
+
meh - 0x2F : yabai -m window --grid 1:1:0:0:1:1
+
+
meh - p : yabai -m window --toggle float; \
+
yabai -m window --grid 4:4:1:1:2:2
+
+
# Rebalance grid
+
# (backtick)
+
hyper - 0x32 : yabai -m space --balance
+
'';
+
};
+
};
+
}
+7
modules/fonts.nix
···
# ];
# };
};
+
+
darwin.always = {
+
fonts.packages = with pkgs; [
+
inter
+
inputs.iosevka-solai.packages.aarch64-darwin.bin
+
];
+
};
}
+4 -2
modules/gaming.nix
···
delib.module {
name = "gaming";
-
nixos.always = {
+
options = delib.singleEnableOption true;
+
+
nixos.ifEnabled = {
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
···
programs.gamemode.enable = true;
};
-
home.always = {
+
home.ifEnabled = {
programs.mangohud = {
enable = true;
settings = {
+41
modules/nix.nix
···
nixpkgs.config.allowUnfree = true;
system.tools.nixos-option.enable = false;
};
+
+
darwin.always = {
+
nixpkgs.config.allowUnfree = true;
+
+
nix = {
+
buildMachines = [
+
{
+
hostName = "rushing.axolotl-map.ts.net";
+
sshUser = "colmena-deploy";
+
system = "x86_64-linux";
+
speedFactor = 2;
+
maxJobs = 6;
+
protocol = "ssh-ng";
+
}
+
{
+
hostName = "skyline.axolotl-map.ts.net";
+
sshUser = "colmena-deploy";
+
system = "aarch64-linux";
+
speedFactor = 1;
+
maxJobs = 2;
+
protocol = "ssh-ng";
+
}
+
];
+
+
distributedBuilds = true;
+
+
gc = {
+
automatic = true;
+
options = "--delete-older-than 7d";
+
interval.Weekday = 6;
+
};
+
+
optimise.automatic = true;
+
+
settings = {
+
builders-use-substitutes = true;
+
experimental-features = "nix-command flakes";
+
trusted-users = ["root" "ovy"];
+
};
+
};
+
};
}
+3 -1
modules/programs/bat.nix
···
delib.module {
name = "programs.bat";
-
home.always.programs.bat = {
+
options = delib.singleEnableOption true;
+
+
home.ifEnabled.programs.bat = {
enable = true;
config = {
theme = "DarkNeon";
+37
modules/programs/core-cli.nix
···
delib.module {
name = "programs.core-cli";
+
options = delib.singleEnableOption true;
+
nixos.always = {
environment.systemPackages = with pkgs; [
ffmpeg-full
···
];
programs.fish.enable = true;
+
};
+
+
darwin.always = {
+
environment.systemPackages = with pkgs; [
+
ffmpeg-full
+
git
+
imagemagick
+
nil
+
openssh
+
wget
+
# TODO: the Xcode packages makes us manually download and put it into the Nix store
+
# but it seems to contain no reference to our actual result so I don't think `systemPackages`
+
# picks it up properly. Need to see how `requireFile` works and how `systemPackages`
+
# works under the hood.
+
# darwin.xcode_14_1
+
];
+
+
programs.bash.enable = true;
+
programs.zsh.enable = true;
+
programs.fish.enable = true;
+
+
# Fix problem in nix-darwin relating to $PATH order in fish.
+
# https://github.com/LnL7/nix-darwin/issues/122#issuecomment-1659465635
+
# programs.fish.loginShellInit = let
+
# dquote = str: "\"${str}\"";
+
# makeBinPathList = map (path: path + "/bin");
+
# in ''
+
# fish_add_path --move --prepend --path ${lib.concatMapStringsSep " " dquote (makeBinPathList config.environment.profiles)}
+
# set fish_user_paths $fish_user_paths
+
# fish_add_path /opt/homebrew/bin
+
# '';
+
+
programs.fish.loginShellInit = ''
+
alias tailscale /Applications/Tailscale.app/Contents/MacOS/Tailscale
+
'';
};
home.always = {
+3 -1
modules/programs/desktop-apps.nix
···
delib.module {
name = "programs.desktop-apps";
-
home.always = {
+
options = delib.singleEnableOption true;
+
+
home.ifEnabled = {
home.packages = with pkgs; [
alejandra
audacity
+3 -1
modules/programs/desktop-cli.nix
···
delib.module {
name = "programs.desktop-cli";
-
home.always.home.packages = with pkgs; [
+
options = delib.singleEnableOption true;
+
+
home.ifEnabled.home.packages = with pkgs; [
age-plugin-yubikey
alejandra
cachix
+1 -1
modules/programs/direnv.nix
···
...
}:
delib.module {
-
name = "programs.bat";
+
name = "programs.direnv";
home.always.programs.direnv = {
enable = true;
+3 -1
modules/programs/espanso.nix
···
delib.module {
name = "programs.espanso";
-
home.always.services.espanso = {
+
options = delib.singleEnableOption true;
+
+
home.ifEnabled.services.espanso = {
enable = true;
package = pkgs.espanso-wayland;
matches.base.matches = [
+1 -1
modules/programs/fish.nix
···
'';
shellAbbrs = {
-
code = "codium";
+
# code = "codium";
ga = "git add";
gaa = "git add -A";
gc = {
+1 -1
modules/programs/git.nix
···
home.always = {myconfig, ...}: let
inherit (myconfig.constants) userfullname useremail;
in {
-
xdg.configFile."git/allowed_signers".source = ../../../files/git/allowed_signers;
+
xdg.configFile."git/allowed_signers".source = ../../files/git/allowed_signers;
programs.git = {
enable = true;
+1 -1
modules/programs/ssh.nix
···
};
# TODO: if darwin
-
# programs.ssh.includes = ["~/.orbstack/ssh/config"];
+
includes = ["~/.orbstack/ssh/config"];
};
}
+4 -6
modules/tray.nix
···
-
{
-
delib,
-
pkgs,
-
...
-
}:
+
{delib, ...}:
delib.module {
name = "tray";
+
+
options = delib.singleEnableOption true;
# TODO: i don't think this is needed anymore???
-
home.always.systemd.user.targets.tray = {
+
home.ifEnabled.systemd.user.targets.tray = {
Unit = {
Description = "Home Manager System Tray";
Requires = ["graphical-session-pre.target"];
+4 -2
modules/virtualisation.nix
···
delib.module {
name = "virtualisation";
-
nixos.always = {myconfig, ...}: let
+
options = delib.singleEnableOption true;
+
+
nixos.ifEnabled = {myconfig, ...}: let
inherit (myconfig.constants) username;
in {
environment.systemPackages = [pkgs.docker-compose];
···
users.users.${username}.extraGroups = ["libvirtd"];
};
-
home.always.home.sessionVariables.DOCKER_HOST = "unix:///run/user/1000/podman/podman.sock";
+
home.ifEnabled.home.sessionVariables.DOCKER_HOST = "unix:///run/user/1000/podman/podman.sock";
}
+18 -19
modules/xdg.nix
···
{
delib,
+
moduleSystem,
pkgs,
+
lib,
...
}:
delib.module {
-
name = "programs.espanso";
+
name = "xdg";
home.always = let
vivalarc = pkgs.fetchFromGitHub {
···
rev = "7ee09e9efb46c1524a43f0cb6763b9750db6e81c";
hash = "sha256-xYSxB8KjcbeUDEdbA2AJ9FeQC1TkqyXdB9rTMMSm+FA=";
};
-
in {
-
xdg.desktopEntries.davinci-resolve = {
-
name = "Davinci Resolve";
-
exec = "davinci-resolve";
-
categories = ["AudioVideo" "AudioVideoEditing" "Video" "Graphics"];
-
comment = "Professional video editing, color, effects and audio post-processing";
-
genericName = "Video Editor";
-
type = "Application";
-
settings.Version = "1.4";
-
};
-
-
xdg.dataFile."vivalarc".source = vivalarc;
-
};
-
-
# if darwin: xdg.configFile = {
-
# TODO: replace with the full karabiner config instead of needing to manually set complex mods
-
# "karabiner/assets/complex_modifications/keybind-helpers.json".source = ../../../files/karabiner/keybind-helpers.json;
-
# };
+
in ({
+
xdg.dataFile."vivalarc".source = vivalarc;
+
xdg.configFile."karabiner/assets/complex_modifications/keybind-helpers.json".source = ../files/karabiner/keybind-helpers.json;
+
}
+
// lib.optionalAttrs (moduleSystem == "nixos") {
+
xdg.desktopEntries.davinci-resolve = {
+
name = "Davinci Resolve";
+
exec = "davinci-resolve";
+
categories = ["AudioVideo" "AudioVideoEditing" "Video" "Graphics"];
+
comment = "Professional video editing, color, effects and audio post-processing";
+
genericName = "Video Editor";
+
type = "Application";
+
settings.Version = "1.4";
+
};
+
});
}