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 }
]
}
],
+3
files/nixpkgs-config.nix
···
+
{
+
allowUnfree = true;
+
}
+74 -127
flake.lock
···
"home-manager": [
"home-manager"
],
-
"nix-darwin": "nix-darwin",
+
"nix-darwin": [
+
"nix-darwin"
+
],
"nixpkgs": [
"nixpkgs"
],
···
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
-
"lastModified": 1751095980,
-
"narHash": "sha256-ZaSWSq1WXMBma91zzV671B15uf7WuqaJu4XKOvhcIYk=",
+
"lastModified": 1758123851,
+
"narHash": "sha256-sbKwqBOLI423TvXvzlX2UGZR4pE1M8C7KXi0699ImmQ=",
"owner": "yunfachi",
"repo": "denix",
-
"rev": "888e92b0327a21ee63873fad8e1b479b4a15577e",
+
"rev": "d90f816b7b93304e5d5e69d429de0052f64d5149",
"type": "github"
},
"original": {
···
"flake-compat": {
"flake": false,
"locked": {
-
"lastModified": 1696426674,
-
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+
"lastModified": 1747046372,
+
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
-
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
···
"systems": "systems_2"
},
"locked": {
-
"lastModified": 1726560853,
-
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
-
"owner": "numtide",
-
"repo": "flake-utils",
-
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
-
"type": "github"
-
},
-
"original": {
-
"owner": "numtide",
-
"repo": "flake-utils",
-
"type": "github"
-
}
-
},
-
"flake-utils_3": {
-
"inputs": {
-
"systems": "systems_3"
-
},
-
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
···
]
},
"locked": {
-
"lastModified": 1752286566,
-
"narHash": "sha256-A4nftqiNz2bNihz0bKY94Hq/6ydR6UQOcGioeL7iymY=",
+
"lastModified": 1767391542,
+
"narHash": "sha256-qHXxJuFkQhggyeao/kQb6KcOjgz0Ky+ArfowRX1MHaE=",
"owner": "nix-community",
"repo": "home-manager",
-
"rev": "392ddb642abec771d63688c49fa7bcbb9d2a5717",
+
"rev": "2f06b726061b7e1aa69f718e943da9ffcecd6397",
"type": "github"
},
"original": {
···
"lix": {
"flake": false,
"locked": {
-
"lastModified": 1729298361,
-
"narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=",
-
"rev": "ad9d06f7838a25beec425ff406fe68721fef73be",
+
"lastModified": 1751234633,
+
"narHash": "sha256-b5d+HnPcyHz0ZJW1+LZl4qm4LGTB/TiaDFQVlVL2xpE=",
+
"rev": "7c8c7562be432f1f40b98c24f528696b1ae20263",
"type": "tarball",
-
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be"
+
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/7c8c7562be432f1f40b98c24f528696b1ae20263.tar.gz?rev=7c8c7562be432f1f40b98c24f528696b1ae20263"
},
"original": {
"type": "tarball",
-
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz"
+
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.3.tar.gz"
}
},
"lix-module": {
···
]
},
"locked": {
-
"lastModified": 1732605668,
-
"narHash": "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=",
-
"rev": "f19bd752910bbe3a861c9cad269bd078689d50fe",
+
"lastModified": 1756128651,
+
"narHash": "sha256-Bacu3Ek38AtlL+pSsbdUW4V5Waat0FnhyzLoQjPUxWE=",
+
"rev": "96fc11f1b68f0138de71205122670ef736cdb0d9",
"type": "tarball",
-
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/f19bd752910bbe3a861c9cad269bd078689d50fe.tar.gz"
+
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/96fc11f1b68f0138de71205122670ef736cdb0d9.tar.gz"
},
"original": {
"type": "tarball",
-
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz"
+
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.3-2.tar.gz"
}
},
"niri-flake": {
···
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
-
"lastModified": 1752291616,
-
"narHash": "sha256-zpPFo4cgr5tOy8DCLIoD++idsKjnzgVPnBeZLmazYc4=",
+
"lastModified": 1767377696,
+
"narHash": "sha256-OShXLsMyF9hxmiID1p4QF+ekqreViHM9105ej05S2uI=",
"owner": "sodiboo",
"repo": "niri-flake",
-
"rev": "30962469e2e8fb93c3672ee605316b89b8e9a198",
+
"rev": "ba6ea712dc2da0b01c6a8d02dd9e86973663e4de",
"type": "github"
},
"original": {
···
"niri-stable": {
"flake": false,
"locked": {
-
"lastModified": 1748151941,
-
"narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=",
+
"lastModified": 1756556321,
+
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
"owner": "YaLTeR",
"repo": "niri",
-
"rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7",
+
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
"type": "github"
},
"original": {
"owner": "YaLTeR",
-
"ref": "v25.05.1",
+
"ref": "v25.08",
"repo": "niri",
"type": "github"
}
···
"niri-unstable": {
"flake": false,
"locked": {
-
"lastModified": 1750791124,
-
"narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=",
+
"lastModified": 1767160009,
+
"narHash": "sha256-aTj88rDBdhmzaGXoFPOsHjXYM2OjNttixsGftT/X0dI=",
"owner": "YaLTeR",
"repo": "niri",
-
"rev": "37458d94b288945f6cfbd3c5c233f634d59f246c",
+
"rev": "cf0b4bc0ca93ab5c18b562ada1d8609b67b3c4e3",
"type": "github"
},
"original": {
···
"nix-darwin": {
"inputs": {
"nixpkgs": [
-
"denix",
"nixpkgs"
]
},
"locked": {
-
"lastModified": 1746254942,
-
"narHash": "sha256-Y062AuRx6l+TJNX8wxZcT59SSLsqD9EedAY0mqgTtQE=",
+
"lastModified": 1767028240,
+
"narHash": "sha256-0/fLUqwJ4Z774muguUyn5t8AQ6wyxlNbHexpje+5hRo=",
"owner": "nix-darwin",
"repo": "nix-darwin",
-
"rev": "760a11c87009155afa0140d55c40e7c336d62d7a",
+
"rev": "c31afa6e76da9bbc7c9295e39c7de9fca1071ea1",
"type": "github"
},
"original": {
···
"type": "github"
}
},
-
"nix-darwin_2": {
-
"inputs": {
-
"nixpkgs": [
-
"nixpkgs"
-
]
-
},
-
"locked": {
-
"lastModified": 1751313918,
-
"narHash": "sha256-HsJM3XLa43WpG+665aGEh8iS8AfEwOIQWk3Mke3e7nk=",
-
"owner": "LnL7",
-
"repo": "nix-darwin",
-
"rev": "e04a388232d9a6ba56967ce5b53a8a6f713cdfcf",
-
"type": "github"
-
},
-
"original": {
-
"owner": "LnL7",
-
"repo": "nix-darwin",
-
"type": "github"
-
}
-
},
"nix-index-database": {
"inputs": {
"nixpkgs": [
···
]
},
"locked": {
-
"lastModified": 1752305182,
-
"narHash": "sha256-6i4Q68G7wzNq1m2+l3lJUYgGZ9PwULvSVJpRSTTC46o=",
+
"lastModified": 1765267181,
+
"narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=",
"owner": "nix-community",
"repo": "nix-index-database",
-
"rev": "ad29e2961dd0d58372384563bf00d510fc9f2e15",
+
"rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f",
"type": "github"
},
"original": {
···
},
"nix-vscode-extensions": {
"inputs": {
-
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_2"
},
"locked": {
-
"lastModified": 1752286423,
-
"narHash": "sha256-5a4+w/P9cr5l8YOypiwNrAIOyhLYA9x9Va1mqKkvwRs=",
+
"lastModified": 1767405959,
+
"narHash": "sha256-K9P7J2W/deP9d1aZOlIvmK+sWCQrk6kcX3T21y3Marc=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
-
"rev": "f942441f13f5dbd29e4bd5596b2c2ba346c4940e",
+
"rev": "c84c57fb183f7b2318187927d3a82641e6796933",
"type": "github"
},
"original": {
···
},
"nixpkgs": {
"locked": {
-
"lastModified": 1749213349,
-
"narHash": "sha256-UAaWOyQhdp7nXzsbmLVC67fo+QetzoTm9hsPf9X3yr4=",
+
"lastModified": 1754340878,
+
"narHash": "sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "a4ff0e3c64846abea89662bfbacf037ef4b34207",
+
"rev": "cab778239e705082fe97bb4990e0d24c50924c04",
"type": "github"
},
"original": {
···
},
"nixpkgs-lib": {
"locked": {
-
"lastModified": 1749345370,
-
"narHash": "sha256-w2J8aeSsMT6v6xAokr076vSCDHs5LRi2JkTUyNsEl4o=",
+
"lastModified": 1754184128,
+
"narHash": "sha256-AjhoyBL4eSyXf01Bmc6DiuaMrJRNdWopmdnMY0Pa/M0=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
-
"rev": "2a3d74c76852805ec8eba6dd52350e85e75805ec",
+
"rev": "02e72200e6d56494f4a7c0da8118760736e41b60",
"type": "github"
},
"original": {
···
},
"nixpkgs-stable": {
"locked": {
-
"lastModified": 1752162966,
-
"narHash": "sha256-3MxxkU8ZXMHXcbFz7UE4M6qnIPTYGcE/7EMqlZNnVDE=",
+
"lastModified": 1767325753,
+
"narHash": "sha256-yA/CuWyqm+AQo2ivGy6PlYrjZBQm7jfbe461+4HF2fo=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "10e687235226880ed5e9f33f1ffa71fe60f2638a",
+
"rev": "64049ca74d63e971b627b5f3178d95642e61cedd",
"type": "github"
},
"original": {
"owner": "NixOS",
-
"ref": "nixos-25.05",
+
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
-
"lastModified": 1744868846,
-
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
-
"owner": "NixOS",
+
"lastModified": 1766025857,
+
"narHash": "sha256-Lav5jJazCW4mdg1iHcROpuXqmM94BWJvabLFWaJVJp0=",
+
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
+
"rev": "def3da69945bbe338c373fddad5a1bb49cf199ce",
"type": "github"
},
"original": {
-
"owner": "NixOS",
+
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
+
"rev": "def3da69945bbe338c373fddad5a1bb49cf199ce",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
-
"lastModified": 1751984180,
-
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
+
"lastModified": 1767116409,
+
"narHash": "sha256-5vKw92l1GyTnjoLzEagJy5V5mDFck72LiQWZSOnSicw=",
"owner": "nixos",
"repo": "nixpkgs",
-
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
+
"rev": "cad22e7d996aea55ecab064e84834289143e44a0",
"type": "github"
},
"original": {
···
"nixpkgs": "nixpkgs"
},
"locked": {
-
"lastModified": 1746537231,
-
"narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=",
+
"lastModified": 1754416808,
+
"narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=",
"owner": "cachix",
"repo": "git-hooks.nix",
-
"rev": "fa466640195d38ec97cf0493d6d6882bc4d14969",
+
"rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864",
"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",
···
"type": "github"
}
},
-
"systems_3": {
-
"locked": {
-
"lastModified": 1681028828,
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-
"owner": "nix-systems",
-
"repo": "default",
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-
"type": "github"
-
},
-
"original": {
-
"owner": "nix-systems",
-
"repo": "default",
-
"type": "github"
-
}
-
},
"xwayland-satellite-stable": {
"flake": false,
"locked": {
-
"lastModified": 1748488455,
-
"narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=",
+
"lastModified": 1755491097,
+
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
-
"rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73",
+
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
"type": "github"
},
"original": {
"owner": "Supreeeme",
-
"ref": "v0.6",
+
"ref": "v0.7",
"repo": "xwayland-satellite",
"type": "github"
}
···
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
-
"lastModified": 1751228685,
-
"narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=",
+
"lastModified": 1766429945,
+
"narHash": "sha256-9Kv4gWagx/u4RfZJzBMAoagW9ava5waxd+XoTkzqF7E=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
-
"rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b",
+
"rev": "0dde7ca1d3a8e8c5082533d76084e2aa02bef70e",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1752293576,
-
"narHash": "sha256-84tAzrC/kioWRmG0jLt1HWRP/wHON7zjLtXCwWRNI/g=",
+
"lastModified": 1767307876,
+
"narHash": "sha256-d5EKvUnfr6tdhymIThz0WGG0JHT2cCZzbZK4t2CwYuc=",
"owner": "youwen5",
"repo": "zen-browser-flake",
-
"rev": "1a40cdcb093a0025631ef692caa53130f821dd77",
+
"rev": "c5bffaf433e6137fe80cd1930584836f11119b26",
"type": "github"
},
"original": {
+19 -29
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";
};
···
};
lix-module = {
-
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-2.tar.gz";
+
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.3-2.tar.gz";
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;
+
};
+
}
+4 -1
hosts/wallsocket/hardware.nix
···
{
delib,
lib,
+
pkgs,
...
}: let
platform = "x86_64-linux";
···
nixpkgs.hostPlatform = platform;
system.stateVersion = stateVersion;
-
hardware.enableRedistributableFirmware = true;
+
hardware.enableAllFirmware = true;
hardware.cpu.amd.updateMicrocode = true;
# Kernel
···
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
+
boot.kernelPackages = pkgs.linuxPackages_latest;
# Bootloader
boot.loader.systemd-boot.enable = true;
boot.loader.systemd-boot.configurationLimit = 10;
+
boot.loader.systemd-boot.consoleMode = "max";
boot.loader.efi.canTouchEfiVariables = true;
# Disks
+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";
};
+10 -10
modules/bluetooth.nix
···
nixos.ifEnabled = {
hardware.bluetooth.enable = true;
# TODO: determine if this actually affected me. Maybe should yeet.
-
hardware.bluetooth.settings = {
-
# Try and reduce latency from Xbox Series controllers
-
# https://atar-axis.github.io/xpadneo#high-latency-or-lost-button-events-with-bluetooth-le
-
LE = {
-
MinConnectionInterval = 7;
-
MaxConnectionInterval = 9;
-
ConnectionLatency = 0;
-
};
-
};
-
hardware.xpadneo.enable = true;
+
# hardware.bluetooth.settings = {
+
# # Try and reduce latency from Xbox Series controllers
+
# # https://atar-axis.github.io/xpadneo#high-latency-or-lost-button-events-with-bluetooth-le
+
# LE = {
+
# MinConnectionInterval = 7;
+
# MaxConnectionInterval = 9;
+
# ConnectionLatency = 0;
+
# };
+
# };
+
# hardware.xpadneo.enable = true;
environment.systemPackages = [pkgs.kdePackages.bluedevil];
};
}
+4 -3
modules/darwin/homebrew.nix
···
onActivation.cleanup = "zap";
taps = [
-
"homebrew/cask-versions"
"ovyerus/klog"
"ovyerus/tap"
];
···
casks = [
"1password"
+
"blender"
"discord"
"figma"
"httpie"
···
# Actually searches symlinks for apps, compared to Alfred.
"raycast"
"swiftformat-for-xcode"
-
# "visual-studio-code"
+
"tailscale-app"
# "vorta"
+
"vesktop"
+
"zen"
];
masApps = {
Keka = 470158793;
"Yubico Authenticator" = 1497506650;
"System Color Picker" = 1545870783;
-
Tailscale = 1475387142;
};
};
}
+8
modules/darwin/system.nix
···
+
{delib, ...}:
+
delib.module {
+
name = "darwin.system";
+
+
darwin.always = {
+
system.primaryUser = "ovy";
+
};
+
}
+5 -1
modules/fonts.nix
···
nixos.always = {
fonts = {
packages = [
-
pkgs.ubuntu_font_family
+
pkgs.ubuntu-classic
+
pkgs.ubuntu-sans
pkgs.inter
+
# Only needed for one specific thing and now can't download from sourceforge for some reason
+
# pkgs.corefonts
+
# pkgs.vista-fonts
inputs.iosevka-solai.packages.x86_64-linux.bin
];
+5 -1
modules/graphics.nix
···
enable = true;
enable32Bit = true;
};
+
hardware.amdgpu = {
+
initrd.enable = true;
+
opencl.enable = true;
+
};
-
environment.systemPackages = with pkgs; [amdgpu_top lact nvtopPackages.full];
+
environment.systemPackages = with pkgs; [amdgpu_top lact];
systemd.services.lactd = {
description = "AMDGPU Control Daemon";
-11
modules/logitech.nix
···
-
{delib, ...}:
-
delib.module {
-
name = "logitech";
-
-
options = delib.singleEnableOption true;
-
-
nixos.ifEnabled = {
-
hardware.logitech.wireless.enable = true;
-
hardware.new-lg4ff.enable = true;
-
};
-
}
-6
modules/networking.nix
···
# dnsovertls = "trues";
};
-
services.tailscale = {
-
enable = true;
-
openFirewall = true;
-
useRoutingFeatures = "client";
-
};
-
# services.mullvad-vpn.enable = true;
# services.mullvad-vpn.package = pkgs.mullvad-vpn;
+68 -62
modules/nix.nix
···
delib,
inputs,
...
-
}: let
-
shared.nix.settings = {
-
auto-optimise-store = true;
-
experimental-features = ["nix-command" "flakes"];
-
trusted-users = ["root" "@wheel"];
+
}:
+
delib.module {
+
name = "nix";
+
+
# TODO: double check home-manager options
+
home.always = {
+
nixpkgs.config = import ../files/nixpkgs-config.nix;
+
xdg.configFile."nixpkgs/config.nix".source = ../files/nixpkgs-config.nix;
};
-
in
-
delib.module {
-
name = "nix";
-
# TODO: double check home-manager options
-
home.always = shared;
-
nixos.always =
-
shared
-
// {
-
nix = {
-
gc = {
-
automatic = true;
-
options = "--delete-older-than 10d";
-
dates = "weekly";
-
};
+
nixos.always = {
+
nixpkgs.config = import ../files/nixpkgs-config.nix;
-
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
+
nix = {
+
gc = {
+
automatic = true;
+
options = "--delete-older-than 10d";
+
dates = "weekly";
+
};
-
registry.nixpkgs.to = {
-
type = "path";
-
path = inputs.nixpkgs;
-
narHash = inputs.nixpkgs.narHash;
-
};
-
};
+
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
-
nixpkgs.config.allowUnfree = true;
-
system.tools.nixos-option.enable = false;
+
registry.nixpkgs.to = {
+
type = "path";
+
path = inputs.nixpkgs;
+
narHash = inputs.nixpkgs.narHash;
};
-
darwin.always = {
-
nixpkgs.config.allowUnfree = true;
+
settings = {
+
auto-optimise-store = true;
+
experimental-features = ["nix-command" "flakes"];
+
trusted-users = ["root" "@wheel" "ovy"];
+
warn-dirty = false;
+
};
+
};
-
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";
-
}
-
];
+
system.tools.nixos-option.enable = false;
+
};
+
+
darwin.always = {
+
nixpkgs.config = import ../files/nixpkgs-config.nix;
+
+
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;
+
distributedBuilds = true;
-
gc = {
-
automatic = true;
-
options = "--delete-older-than 7d";
-
interval.Weekday = 6;
-
};
+
gc = {
+
automatic = true;
+
options = "--delete-older-than 7d";
+
interval.Weekday = 6;
+
};
-
optimise.automatic = true;
+
optimise.automatic = true;
-
settings = {
-
builders-use-substitutes = true;
-
experimental-features = "nix-command flakes";
-
trusted-users = ["root" "ovy"];
-
};
+
settings = {
+
builders-use-substitutes = true;
+
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";
-
};
-
}
+15 -1
modules/plasma.nix
···
environment.plasma6.excludePackages = with pkgs.kdePackages; [
elisa
gwenview
+
kate
konsole
+
krunner
];
qt = {
···
# environment.sessionVariables."NIXOS_OZONE_WL" = 1;
environment.sessionVariables."MOZ_ENABLE_WAYLAND" = 0;
-
environment.systemPackages = with pkgs; [adwaita-icon-theme kdePackages.kcalc kdePackages.partitionmanager kdePackages.kcolorchooser];
+
environment.systemPackages = with pkgs; [
+
adwaita-icon-theme
+
kdePackages.kcalc
+
kdePackages.partitionmanager
+
kdePackages.kcolorchooser
+
kdePackages.kdenlive
+
];
+
+
# TODO: move
+
boot.plymouth = {
+
enable = true;
+
theme = "breeze";
+
};
};
}
+1 -2
modules/programs/core-cli.nix
···
openssh
p7zip
pciutils
-
solaar
sysstat
unar
wget
···
home.always = {
home.packages = with pkgs; [
curlie
-
du-dust
+
dust
duf
fd
jq
+8 -8
modules/programs/desktop-apps.nix
···
home.packages = with pkgs; [
alejandra
audacity
-
blender
+
blender-hip
btop # TODO: module & options
-
bruno
-
# davinci-resolve
-
# distrobox
+
# bruno
+
davinci-resolve
+
(discord.override {
+
withOpenASAR = true;
+
withVencord = true;
+
})
gajim
glaxnimate
# godot_4
···
lunacy
lutris
# mixxx
-
obs-studio
obsidian
oversteer
p7zip
···
temurin-bin-17
];
})
+
protonup-qt
qbittorrent
qimgv
slack
-
vesktop
vlc
vorta
winetricks
yt-dlp
yubioath-flutter
];
-
-
services.owncloud-client.enable = true;
};
}
+23
modules/programs/desktop-cli.nix
···
{
delib,
+
lib,
pkgs,
...
}:
···
minisign
mtr
nix-output-monitor
+
opencode
pgcli
rage
systemctl-tui
];
+
+
nixos.ifEnabled = {myconfig, ...}: {
+
programs.nh = {
+
enable = true;
+
flake = "/etc/nixos";
+
};
+
+
environment.systemPackages = with pkgs.gst_all_1; [
+
gstreamer
+
gst-vaapi
+
gst-libav
+
gst-plugins-good
+
gst-plugins-ugly
+
gst-plugins-bad
+
];
+
};
+
+
darwin.ifEnabled = {myconfig, ...}: {
+
environment.systemPackages = with pkgs; [nh];
+
environment.variables.NH_FLAKE = "/Users/${myconfig.constants.username}/.config/nix-darwin";
+
};
}
+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"
];
};
}
+4
modules/programs/espanso.nix
···
trigger = ":degrees";
replace = "ยฐ";
}
+
{
+
trigger = ":--";
+
replace = "โ€”";
+
}
];
};
}
-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;
-
};
-
}
+6 -2
modules/programs/fish.nix
···
nix-your-shell fish | source
+
if test -d /opt/homebrew/bin;
+
fish_add_path /opt/homebrew/bin
+
end;
+
# Docker compose alias that switches to if the standalone binary is present.
if which docker-compose &> /dev/null;
alias dc docker-compose;
···
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=";
};
}
{
+68 -5
modules/programs/git.nix
···
-
{delib, ...}:
+
{
+
delib,
+
pkgs,
+
...
+
}:
delib.module {
name = "programs.git";
···
in {
xdg.configFile."git/allowed_signers".source = ../../files/git/allowed_signers;
+
home.packages = [pkgs.jjui];
+
programs.git = {
enable = true;
-
userName = userfullname;
-
userEmail = useremail;
-
delta.enable = true;
signing = {
signByDefault = true;
···
key = "~/.ssh/id_ed25519_sk_rk";
};
-
extraConfig = {
+
settings = {
+
user = {
+
name = userfullname;
+
email = useremail;
+
};
+
# TODO: custom pretty stuff?
blame.showEmail = true;
init.defaultBranch = "main";
···
ff = "only";
# Really only useful on a well-managed team. Maybe eventually.
# verifySignatures = true;
+
conflictStyle = "diff3";
};
push = {
···
name = userfullname;
email = useremail;
};
+
+
ui = {
+
default-command = "log";
+
show-cryptographic-signatures = true;
+
conflict-marker-style = "git";
+
# diff-formatter = "delta";
+
editor = "codium -w";
+
merge-editor = "vscodium";
+
};
+
+
revset-aliases = {
+
"closest_bookmark(to)" = "heads(::to & bookmarks())";
+
"p(n)" = "p(@, n)";
+
"p(r, n)" = "roots(r | ancestors(r-, n))";
+
"tail()" = "tail(@)";
+
"tail(h)" = "roots(trunk()..h)";
+
};
+
+
aliases = {
+
e = ["edit"];
+
n = ["new"];
+
tug = ["bookmark" "move" "--from" "closest_bookmark(@-)" "--to" "@-"];
+
tug-here = ["bookmark" "move" "--from" "closest_bookmark(@)" "--to" "@"];
+
solve = ["resolve" "--tool" "mergiraf"];
+
};
+
+
merge-tools.mergiraf = {
+
program = "mergiraf";
+
merge-args = ["merge" "$base" "$left" "$right" "-o" "$output"];
+
merge-conflict-exit-codes = [1];
+
conflict-marker-style = "git";
+
};
+
+
git = {
+
sign-on-push = true;
+
write-change-id-header = true;
+
};
+
+
signing = {
+
behavior = "drop";
+
backend = "ssh";
+
key = "~/.ssh/id_ed25519_sk_rk.pub";
+
backends.ssh.allowed-signers = "~/.config/git/allowed_signers";
+
};
+
+
remotes.origin.auto-track-bookmarks = "glob:*";
};
};
+
+
programs.delta = {
+
enable = true;
+
enableGitIntegration = true;
+
enableJujutsuIntegration = true;
+
};
+
+
programs.mergiraf.enable = true;
};
}
+1 -1
modules/programs/kitty.nix
···
cursor_shape = "block";
cursor_shape_unfocused = "hollow";
scrollback_lines = 10000;
-
scrollback_pager = "moar +INPUT_LINE_NUMBER";
+
scrollback_pager = "moor +INPUT_LINE_NUMBER";
scrollback_pager_history_size = 5;
window_padding_width = 8;
hide_window_decorations = true;
+20
modules/programs/obs-studio.nix
···
+
{
+
delib,
+
pkgs,
+
...
+
}:
+
delib.module {
+
name = "programs.obs-studio";
+
+
options = delib.singleEnableOption true;
+
+
nixos.ifEnabled.programs.obs-studio = {
+
enable = true;
+
plugins = with pkgs.obs-studio-plugins; [
+
obs-vaapi
+
obs-gstreamer
+
obs-vkcapture
+
obs-pipewire-audio-capture
+
];
+
};
+
}
+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 -3
modules/programs/pager.nix
···
# TODO: read docs and experiment
home.always = {
-
home.packages = [pkgs.moar];
+
home.packages = [pkgs.moor];
home.sessionVariables = {
-
PAGER = "moar";
-
MOAR = "--no-linenumbers";
+
PAGER = "moor";
+
MOOR = "--no-linenumbers";
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
MANROFFOPT = "-c";
};
+2
modules/programs/ssh.nix
···
home.always.programs.ssh = {
enable = true;
+
enableDefaultConfig = false;
+
matchBlocks = {
"*" = {
identitiesOnly = true;
+8 -2
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; [
···
ms-azuretools.vscode-docker
editorconfig.editorconfig
irongeek.vscode-env
+
jjk.jjk
pgourlain.erlang
usernamehw.errorlens
dbaeumer.vscode-eslint
···
bmalehorn.vscode-fish
github.vscode-github-actions
eamodio.gitlens
-
# TODO: terraform (use opentofu instead)
ms-vscode.hexeditor
lokalise.i18n-ally
kisstkondoros.vscode-gutter-preview
···
vunguyentuan.vscode-postcss
esbenp.prettier-vscode
prisma.prisma
+
gleam.gleam
# TODO: use jedi instead of pylance
ms-python.python
ms-python.debugpy
···
wakatime.vscode-wakatime
redhat.vscode-yaml
arcanis.vscode-zipfs
+
golang.go
vscode-marketplace.wraith13.background-phi-colors
vscode-marketplace.be5invis.theme-dolch
vscode-marketplace.fabiospampinato.vscode-diff
···
"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";
+
"[go]"."editor.defaultFormatter" = "golang.go";
# Sane defaults
"editor.tabSize" = 2;
···
];
# "prettier.prettierPath" = "prettierd";
"prettier.proseWrap" = "always";
+
"chat.disableAIFeatures" = true;
# Pretties
"workbench.colorTheme" = "Dolch";
+9 -3
modules/systemd.nix
···
nixos.always = {
systemd = {
-
extraConfig = ''
-
DefaultTimeoutStopSec=30s
-
'';
+
settings.Manager.DefaultTimeoutStopSec = "30s";
user.extraConfig = ''
DefaultTimeoutStopSec=30s
'';
};
+
+
services.udev.extraRules = ''
+
# USB device rules for both dongle and mouse (Lamzu Maya)
+
SUBSYSTEM=="usb", ATTRS{idVendor}=="3554", ATTRS{idProduct}=="f50d", MODE="0666", GROUP="input", TAG+="uaccess"
+
SUBSYSTEM=="usb", ATTRS{idVendor}=="3554", ATTRS{idProduct}=="f50f", MODE="0666", GROUP="input", TAG+="uaccess"
+
KERNEL=="hidraw*", ATTRS{idVendor}=="3554", ATTRS{idProduct}=="f50d", MODE="0666", GROUP="input", TAG+="uaccess"
+
KERNEL=="hidraw*", ATTRS{idVendor}=="3554", ATTRS{idProduct}=="f50f", MODE="0666", GROUP="input", TAG+="uaccess"
+
'';
};
}
+14
modules/tailscale.nix
···
+
{delib, ...}:
+
delib.module {
+
name = "tailscale";
+
+
options = delib.singleEnableOption true;
+
+
nixos.ifEnabled.services.tailscale = {
+
enable = true;
+
openFirewall = true;
+
useRoutingFeatures = "client";
+
};
+
+
# home.ifEnabled.services.tailscale-systray.enable = true;
+
}