mirror of
https://github.com/davegallant/nix-config
synced 2026-01-12 09:54:06 +00:00
Compare commits
1 Commits
main
...
10e0c2fc7c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
10e0c2fc7c |
6
.github/workflows/cachix.yml
vendored
6
.github/workflows/cachix.yml
vendored
@@ -14,11 +14,11 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: cachix/install-nix-action@v31
|
||||
- uses: actions/checkout@v4
|
||||
- uses: cachix/install-nix-action@v26
|
||||
with:
|
||||
nix_path: nixpkgs=channel:nixos-unstable
|
||||
- uses: cachix/cachix-action@v16
|
||||
- uses: cachix/cachix-action@v14
|
||||
with:
|
||||
name: davegallant
|
||||
authToken: '${{ secrets.CACHIX_API_KEY }}'
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.pre-commit-config.yaml
|
||||
.vscode
|
||||
git-crypt-key
|
||||
result
|
||||
|
||||
53
README.md
53
README.md
@@ -1,39 +1,17 @@
|
||||
# nix-config
|
||||
|
||||
This repo stores nix configuration to manage my hosts running [NixOS](https://nixos.org/) and macOS.
|
||||
This repo stores nix to manage my machines running [NixOS](https://nixos.org/) and macOS.
|
||||
|
||||
The configuration is very specific to my own machines and setup, but it may be a useful reference for anyone else learning or experimenting with nix, whether it be on a personal workstation or a server environment.
|
||||
|
||||
```console
|
||||
❯ macchina
|
||||
## Setup
|
||||
|
||||
a8888b. Host - dave@hephaestus
|
||||
d888888b. Machine - Micro-Star International Co., Ltd MS-7C02 1.0
|
||||
8P"YP"Y88 Kernel - 6.12.61
|
||||
8|o||o|88 Distro - NixOS 25.11 (Xantusia)
|
||||
8' .88 DE - KDE
|
||||
8`._.' Y8. Packages - 1 (cargo), 10998 (nix)
|
||||
d/ `8b. Shell - fish
|
||||
dP Y8b. Terminal - alacritty
|
||||
d8: ::88b. Resolution - 2560x1440, 3840x2160
|
||||
d8" 'Y88b Uptime - 26m
|
||||
:8P :888 CPU - AMD Ryzen 7 5700X 8-Core Processor (16)
|
||||
8a. _a88P CPU Load - 8%
|
||||
._/"Yaa .| 88P| Memory - 10.7 GB / 32.8 GB
|
||||
\ YP" `| `.
|
||||
/ \.___.d| .'
|
||||
`--..__) `._.'
|
||||
```
|
||||
> on macOS: install the latest unstable nix from https://github.com/numtide/nix-unstable-installer (for nix flakes),
|
||||
> and nix-darwin: https://github.com/LnL7/nix-darwin
|
||||
|
||||
## Prerequisites
|
||||
Recipes are stored in a justfile. [just](https://github.com/casey/just) is required.
|
||||
|
||||
- [NixOS](nixos.org) (Linux)
|
||||
- [Determinate Nix](https://determinate.systems/nix-installer) (macOS)
|
||||
- [just](https://github.com/casey/just)
|
||||
|
||||
## Build
|
||||
|
||||
To run a build/rebuild:
|
||||
To run a rebuild:
|
||||
|
||||
```sh
|
||||
just rebuild
|
||||
@@ -65,21 +43,6 @@ To cleanup previous files, run nix garbage collection:
|
||||
just clean
|
||||
```
|
||||
|
||||
## Restoring from a live USB
|
||||
## Pre-commit hooks
|
||||
|
||||
If the bootloader for some reason breaks (i.e. motherboard firmware upgrade), restore it from a live USB by running the following commands:
|
||||
|
||||
```console
|
||||
$ sudo cryptsetup luksOpen /dev/nvme0n1p2 crypted-nixos
|
||||
Enter passphrase for /dev/nvme0n1p2: ********
|
||||
$ sudo mount /dev/vg/root /mnt
|
||||
$ sudo mount /dev/nvme0n1p1 /mnt/boot/efi
|
||||
$ sudo nixos-enter --root /mnt
|
||||
$ hostname <hostname>
|
||||
```
|
||||
|
||||
Navigate to the nix-config directory and run:
|
||||
|
||||
```sh
|
||||
just rebuild-boot
|
||||
```
|
||||
Pre-commit hooks are automatically activated when [direnv](https://github.com/direnv/direnv) is installed.
|
||||
|
||||
14
default.nix
Normal file
14
default.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
let
|
||||
nix-pre-commit-hooks =
|
||||
import (builtins.fetchTarball
|
||||
"https://github.com/cachix/pre-commit-hooks.nix/tarball/master");
|
||||
in
|
||||
{
|
||||
pre-commit-check = nix-pre-commit-hooks.run {
|
||||
src = ./.;
|
||||
hooks = {
|
||||
shellcheck.enable = true;
|
||||
nixpkgs-fmt.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
467
flake.lock
generated
467
flake.lock
generated
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"nodes": {
|
||||
"beautysh": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
],
|
||||
"poetry2nix": "poetry2nix",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1680308980,
|
||||
"narHash": "sha256-aUEHV0jk2qIFP3jlsWYWhBbm+w/N9gzH3e4I5DcdB5s=",
|
||||
"owner": "lovesegfault",
|
||||
"repo": "beautysh",
|
||||
"rev": "9845efc3ea3e86cc0d41465d720a47f521b2799c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lovesegfault",
|
||||
"repo": "beautysh",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -7,85 +30,27 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1767634391,
|
||||
"narHash": "sha256-owcSz2ICqTSvhBbhPP+1eWzi88e54rRZtfCNE5E/wwg=",
|
||||
"lastModified": 1710281379,
|
||||
"narHash": "sha256-uFo9hxt982L3nFJeweW4Gip2esiGrIQlbvEGrNTh4AY=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "08585aacc3d6d6c280a02da195fdbd4b9cf083c2",
|
||||
"rev": "d9ea313bc4851670dc99c5cc979cb79750e7d670",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"ref": "nix-darwin-25.11",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"determinate": {
|
||||
"inputs": {
|
||||
"determinate-nixd-aarch64-darwin": "determinate-nixd-aarch64-darwin",
|
||||
"determinate-nixd-aarch64-linux": "determinate-nixd-aarch64-linux",
|
||||
"determinate-nixd-x86_64-linux": "determinate-nixd-x86_64-linux",
|
||||
"nix": "nix",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766549083,
|
||||
"narHash": "sha256-G1Hljg7vIBt8n9cxO382YAZWtZU/mYfQcg3icdNG8RQ=",
|
||||
"rev": "ba8999fac986e70f52b4cba15047be7bbb7b6346",
|
||||
"revCount": 318,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/determinate/3.15.1/019b4e8a-dc22-75db-aef5-a447efbb1a13/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/DeterminateSystems/determinate/%2A"
|
||||
}
|
||||
},
|
||||
"determinate-nixd-aarch64-darwin": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"narHash": "sha256-uWDS94cAYprGj+AwuT42nuuDDicRLj1S0JwalZGeBRU=",
|
||||
"type": "file",
|
||||
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/macOS"
|
||||
},
|
||||
"original": {
|
||||
"type": "file",
|
||||
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/macOS"
|
||||
}
|
||||
},
|
||||
"determinate-nixd-aarch64-linux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"narHash": "sha256-uHBcZCh2/Bj5/88TDihupA336tSQDk7s5lVP66IDAX0=",
|
||||
"type": "file",
|
||||
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/aarch64-linux"
|
||||
},
|
||||
"original": {
|
||||
"type": "file",
|
||||
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/aarch64-linux"
|
||||
}
|
||||
},
|
||||
"determinate-nixd-x86_64-linux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"narHash": "sha256-y+l05H6GNv/1WcrMztDYem8VBWqjc9gNg4WjeQ1PQxo=",
|
||||
"type": "file",
|
||||
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/x86_64-linux"
|
||||
},
|
||||
"original": {
|
||||
"type": "file",
|
||||
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/x86_64-linux"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -94,58 +59,16 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"determinate",
|
||||
"nix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1748821116,
|
||||
"narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=",
|
||||
"rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1",
|
||||
"revCount": 377,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/hercules-ci/flake-parts/0.1.377%2Brev-49f0870db23e8c1ca0b5259734a02cd9e1e371a1/01972f28-554a-73f8-91f4-d488cc502f08/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/hercules-ci/flake-parts/0.1"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765835352,
|
||||
"narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "a34fae9c08a15ad73f295041fec82323541400a9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -156,14 +79,14 @@
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"lastModified": 1685518550,
|
||||
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -172,231 +95,103 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks-nix": {
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": [
|
||||
"determinate",
|
||||
"nix"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"determinate",
|
||||
"nix",
|
||||
"nixvim",
|
||||
"pre-commit-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747372754,
|
||||
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=",
|
||||
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46",
|
||||
"revCount": 1026,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/cachix/git-hooks.nix/0.1.1026%2Brev-80479b6ec16fefd9c1db3ea13aeb038c60530f46/0196d79a-1b35-7b8e-a021-c894fb62163d/source.tar.gz"
|
||||
"lastModified": 1660459072,
|
||||
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/cachix/git-hooks.nix/0.1.941"
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1767910483,
|
||||
"narHash": "sha256-MOU5YdVu4DVwuT5ztXgQpPuRRBjSjUGIdUzOQr9iQOY=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "82fb7dedaad83e5e279127a38ef410bcfac6d77c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-25.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ixx": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nuschtosSearch",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1754860581,
|
||||
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "ixx",
|
||||
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
|
||||
"lastModified": 1706981411,
|
||||
"narHash": "sha256-cLbLPTL1CDmETVh4p0nQtvoF+FSEjsnJTFpTxhXywhQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "652fda4ca6dafeb090943422c34ae9145787af37",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"ref": "v0.1.1",
|
||||
"repo": "ixx",
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"git-hooks-nix": "git-hooks-nix",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-23-11": "nixpkgs-23-11",
|
||||
"nixpkgs-regression": "nixpkgs-regression"
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1766546676,
|
||||
"narHash": "sha256-GsC52VFF9Gi2pgP/haQyPdQoF5Qe2myk1tsPcuJZI28=",
|
||||
"rev": "51dacdd248e8071cd0243a8245c8c42ac1f33307",
|
||||
"revCount": 24299,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.15.1/019b4e84-d036-75db-b6c6-6bc2e2035c53/source.tar.gz"
|
||||
"lastModified": 1710123225,
|
||||
"narHash": "sha256-j3oWlxRZxB7cFsgEntpH3rosjFHRkAo/dhX9H3OfxtY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "ad2fd7b978d5e462048729a6c635c45d3d33c9ba",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/DeterminateSystems/nix-src/%2A"
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1761597516,
|
||||
"narHash": "sha256-wxX7u6D2rpkJLWkZ2E932SIvDJW8+ON/0Yy8+a5vsDU=",
|
||||
"rev": "daf6dc47aa4b44791372d6139ab7b25269184d55",
|
||||
"revCount": 811874,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.811874%2Brev-daf6dc47aa4b44791372d6139ab7b25269184d55/019a3494-3498-707e-9086-1fb81badc7fe/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/NixOS/nixpkgs/0.2505"
|
||||
}
|
||||
},
|
||||
"nixpkgs-23-11": {
|
||||
"locked": {
|
||||
"lastModified": 1717159533,
|
||||
"narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=",
|
||||
"lastModified": 1710420202,
|
||||
"narHash": "sha256-MvFKESbq4rUWuaf2RKPNYENaSZEw/jaCLo2gU6oREcM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
|
||||
"rev": "878ef7d9721bee9f81f8a80819f9211ad1f993da",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-master": {
|
||||
"locked": {
|
||||
"lastModified": 1767964817,
|
||||
"narHash": "sha256-w8GpeC0gbKE6ftLbpZx7pgJ1zE9dPkWeOVs36tf481c=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d009f91bd474d996c774ea57be5e65935c778577",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "master",
|
||||
"ref": "nixos-23.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-regression": {
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1643052045,
|
||||
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
|
||||
"lastModified": 1685801374,
|
||||
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.05",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1767767207,
|
||||
"narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=",
|
||||
"lastModified": 1710470187,
|
||||
"narHash": "sha256-l2R47RqhdEUYrMrQjdFKhxtqprkJjIE89qJx3iEVv+U=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5912c1772a44e31bf1c63c0390b90501e5026886",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1766314097,
|
||||
"narHash": "sha256-laJftWbghBehazn/zxVJ8NdENVgjccsWAdAqKXhErrM=",
|
||||
"rev": "306ea70f9eb0fb4e040f8540e2deab32ed7e2055",
|
||||
"revCount": 914780,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nixpkgs-weekly/0.1.914780%2Brev-306ea70f9eb0fb4e040f8540e2deab32ed7e2055/019b49b8-ed0f-724e-bdaf-5fd90cc1c590/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/DeterminateSystems/nixpkgs-weekly/0.1"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1767799921,
|
||||
"narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d351d0653aeb7877273920cd3e823994e7579b0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1767799921,
|
||||
"narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d351d0653aeb7877273920cd3e823994e7579b0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1763934636,
|
||||
"narHash": "sha256-9glbI7f1uU+yzQCq5LwLgdZqx6svOhZWkd4JRY265fc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ee09932cedcef15aaf476f9343d1dea2cb77e261",
|
||||
"rev": "f242fc768bdfcf91d9094a8a8f66551324bf1a47",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -408,61 +203,88 @@
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_2",
|
||||
"beautysh": "beautysh",
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nuschtosSearch": "nuschtosSearch",
|
||||
"systems": "systems_2"
|
||||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1767448089,
|
||||
"narHash": "sha256-U1fHsZBnFrUil731NHD9Sg5HoiG+eSHau8OFuClhwW0=",
|
||||
"lastModified": 1704297403,
|
||||
"narHash": "sha256-g7+4SiXDGzIlWIfANyH1J5CeEaY+Alah6KOm6IO4nIk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "983751b66f255bbea1adc185364e9e7b73f82358",
|
||||
"rev": "b3ea5256e07ee9105060cffa075028402946bd63",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "nixos-25.11",
|
||||
"ref": "nixos-23.11",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nuschtosSearch": {
|
||||
"poetry2nix": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"ixx": "ixx",
|
||||
"flake-utils": [
|
||||
"nixvim",
|
||||
"beautysh",
|
||||
"utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"beautysh",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761730856,
|
||||
"narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=",
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b",
|
||||
"lastModified": 1658665240,
|
||||
"narHash": "sha256-/wkx7D7enyBPRjIkK0w7QxLQhzEkb3UxNQnjyc3FTUI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "poetry2nix",
|
||||
"rev": "8b8edc85d24661d5a6d0d71d6a7011f3e699780f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NuschtOS",
|
||||
"repo": "search",
|
||||
"owner": "nix-community",
|
||||
"repo": "poetry2nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1703939133,
|
||||
"narHash": "sha256-Gxe+mfOT6bL7wLC/tuT2F+V+Sb44jNr8YsJ3cyIl4Mo=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "9d3d7e18c6bc4473d7520200d4ddab12f8402d38",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"darwin": "darwin",
|
||||
"determinate": "determinate",
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs-master": "nixpkgs-master",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nixvim": "nixvim",
|
||||
"vpngate": "vpngate"
|
||||
"nixvim": "nixvim"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
@@ -495,37 +317,18 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"lastModified": 1678901627,
|
||||
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"vpngate": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766183672,
|
||||
"narHash": "sha256-24+gJj4UsxwQmdxSS3Aqo2fl0Ep13sYrTDvcHY24mwA=",
|
||||
"owner": "davegallant",
|
||||
"repo": "vpngate",
|
||||
"rev": "a668484da6b969d29dd2f74d5a4f2323fb48beef",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "davegallant",
|
||||
"repo": "vpngate",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
|
||||
153
flake.nix
153
flake.nix
@@ -2,87 +2,71 @@
|
||||
description = "nixos and macos configurations";
|
||||
|
||||
inputs = {
|
||||
determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||
|
||||
darwin = {
|
||||
url = "github:lnl7/nix-darwin/nix-darwin-25.11";
|
||||
url = "github:lnl7/nix-darwin";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
home-manager.url = "github:nix-community/home-manager/release-25.11";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-23.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim/nixos-25.11";
|
||||
url = "github:nix-community/nixvim/nixos-23.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
vpngate.url = "github:davegallant/vpngate";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
darwin,
|
||||
determinate,
|
||||
home-manager,
|
||||
nixpkgs,
|
||||
nixpkgs-unstable,
|
||||
nixpkgs-master,
|
||||
vpngate,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
supportedSystems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
|
||||
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
|
||||
in
|
||||
{
|
||||
{ self
|
||||
, darwin
|
||||
, home-manager
|
||||
, nixpkgs
|
||||
, nixpkgs-unstable
|
||||
, nixos-hardware
|
||||
, ...
|
||||
} @ inputs: {
|
||||
nixosConfigurations =
|
||||
let
|
||||
unstable = import nixpkgs-unstable {
|
||||
system = "x86_64-linux";
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
master = import nixpkgs-master {
|
||||
system = "x86_64-linux";
|
||||
config.allowUnfree = true;
|
||||
config.permittedInsecurePackages = [ ];
|
||||
};
|
||||
in
|
||||
{
|
||||
hephaestus = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit unstable;
|
||||
inherit master;
|
||||
inherit vpngate;
|
||||
inherit inputs;
|
||||
};
|
||||
modules = [
|
||||
./hosts/hephaestus.nix
|
||||
./common-packages.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
specialArgs = { inherit unstable; };
|
||||
modules =
|
||||
[
|
||||
./fonts.nix
|
||||
./machines/hephaestus/configuration.nix
|
||||
./packages.nix
|
||||
./services/netdata/default.nix
|
||||
./upgrade-diff.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
|
||||
({ config
|
||||
, lib
|
||||
, ...
|
||||
}: {
|
||||
config = {
|
||||
nix = {
|
||||
settings = {
|
||||
auto-optimise-store = true;
|
||||
sandbox = false;
|
||||
substituters = [ "https://davegallant.cachix.org" ];
|
||||
trusted-users = [
|
||||
"root"
|
||||
];
|
||||
trusted-users = [ "root" "dave" ];
|
||||
trusted-public-keys = [
|
||||
"davegallant.cachix.org-1:SsUMqL4+tF2R3/G6X903E9laLlY1rES2QKFfePegF08="
|
||||
];
|
||||
};
|
||||
registry = {
|
||||
nixpkgs.flake = nixpkgs;
|
||||
};
|
||||
registry = { nixpkgs.flake = nixpkgs; };
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "daily";
|
||||
@@ -90,24 +74,24 @@
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs.overlays = [ (import ./overlays) ];
|
||||
nixpkgs.overlays = [
|
||||
(import ./overlays)
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.dave.imports = [
|
||||
./home.nix
|
||||
inputs.nixvim.homeModules.nixvim
|
||||
./home/default.nix
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
];
|
||||
extraSpecialArgs = {
|
||||
inherit unstable;
|
||||
inherit master;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -118,43 +102,36 @@
|
||||
config.allowUnfree = true;
|
||||
inherit system;
|
||||
};
|
||||
master = import nixpkgs-master {
|
||||
config.allowUnfree = true;
|
||||
inherit system;
|
||||
};
|
||||
in
|
||||
{
|
||||
zelus = darwin.lib.darwinSystem {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
inherit unstable;
|
||||
inherit master;
|
||||
};
|
||||
specialArgs = { inherit unstable; };
|
||||
|
||||
modules = [
|
||||
home-manager.darwinModules.home-manager
|
||||
./hosts/zelus.nix
|
||||
./common-packages.nix
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
config = {
|
||||
nixpkgs.overlays = [ (import ./overlays) ];
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users."dave.gallant".imports = [
|
||||
./home.nix
|
||||
inputs.nixvim.homeModules.nixvim
|
||||
];
|
||||
extraSpecialArgs = {
|
||||
inherit unstable;
|
||||
inherit master;
|
||||
};
|
||||
./machines/zelus/configuration.nix
|
||||
./packages.nix
|
||||
./upgrade-diff.nix
|
||||
|
||||
({ config, ... }: {
|
||||
config = {
|
||||
nixpkgs.overlays = [
|
||||
(import ./overlays)
|
||||
];
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users."dave.gallant".imports = [
|
||||
./home/default.nix
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
];
|
||||
extraSpecialArgs = {
|
||||
inherit unstable;
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
23
fonts.nix
Normal file
23
fonts.nix
Normal file
@@ -0,0 +1,23 @@
|
||||
{ pkgs, ... }: {
|
||||
fonts.packages = with pkgs; [
|
||||
dejavu_fonts
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
fira-mono
|
||||
font-awesome
|
||||
google-fonts
|
||||
liberation_ttf
|
||||
nerdfonts
|
||||
noto-fonts
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
noto-fonts-extra
|
||||
];
|
||||
|
||||
fonts.fontconfig.defaultFonts = {
|
||||
sansSerif = [ "Noto Sans" ];
|
||||
serif = [ "Noto Serif" ];
|
||||
monospace = [ "Noto Sans Mono" ];
|
||||
emoji = [ "Noto Color Emoji" ];
|
||||
};
|
||||
}
|
||||
449
home.nix
449
home.nix
@@ -1,449 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
unstable,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) stdenv;
|
||||
in
|
||||
{
|
||||
home.stateVersion = "25.11";
|
||||
|
||||
home.packages = with pkgs; [ just ];
|
||||
|
||||
services = {
|
||||
gpg-agent = {
|
||||
enable = stdenv.isLinux;
|
||||
defaultCacheTtl = 3600;
|
||||
defaultCacheTtlSsh = 3600;
|
||||
enableSshSupport = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.lorri.enable = stdenv.isLinux;
|
||||
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
direnv.enable = true;
|
||||
|
||||
diff-so-fancy = {
|
||||
enable = true;
|
||||
enableGitIntegration = true;
|
||||
};
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
|
||||
lfs.enable = true;
|
||||
|
||||
settings = {
|
||||
user.name = "Dave Gallant";
|
||||
user.signingkey = "5A548984C7377E4D";
|
||||
commit.gpgsign = true;
|
||||
tag.gpgsign = true;
|
||||
alias = {
|
||||
aa = "add -A .";
|
||||
br = "branch";
|
||||
c = "commit";
|
||||
cm = "commit -m";
|
||||
ca = "commit --amend";
|
||||
cane = "commit --amend --no-edit";
|
||||
cb = "checkout -b";
|
||||
co = "checkout";
|
||||
cmp = "! git checkout main && git pl";
|
||||
d = "diff";
|
||||
dc = "diff --cached";
|
||||
dcn = "diff --cached --name-only";
|
||||
l = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
|
||||
ms = "merge --squash";
|
||||
p = "push origin";
|
||||
pf = "push -f";
|
||||
pl = "! git pull origin $(git rev-parse --abbrev-ref HEAD)";
|
||||
st = "status";
|
||||
wip = "for-each-ref --sort='authordate:iso8601' --format=' %(color:green)%(authordate:relative)%09%(color:white)%(refname:short)' refs/heads";
|
||||
};
|
||||
push = {
|
||||
default = "current";
|
||||
};
|
||||
pull = {
|
||||
rebase = true;
|
||||
};
|
||||
};
|
||||
|
||||
includes = [ { path = "~/.gitconfig-work"; } ];
|
||||
|
||||
};
|
||||
|
||||
alacritty = {
|
||||
enable = stdenv.isLinux;
|
||||
settings = {
|
||||
window.padding.x = 10;
|
||||
window.padding.y = 10;
|
||||
scrolling.history = 100000;
|
||||
general.live_config_reload = true;
|
||||
terminal.shell = {
|
||||
program = "fish";
|
||||
};
|
||||
font = {
|
||||
size = lib.mkForce 14.0;
|
||||
};
|
||||
window = {
|
||||
opacity = lib.mkForce 0.9;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
starship = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
settings = {
|
||||
add_newline = false;
|
||||
gcloud = {
|
||||
format = "";
|
||||
};
|
||||
kubernetes = {
|
||||
disabled = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fish = {
|
||||
enable = true;
|
||||
|
||||
interactiveShellInit = ''
|
||||
set fish_greeting
|
||||
|
||||
bind \cw backward-kill-word
|
||||
|
||||
set -x DOCKER_CLI_HINTS false
|
||||
set -x DOCKER_DEFAULT_PLATFORM linux/amd64
|
||||
set -x EDITOR vim
|
||||
set -x NNN_FIFO "$XDG_RUNTIME_DIR/nnn.fifo"
|
||||
set -x PAGER less
|
||||
set -x TERM xterm-256color
|
||||
|
||||
set -x PATH $PATH \
|
||||
~/.cargo/bin \
|
||||
~/.local/bin \
|
||||
~/.npm-packages/bin \
|
||||
/opt/homebrew/bin \
|
||||
~/.krew/bin \
|
||||
~/bin
|
||||
|
||||
# golang
|
||||
set -x GOPATH ~/go
|
||||
set -x GOBIN $GOPATH/bin
|
||||
set -x PATH $PATH $GOBIN
|
||||
|
||||
source $HOME/work.fish
|
||||
# '';
|
||||
|
||||
shellInit = ''
|
||||
atuin init fish | source
|
||||
helm completion fish | source
|
||||
kubectl completion fish | source
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
".." = "cd ..";
|
||||
g = "git";
|
||||
gc = "git checkout $(git branch | fzf)";
|
||||
gco = "git checkout $(git branch -r | sed -e 's/^ origin\\///' | fzf)";
|
||||
gho = "gh repo view --web >/dev/null";
|
||||
gr = "cd $(git rev-parse --show-toplevel)";
|
||||
grep = "rg --smart-case";
|
||||
j = "just";
|
||||
k = "kubecolor";
|
||||
kubectl = "kubecolor";
|
||||
kp = "viddy 'kubectl get pods'";
|
||||
kcx = "kubectx";
|
||||
kns = "kubens";
|
||||
l = "eza -la --git --group-directories-first";
|
||||
m = "make";
|
||||
nix-install = "nix-env -iA";
|
||||
t = "cd-fzf";
|
||||
tf = "terraform";
|
||||
tree = "eza --tree";
|
||||
v = "nvim";
|
||||
};
|
||||
};
|
||||
|
||||
go = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
fzf = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
nnn = {
|
||||
enable = stdenv.isLinux;
|
||||
package = pkgs.nnn.override ({ withNerdIcons = true; });
|
||||
bookmarks = {
|
||||
d = "~/Downloads";
|
||||
p = "~/src/";
|
||||
c = "~/.config";
|
||||
h = "~";
|
||||
};
|
||||
extraPackages = with pkgs; [
|
||||
bat
|
||||
eza
|
||||
fzf
|
||||
imv
|
||||
mediainfo
|
||||
ffmpegthumbnailer
|
||||
];
|
||||
plugins = {
|
||||
src = "${pkgs.nnn.src}/plugins";
|
||||
mappings = {
|
||||
p = "preview-tui";
|
||||
o = "fzopen";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nixvim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
keymaps = [
|
||||
{
|
||||
key = "<C-n>";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>tabnew<cr>";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>y";
|
||||
mode = [ "v" ];
|
||||
action = ''"+y''; # copy to OS clipboard
|
||||
}
|
||||
{
|
||||
key = "<leader>t";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>NvimTreeFindFileToggle<CR>";
|
||||
}
|
||||
{
|
||||
key = "gD";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.declaration()<CR>";
|
||||
}
|
||||
{
|
||||
key = "gd";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.definition()<CR>";
|
||||
}
|
||||
{
|
||||
key = "gr";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.references()<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>ff";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>Telescope find_files<CR>";
|
||||
}
|
||||
{
|
||||
key = "<leader>fg";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>Telescope live_grep<CR>";
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
auto-save.enable = true;
|
||||
cmp-path.enable = true;
|
||||
cmp-treesitter.enable = true;
|
||||
commentary.enable = true;
|
||||
diffview.enable = true;
|
||||
gitblame.enable = true;
|
||||
gitsigns.enable = true;
|
||||
gitlinker.enable = true;
|
||||
lualine.enable = true;
|
||||
lsp.enable = true;
|
||||
lsp.servers = {
|
||||
bashls.enable = true;
|
||||
dockerls.enable = true;
|
||||
gopls.enable = true;
|
||||
helm_ls.enable = true;
|
||||
jsonls.enable = true;
|
||||
nixd.enable = true;
|
||||
terraformls.enable = true;
|
||||
yamlls.enable = true;
|
||||
};
|
||||
lsp-format = {
|
||||
enable = true;
|
||||
settings = {
|
||||
terraform = { };
|
||||
nix = { };
|
||||
go = { };
|
||||
};
|
||||
};
|
||||
cmp.enable = true;
|
||||
nvim-tree.enable = true;
|
||||
rainbow-delimiters.enable = true;
|
||||
treesitter.enable = true;
|
||||
telescope = {
|
||||
enable = true;
|
||||
settings.defaults = {
|
||||
layout_strategy = "vertical";
|
||||
layout_config = {
|
||||
vertical = {
|
||||
width = 0.9;
|
||||
};
|
||||
};
|
||||
};
|
||||
package = pkgs.vimPlugins.telescope-fzy-native-nvim;
|
||||
};
|
||||
web-devicons.enable = true;
|
||||
};
|
||||
opts = {
|
||||
autoindent = true;
|
||||
backup = false;
|
||||
belloff = "all";
|
||||
completeopt = [
|
||||
"menuone"
|
||||
"noselect"
|
||||
];
|
||||
cursorline = true;
|
||||
expandtab = true;
|
||||
fillchars = {
|
||||
diff = "∙";
|
||||
eob = " ";
|
||||
vert = "┃";
|
||||
};
|
||||
hlsearch = true;
|
||||
ignorecase = true;
|
||||
incsearch = true;
|
||||
modelines = 5;
|
||||
mouse = "a";
|
||||
number = true;
|
||||
pumblend = 10;
|
||||
scrolloff = 3;
|
||||
shell = "bash";
|
||||
shiftround = false;
|
||||
shiftwidth = 2;
|
||||
showbreak = "↳ ";
|
||||
showcmd = true;
|
||||
sidescroll = 0;
|
||||
sidescrolloff = 3;
|
||||
smartcase = true;
|
||||
smarttab = true;
|
||||
spellcapcheck = "";
|
||||
splitbelow = true;
|
||||
splitright = true;
|
||||
swapfile = false;
|
||||
switchbuf = "usetab";
|
||||
tabstop = 2;
|
||||
termguicolors = true;
|
||||
wildmenu = true;
|
||||
};
|
||||
|
||||
extraConfigLua = ''
|
||||
|
||||
-- https://github.com/orgs/community/discussions/108329
|
||||
vim.cmd([[let g:copilot_filetypes = {'yaml': v:true}]])
|
||||
|
||||
vim.cmd([[let g:copilot_filetypes = {'gitcommit': v:true}]])
|
||||
|
||||
-- Format JSON
|
||||
vim.cmd([[command! JsonFormat execute "::%!jq '.'"]])
|
||||
|
||||
-- Remember line number
|
||||
vim.cmd([[au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif]])
|
||||
|
||||
-- Replace visual selection
|
||||
vim.cmd([[vnoremap <C-r> "hy:%s/<C-r>h//g<left><left>]])
|
||||
|
||||
-- Indent YAML
|
||||
vim.cmd([[au FileType yaml setlocal ts=2 sts=2 sw=2 expandtab]])
|
||||
|
||||
-- Indent Python
|
||||
vim.cmd([[au BufNewFile,BufRead *.py set tabstop=4 softtabstop=4 shiftwidth=4 textwidth=79 expandtab autoindent fileformat=unix]])
|
||||
|
||||
-- Highlight whitespace
|
||||
vim.cmd([[highlight ExtraWhitespace ctermbg=red guibg=red]])
|
||||
vim.cmd([[match ExtraWhitespace /\s\+$/]])
|
||||
|
||||
-- folding
|
||||
vim.api.nvim_exec(
|
||||
[[
|
||||
set foldmethod=expr
|
||||
set foldlevel=20
|
||||
set nofoldenable
|
||||
set foldexpr=nvim_treesitter#foldexpr()
|
||||
]],
|
||||
true
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
zed-editor = {
|
||||
enable = stdenv.isLinux;
|
||||
package = unstable.zed-editor;
|
||||
extensions = [
|
||||
"ansible"
|
||||
"color-highlight"
|
||||
"dockerfile"
|
||||
"html"
|
||||
"make"
|
||||
"material-icon-theme"
|
||||
"nix"
|
||||
"toml"
|
||||
"vue"
|
||||
];
|
||||
userSettings = {
|
||||
icon_theme = "Material Icon Theme";
|
||||
features = {
|
||||
edit_prediction_provider = "copilot";
|
||||
};
|
||||
vim_mode = true;
|
||||
vim = {
|
||||
use_system_clipboard = "on_yank";
|
||||
};
|
||||
autosave = "on_focus_change";
|
||||
format_on_save = "off";
|
||||
ui_font_size = lib.mkForce 18;
|
||||
buffer_font_size = lib.mkForce 16;
|
||||
};
|
||||
userKeymaps = [
|
||||
{
|
||||
context = "Editor && !menu";
|
||||
bindings = {
|
||||
"ctrl-shift-c" = "editor::Copy";
|
||||
"ctrl-shift-x" = "editor::Cut";
|
||||
"ctrl-shift-v" = "editor::Paste";
|
||||
"ctrl-z" = "editor::Undo";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
firefox = {
|
||||
enable = stdenv.isLinux;
|
||||
|
||||
package = pkgs.librewolf;
|
||||
|
||||
profiles = {
|
||||
default = {
|
||||
id = 0;
|
||||
isDefault = true;
|
||||
settings = {
|
||||
"privacy.resistFingerprinting" = false; # breaks timezone
|
||||
"dom.push.connection.enabled" = false;
|
||||
"dom.push.enabled" = false;
|
||||
"geo.enabled" = false;
|
||||
"intl.regional_prefs.use_os_locales" = true;
|
||||
"services.sync.prefs.sync.intl.regional._prefs.use_os_locates" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
577
home/default.nix
Normal file
577
home/default.nix
Normal file
@@ -0,0 +1,577 @@
|
||||
{ lib
|
||||
, pkgs
|
||||
, unstable
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) stdenv;
|
||||
in
|
||||
{
|
||||
home.stateVersion = "23.11";
|
||||
|
||||
home.packages = with pkgs; [ just ];
|
||||
|
||||
|
||||
services = {
|
||||
gpg-agent = {
|
||||
enable = stdenv.isLinux;
|
||||
defaultCacheTtl = 3600;
|
||||
defaultCacheTtlSsh = 3600;
|
||||
enableSshSupport = true;
|
||||
};
|
||||
};
|
||||
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
direnv.enable = true;
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
|
||||
userName = "Dave Gallant";
|
||||
|
||||
lfs.enable = true;
|
||||
|
||||
aliases = {
|
||||
aa = "add -A .";
|
||||
br = "branch";
|
||||
c = "commit -S";
|
||||
ca = "commit -S --amend";
|
||||
cane = "commit -S --amend --no-edit";
|
||||
cb = "checkout -b";
|
||||
co = "checkout";
|
||||
cmp = "! git checkout main && git pl";
|
||||
d = "diff";
|
||||
dc = "diff --cached";
|
||||
dcn = "diff --cached --name-only";
|
||||
ds = "! git diff origin | sed -r 's/value: (.*)/value: \"************\"/'";
|
||||
l = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
|
||||
ms = "merge --squash";
|
||||
p = "push origin";
|
||||
pf = "push -f";
|
||||
pl = "! git pull origin $(git rev-parse --abbrev-ref HEAD)";
|
||||
st = "status";
|
||||
wip = "for-each-ref --sort='authordate:iso8601' --format=' %(color:green)%(authordate:relative)%09%(color:white)%(refname:short)' refs/heads";
|
||||
};
|
||||
|
||||
includes = [{ path = "~/.gitconfig-work"; }];
|
||||
|
||||
delta = {
|
||||
enable = true;
|
||||
|
||||
options = {
|
||||
features = "line-numbers decorations";
|
||||
whitespace-error-style = "22 reverse";
|
||||
plus-style = "green bold ul '#198214'";
|
||||
decorations = {
|
||||
commit-decoration-style = "bold yellow box ul";
|
||||
file-style = "bold yellow ul";
|
||||
file-decoration-style = "none";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
push = { default = "current"; };
|
||||
pull = { rebase = true; };
|
||||
};
|
||||
};
|
||||
|
||||
starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
|
||||
settings = {
|
||||
add_newline = false;
|
||||
scan_timeout = 10;
|
||||
character = { error_symbol = "[✖](bold red)"; };
|
||||
gcloud = {
|
||||
format = "[$symbol($project) ~ $region]($style)";
|
||||
};
|
||||
kubernetes = {
|
||||
disabled = false;
|
||||
context_aliases = {
|
||||
".*stg_.*" = "stg";
|
||||
".*test_.*" = "test";
|
||||
".*prd_.*" = "prd";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
enableAutosuggestions = true;
|
||||
enableCompletion = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
history.size = 1000000;
|
||||
|
||||
localVariables = {
|
||||
CASE_SENSITIVE = "true";
|
||||
DISABLE_UNTRACKED_FILES_DIRTY = "true";
|
||||
RPROMPT = ""; # override because macOS defaults to filepath
|
||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=#838383,underline";
|
||||
ZSH_DISABLE_COMPFIX = "true";
|
||||
};
|
||||
|
||||
envExtra = ''
|
||||
export PAGER=less
|
||||
export EDITOR=vim
|
||||
|
||||
export PATH=$PATH:~/.cargo/bin
|
||||
export PATH=$PATH:~/.local/bin
|
||||
export PATH=$PATH:~/.npm-packages/bin
|
||||
export PATH=$PATH:/opt/homebrew/bin
|
||||
export PATH=$PATH:~/.krew/bin
|
||||
export PATH=$PATH:~/bin
|
||||
export GOPATH=~/go
|
||||
export GOBIN=$GOPATH/bin
|
||||
export PATH=$PATH:$GOBIN
|
||||
|
||||
export WINEPREFIX=~/.wine32
|
||||
|
||||
# homebrew for x86
|
||||
export PATH=$PATH:/usr/local/homebrew/bin
|
||||
'';
|
||||
|
||||
initExtra = ''
|
||||
setopt noincappendhistory
|
||||
|
||||
source $HOME/.zsh-work
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]];
|
||||
then
|
||||
export PATH="$(brew --prefix)/opt/gnu-tar/libexec/gnubin:$PATH"
|
||||
alias xdg-open=open
|
||||
fi
|
||||
|
||||
source <(helm completion zsh)
|
||||
source <(kubectl completion zsh)
|
||||
eval "$(atuin init zsh)"
|
||||
|
||||
# kubecolor
|
||||
source <(kubectl completion zsh)
|
||||
alias kubectl=kubecolor
|
||||
# make completion work with kubecolor
|
||||
compdef kubecolor=kubectl
|
||||
|
||||
pfetch
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
".." = "cd ..";
|
||||
c = "code";
|
||||
g = "git";
|
||||
gc = "git checkout $(git branch | fzf)";
|
||||
gco = "git checkout $(git branch -r | sed -e 's/^ origin\\///' | fzf)";
|
||||
gho = "gh repo view --web >/dev/null";
|
||||
gr = "cd $(git rev-parse --show-toplevel)";
|
||||
grep = "rg --smart-case";
|
||||
j = "just";
|
||||
k = "kubecolor";
|
||||
kcx = "kubectx";
|
||||
kns = "kubens";
|
||||
l = "eza -la --git --group-directories-first";
|
||||
m = "make";
|
||||
nix-install = "nix-env -iA";
|
||||
ps = "procs";
|
||||
t = "tmux-sessionizer";
|
||||
tf = "terraform";
|
||||
tree = "eza --tree";
|
||||
v = "nvim";
|
||||
};
|
||||
|
||||
"oh-my-zsh" = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
window.padding.x = 10;
|
||||
window.padding.y = 10;
|
||||
scrolling.history = 100000;
|
||||
live_config_reload = true;
|
||||
mouse.hide_when_typing = false;
|
||||
|
||||
font =
|
||||
if stdenv.isLinux
|
||||
then {
|
||||
normal.family = "Fira Code";
|
||||
size = 12;
|
||||
}
|
||||
else {
|
||||
normal.family = "FiraCode Nerd Font";
|
||||
size = 16;
|
||||
};
|
||||
|
||||
shell = {
|
||||
program = "zsh";
|
||||
args = [ "-l" "-c" "tmux" "u" ];
|
||||
};
|
||||
|
||||
colors = {
|
||||
primary.background = "0x282828";
|
||||
primary.foreground = "0xebdbb2";
|
||||
|
||||
normal = {
|
||||
black = "0x282828";
|
||||
red = "0xcc241d";
|
||||
green = "0x98971a";
|
||||
yellow = "0xd79921";
|
||||
blue = "0x458588";
|
||||
magenta = "0xb16286";
|
||||
cyan = "0x689d6a";
|
||||
white = "0xa89984";
|
||||
};
|
||||
|
||||
bright = {
|
||||
black = "0x928374";
|
||||
red = "0xfb4934";
|
||||
green = "0xb8bb26";
|
||||
yellow = "0xfabd2f";
|
||||
blue = "0x83a598";
|
||||
magenta = "0xd3869b";
|
||||
cyan = "0x8ec07c";
|
||||
white = "0xebdbb2";
|
||||
};
|
||||
|
||||
key_bindings = [
|
||||
{
|
||||
key = "Home";
|
||||
mods = "Control";
|
||||
action = "ResetFontSize";
|
||||
}
|
||||
{
|
||||
key = "Plus";
|
||||
mods = "Control";
|
||||
action = "IncreaseFontSize";
|
||||
}
|
||||
{
|
||||
key = "Minus";
|
||||
mods = "Control";
|
||||
action = "DecreaseFontSize";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
go = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
tmux = {
|
||||
enable = true;
|
||||
clock24 = true;
|
||||
terminal = "xterm-256color";
|
||||
customPaneNavigationAndResize = true;
|
||||
plugins = with pkgs.tmuxPlugins; [
|
||||
{
|
||||
plugin = pain-control;
|
||||
extraConfig = "set -g @plugin 'tmux-plugins/tmux-pain-control'";
|
||||
}
|
||||
{
|
||||
plugin = sensible;
|
||||
extraConfig = "set -g @plugin 'tmux-plugins/tmux-sensible'";
|
||||
}
|
||||
{
|
||||
plugin = sessionist;
|
||||
extraConfig = "set -g @plugin 'tmux-plugins/tmux-sessionist'";
|
||||
}
|
||||
{
|
||||
plugin = yank;
|
||||
extraConfig = "set -g @plugin 'tmux-plugins/tmux-yank'";
|
||||
}
|
||||
{
|
||||
plugin = sensible;
|
||||
extraConfig = "set -g @plugin 'tmux-plugins/tmux-sensible'";
|
||||
}
|
||||
{
|
||||
plugin = tmux-colors-solarized;
|
||||
extraConfig = ''
|
||||
set -g @plugin 'seebi/tmux-colors-solarized'
|
||||
set -g @colors-solarized 'dark'
|
||||
'';
|
||||
}
|
||||
{
|
||||
plugin = resurrect;
|
||||
extraConfig = ''
|
||||
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||
'';
|
||||
}
|
||||
{
|
||||
plugin = continuum;
|
||||
extraConfig = ''
|
||||
set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||
set -g @continuum-restore 'on'
|
||||
'';
|
||||
}
|
||||
];
|
||||
extraConfig = ''
|
||||
set-window-option -g automatic-rename on
|
||||
set-option -g set-titles on
|
||||
|
||||
set -g mouse on
|
||||
|
||||
set -g status-left-length 30
|
||||
set -g status-right-length 150
|
||||
|
||||
set -g xterm-keys on
|
||||
|
||||
set -g pane-border-status top
|
||||
|
||||
set -g set-titles on
|
||||
set -g display-panes-time 800
|
||||
set -g display-time 2000
|
||||
|
||||
set -q -g utf8 on
|
||||
|
||||
set -g monitor-activity on
|
||||
set -g visual-activity off
|
||||
|
||||
set -g status-right '#(gitmux #{pane_current_path})'
|
||||
|
||||
'';
|
||||
};
|
||||
|
||||
rofi = {
|
||||
enable = stdenv.isLinux;
|
||||
plugins = [ pkgs.rofi-emoji ];
|
||||
terminal = "${pkgs.alacritty}/bin/alacritty";
|
||||
font = "Fira Font Mono 24";
|
||||
theme = "gruvbox-dark";
|
||||
extraConfig = {
|
||||
modi = "drun,run";
|
||||
show-icons = true;
|
||||
};
|
||||
};
|
||||
|
||||
fzf = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
nixvim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
colorschemes.gruvbox.enable = true;
|
||||
keymaps = [
|
||||
{
|
||||
key = "<C-n>";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>tabnew<cr>";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
key = "<leader>y";
|
||||
mode = [ "v" ];
|
||||
action = "\"+y"; # copy to OS clipboard
|
||||
}
|
||||
{
|
||||
key = "<leader>t";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>NvimTreeFindFileToggle<CR>";
|
||||
}
|
||||
{
|
||||
key = "gD";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.declaration()<CR>";
|
||||
}
|
||||
{
|
||||
key = "gd";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.definition()<CR>";
|
||||
}
|
||||
{
|
||||
key = "gr";
|
||||
mode = [ "n" ];
|
||||
action = "<cmd>lua vim.lsp.buf.references()<CR>";
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
auto-save.enable = true;
|
||||
copilot-vim.enable = true;
|
||||
cmp-path.enable = true;
|
||||
cmp-treesitter.enable = true;
|
||||
commentary.enable = true;
|
||||
diffview.enable = true;
|
||||
gitblame.enable = true;
|
||||
gitsigns.enable = true;
|
||||
gitlinker.enable = true;
|
||||
lualine.enable = true;
|
||||
lsp.enable = true;
|
||||
lsp.servers = {
|
||||
#ansiblels.enable = true;
|
||||
bashls.enable = true;
|
||||
#dockerls.enable = true;
|
||||
gopls.enable = true;
|
||||
#helm-ls.enable = true;
|
||||
jsonls.enable = true;
|
||||
pyright.enable = true;
|
||||
nixd.enable = true;
|
||||
terraformls.enable = true;
|
||||
yamlls.enable = true;
|
||||
};
|
||||
lsp-format = {
|
||||
enable = true;
|
||||
setup = {
|
||||
terraform = { };
|
||||
nix = { };
|
||||
go = { };
|
||||
};
|
||||
};
|
||||
nvim-cmp.enable = true;
|
||||
nvim-tree.enable = true;
|
||||
packer = {
|
||||
enable = true;
|
||||
plugins = [ ];
|
||||
};
|
||||
rainbow-delimiters.enable = true;
|
||||
treesitter.enable = true;
|
||||
telescope = {
|
||||
enable = true;
|
||||
defaults = {
|
||||
layout_strategy = "vertical";
|
||||
layout_config = {
|
||||
vertical = {
|
||||
width = 0.9;
|
||||
};
|
||||
};
|
||||
};
|
||||
package = pkgs.vimPlugins.telescope-fzy-native-nvim;
|
||||
keymaps = {
|
||||
"<leader>ff" = {
|
||||
action = "git_files";
|
||||
desc = "Telescope Git Files";
|
||||
};
|
||||
"<leader>fg" = "live_grep";
|
||||
};
|
||||
keymapsSilent = true;
|
||||
};
|
||||
};
|
||||
options = {
|
||||
autoindent = true;
|
||||
backup = false;
|
||||
belloff = "all";
|
||||
completeopt = [
|
||||
"menuone"
|
||||
"noselect"
|
||||
];
|
||||
cursorline = true;
|
||||
expandtab = true;
|
||||
fillchars = {
|
||||
diff = "∙";
|
||||
eob = " ";
|
||||
vert = "┃";
|
||||
};
|
||||
hlsearch = true;
|
||||
ignorecase = true;
|
||||
incsearch = true;
|
||||
modelines = 5;
|
||||
mouse = "a";
|
||||
number = true;
|
||||
pumblend = 10;
|
||||
scrolloff = 3;
|
||||
shell = "bash";
|
||||
shiftround = false;
|
||||
shiftwidth = 2;
|
||||
showbreak = "↳ ";
|
||||
showcmd = true;
|
||||
sidescroll = 0;
|
||||
sidescrolloff = 3;
|
||||
smartcase = true;
|
||||
smarttab = true;
|
||||
spellcapcheck = "";
|
||||
splitbelow = true;
|
||||
splitright = true;
|
||||
swapfile = false;
|
||||
switchbuf = "usetab";
|
||||
tabstop = 2;
|
||||
termguicolors = true;
|
||||
wildmenu = true;
|
||||
};
|
||||
|
||||
extraConfigLua = ''
|
||||
-- Format JSON
|
||||
vim.cmd([[command! JsonFormat execute "::%!jq '.'"]])
|
||||
|
||||
-- Remember line number
|
||||
vim.cmd([[au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif]])
|
||||
|
||||
-- Replace visual selection
|
||||
vim.cmd([[vnoremap <C-r> "hy:%s/<C-r>h//g<left><left>]])
|
||||
|
||||
-- Indent YAML
|
||||
vim.cmd([[au FileType yaml setlocal ts=2 sts=2 sw=2 expandtab]])
|
||||
|
||||
-- Indent Python
|
||||
vim.cmd([[au BufNewFile,BufRead *.py set tabstop=4 softtabstop=4 shiftwidth=4 textwidth=79 expandtab autoindent fileformat=unix]])
|
||||
|
||||
-- Highlight whitespace
|
||||
vim.cmd([[highlight ExtraWhitespace ctermbg=red guibg=red]])
|
||||
vim.cmd([[match ExtraWhitespace /\s\+$/]])
|
||||
|
||||
-- folding
|
||||
vim.api.nvim_exec(
|
||||
[[
|
||||
set foldmethod=expr
|
||||
set foldlevel=20
|
||||
set nofoldenable
|
||||
set foldexpr=nvim_treesitter#foldexpr()
|
||||
]],
|
||||
true
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscode;
|
||||
extensions = with pkgs.vscode-extensions;
|
||||
[
|
||||
bbenoist.nix
|
||||
github.vscode-pull-request-github
|
||||
golang.go
|
||||
hashicorp.terraform
|
||||
ms-dotnettools.csharp
|
||||
ms-kubernetes-tools.vscode-kubernetes-tools
|
||||
redhat.vscode-yaml
|
||||
]
|
||||
++ lib.optionals stdenv.isLinux [
|
||||
ms-vsliveshare.vsliveshare
|
||||
ms-python.python
|
||||
];
|
||||
};
|
||||
|
||||
firefox = {
|
||||
enable = stdenv.isLinux;
|
||||
|
||||
package = pkgs.firefox-devedition;
|
||||
|
||||
profiles = {
|
||||
default = {
|
||||
id = 0;
|
||||
isDefault = true;
|
||||
settings = {
|
||||
"privacy.resistFingerprinting" = false; # breaks timezone
|
||||
"dom.push.connection.enabled" = false;
|
||||
"dom.push.enabled" = false;
|
||||
"geo.enabled" = false;
|
||||
"intl.regional_prefs.use_os_locales" = true;
|
||||
"services.sync.prefs.sync.intl.regional._prefs.use_os_locates" = false;
|
||||
};
|
||||
name = "dev-edition-default";
|
||||
path = "6b7pm104.dev-edition-default";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,482 +0,0 @@
|
||||
{
|
||||
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
master,
|
||||
modulesPath,
|
||||
pkgs,
|
||||
unstable,
|
||||
vpngate,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
security.sudo-rs = {
|
||||
enable = true;
|
||||
execWheelOnly = true;
|
||||
wheelNeedsPassword = true;
|
||||
};
|
||||
|
||||
boot = {
|
||||
kernelModules = [
|
||||
"kvm-amd"
|
||||
];
|
||||
kernelPackages = pkgs.linuxPackages;
|
||||
kernelParams = [
|
||||
"amd_iommu=on"
|
||||
];
|
||||
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
efi.efiSysMountPoint = "/boot/efi";
|
||||
grub = {
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
efiSupport = true;
|
||||
enableCryptodisk = true;
|
||||
};
|
||||
};
|
||||
|
||||
supportedFilesystems = [
|
||||
"ntfs"
|
||||
];
|
||||
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"ahci"
|
||||
"nvme"
|
||||
"sd_mod"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"xhci_pci"
|
||||
];
|
||||
luks.devices."root" = {
|
||||
allowDiscards = true;
|
||||
device = "/dev/disk/by-uuid/89a14ac5-7723-4a0a-bb95-fb2fb2e92160";
|
||||
preLVM = true;
|
||||
keyFile = "./keyfile0.bin";
|
||||
};
|
||||
secrets = {
|
||||
"keyfile0.bin" = "/etc/secrets/initrd/keyfile0.bin";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages =
|
||||
with pkgs;
|
||||
[
|
||||
bleachbit
|
||||
calibre
|
||||
clamtk
|
||||
cryptsetup
|
||||
dbeaver-bin
|
||||
discord
|
||||
freefilesync
|
||||
gimp-with-plugins
|
||||
google-chrome
|
||||
hardinfo2
|
||||
httpie-desktop
|
||||
heroic
|
||||
iputils
|
||||
kdePackages.bluedevil
|
||||
kdePackages.kcalc
|
||||
kdePackages.kcharselect
|
||||
kdePackages.kclock
|
||||
kdePackages.kcolorchooser
|
||||
kdePackages.ksystemlog
|
||||
kdePackages.partitionmanager
|
||||
kdePackages.sddm-kcm
|
||||
libation
|
||||
lutris
|
||||
mupen64plus
|
||||
nfs-utils
|
||||
onlyoffice-desktopeditors
|
||||
opensnitch-ui
|
||||
pciutils
|
||||
pika-backup
|
||||
pinentry-curses
|
||||
pinta
|
||||
protonup-qt
|
||||
qbittorrent
|
||||
qemu
|
||||
traceroute
|
||||
unrar
|
||||
unstable.beszel
|
||||
unstable.ktailctl
|
||||
unstable.mcpelauncher-ui-qt
|
||||
unstable.obsidian
|
||||
unstable.podman
|
||||
unstable.podman-compose
|
||||
unstable.podman-desktop
|
||||
unstable.ryubing
|
||||
unstable.signal-desktop-bin
|
||||
unstable.tailscale
|
||||
unstable.zoom-us
|
||||
usbutils
|
||||
virt-manager
|
||||
vlc
|
||||
vpngate.packages.x86_64-linux.default
|
||||
wayland-utils
|
||||
whois
|
||||
wine
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/7f4f0948-041c-47e9-ab28-53132026f158";
|
||||
fsType = "ext4";
|
||||
};
|
||||
"/boot/efi" = {
|
||||
device = "/dev/disk/by-uuid/F1BD-5227";
|
||||
fsType = "vfat";
|
||||
};
|
||||
"/mnt/synology-2b/media" = {
|
||||
device = "192.168.1.178:/volume1/Media";
|
||||
fsType = "nfs";
|
||||
};
|
||||
"/mnt/truenas/home/backups" = {
|
||||
device = "192.168.1.132:/mnt/wd4t/data/home/backup/";
|
||||
fsType = "nfs";
|
||||
};
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
dejavu_fonts
|
||||
fira-mono
|
||||
font-awesome
|
||||
liberation_ttf
|
||||
nerd-fonts.droid-sans-mono
|
||||
nerd-fonts.fira-code
|
||||
nerd-fonts.symbols-only
|
||||
nerd-fonts.ubuntu
|
||||
nerd-fonts.ubuntu-mono
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-color-emoji
|
||||
noto-fonts
|
||||
];
|
||||
|
||||
fonts.fontconfig.defaultFonts = {
|
||||
sansSerif = [ "Noto Sans" ];
|
||||
serif = [ "Noto Serif" ];
|
||||
monospace = [ "Noto Sans Mono" ];
|
||||
emoji = [ "Noto Color Emoji" ];
|
||||
};
|
||||
|
||||
nixpkgs = {
|
||||
hostPlatform = "x86_64-linux";
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
};
|
||||
|
||||
networking = {
|
||||
iproute2.enable = true;
|
||||
hostName = "hephaestus";
|
||||
hostId = "0e8aad53";
|
||||
interfaces."enp34s0" = {
|
||||
useDHCP = true;
|
||||
wakeOnLan = {
|
||||
enable = true;
|
||||
policy = [ "magic" ];
|
||||
};
|
||||
};
|
||||
firewall = {
|
||||
allowPing = false;
|
||||
enable = true;
|
||||
checkReversePath = "loose";
|
||||
trustedInterfaces = [ "tailscale0" ];
|
||||
};
|
||||
};
|
||||
|
||||
users.users.beszel = {
|
||||
isSystemUser = true;
|
||||
group = "beszel";
|
||||
description = "Beszel Agent service user";
|
||||
};
|
||||
users.groups.beszel = { };
|
||||
|
||||
systemd.services = {
|
||||
NetworkManager-wait-online.enable = false;
|
||||
|
||||
beszel-agent = {
|
||||
description = "Beszel Agent Service";
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Environment = [
|
||||
"PORT=45876"
|
||||
''KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEaNtnkc+3+fJU+bTO6fibID9FHgFjei0sjJNqvcYtG8"''
|
||||
];
|
||||
ExecStart = "${lib.getBin unstable.beszel}/bin/beszel-agent";
|
||||
User = "beszel";
|
||||
Restart = "always";
|
||||
RestartSec = 5;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
mullvad-vpn = {
|
||||
enable = true;
|
||||
package = pkgs.mullvad-vpn;
|
||||
};
|
||||
};
|
||||
|
||||
system = {
|
||||
autoUpgrade.enable = true;
|
||||
stateVersion = "25.11";
|
||||
activationScripts = {
|
||||
diff = {
|
||||
supportsDryActivation = true;
|
||||
text = ''
|
||||
if [[ -e /run/current-system ]]; then
|
||||
echo -e "\e[36mPackage version diffs:\e[0m"
|
||||
${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nix = {
|
||||
extraOptions = "experimental-features = nix-command flakes";
|
||||
settings.trusted-users = [ "root" "@wheel" ];
|
||||
};
|
||||
|
||||
users.users.dave = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"libvirtd"
|
||||
];
|
||||
shell = pkgs.fish;
|
||||
};
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
i18n.inputMethod = {
|
||||
enable = true;
|
||||
type = "ibus";
|
||||
ibus.engines = with pkgs.ibus-engines; [ anthy ];
|
||||
};
|
||||
|
||||
time.timeZone = "America/Toronto";
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
|
||||
documentation.man.generateCaches = false;
|
||||
|
||||
programs = {
|
||||
fish.enable = true;
|
||||
gnupg.agent = {
|
||||
enable = true;
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
kdeconnect.enable = true;
|
||||
nix-ld.enable = true;
|
||||
steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
publish = {
|
||||
enable = true;
|
||||
addresses = true;
|
||||
domain = true;
|
||||
hinfo = true;
|
||||
userServices = true;
|
||||
workstation = true;
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
desktopManager.plasma6.enable = true;
|
||||
displayManager.sddm.enable = true;
|
||||
displayManager.sddm.wayland.enable = true;
|
||||
};
|
||||
|
||||
services.printing.enable = true;
|
||||
|
||||
services.resolved.enable = true;
|
||||
|
||||
services.sshd.enable = true;
|
||||
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
package = unstable.tailscale;
|
||||
};
|
||||
|
||||
services.clamav.daemon.enable = true;
|
||||
services.clamav.updater.enable = true;
|
||||
|
||||
services.opensnitch = {
|
||||
enable = true;
|
||||
rules = {
|
||||
avahi-ipv4 = {
|
||||
name = "Allow avahi daemon IPv4";
|
||||
enabled = true;
|
||||
action = "allow";
|
||||
duration = "always";
|
||||
operator = {
|
||||
type = "list";
|
||||
operand = "list";
|
||||
list = [
|
||||
{
|
||||
type = "simple";
|
||||
operand = "process.path";
|
||||
sensitive = false;
|
||||
data = "${lib.getBin pkgs.avahi}/bin/avahi-daemon";
|
||||
}
|
||||
{
|
||||
type = "network";
|
||||
operand = "dest.network";
|
||||
data = "224.0.0.0/24";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
systemd-timesyncd = {
|
||||
name = "systemd-timesyncd";
|
||||
enabled = true;
|
||||
action = "allow";
|
||||
duration = "always";
|
||||
operator = {
|
||||
type = "simple";
|
||||
sensitive = false;
|
||||
operand = "process.path";
|
||||
data = "${lib.getBin pkgs.systemd}/lib/systemd/systemd-timesyncd";
|
||||
};
|
||||
};
|
||||
systemd-resolved = {
|
||||
name = "systemd-resolved";
|
||||
enabled = true;
|
||||
action = "allow";
|
||||
duration = "always";
|
||||
operator = {
|
||||
type = "simple";
|
||||
sensitive = false;
|
||||
operand = "process.path";
|
||||
data = "${lib.getBin pkgs.systemd}/lib/systemd/systemd-resolved";
|
||||
};
|
||||
};
|
||||
localhost = {
|
||||
name = "Allow all localhost";
|
||||
enabled = true;
|
||||
action = "allow";
|
||||
duration = "always";
|
||||
operator = {
|
||||
type = "regexp";
|
||||
operand = "dest.ip";
|
||||
sensitive = false;
|
||||
data = "^(127\\.0\\.0\\.1|::1)$";
|
||||
list = [ ];
|
||||
};
|
||||
};
|
||||
nix-update = {
|
||||
name = "Allow Nix";
|
||||
enabled = true;
|
||||
action = "allow";
|
||||
duration = "always";
|
||||
operator = {
|
||||
type = "list";
|
||||
operand = "list";
|
||||
list = [
|
||||
{
|
||||
type = "simple";
|
||||
sensitive = false;
|
||||
operand = "process.path";
|
||||
data = "${lib.getBin pkgs.nix}/bin/nix";
|
||||
}
|
||||
{
|
||||
type = "regexp";
|
||||
operand = "dest.host";
|
||||
sensitive = false;
|
||||
data = "^(([a-z0-9|-]+\\.)*github\\.com|([a-z0-9|-]+\\.)*nixos\\.org)$";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
NetworkManager = {
|
||||
name = "Allow NetworkManager";
|
||||
enabled = true;
|
||||
action = "allow";
|
||||
duration = "always";
|
||||
operator = {
|
||||
type = "list";
|
||||
operand = "list";
|
||||
list = [
|
||||
{
|
||||
type = "simple";
|
||||
sensitive = false;
|
||||
operand = "process.path";
|
||||
data = "${lib.getBin pkgs.networkmanager}/bin/NetworkManager";
|
||||
}
|
||||
{
|
||||
type = "simple";
|
||||
operand = "dest.port";
|
||||
sensitive = false;
|
||||
data = "67";
|
||||
}
|
||||
{
|
||||
type = "simple";
|
||||
operand = "protocol";
|
||||
sensitive = false;
|
||||
data = "udp";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
ssh-github = {
|
||||
name = "Allow SSH to github";
|
||||
enabled = true;
|
||||
action = "allow";
|
||||
duration = "always";
|
||||
operator = {
|
||||
type = "list";
|
||||
operand = "list";
|
||||
list = [
|
||||
{
|
||||
type = "simple";
|
||||
sensitive = false;
|
||||
operand = "process.path";
|
||||
data = "${lib.getBin pkgs.openssh}/bin/ssh";
|
||||
}
|
||||
{
|
||||
type = "simple";
|
||||
operand = "dest.host";
|
||||
sensitive = false;
|
||||
data = "github.com";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation = {
|
||||
podman.enable = true;
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu.swtpm.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
130
hosts/zelus.nix
130
hosts/zelus.nix
@@ -1,130 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
};
|
||||
|
||||
networking = {
|
||||
hostName = "zelus";
|
||||
};
|
||||
|
||||
nix.enable = false;
|
||||
|
||||
system.stateVersion = 4;
|
||||
|
||||
users.users."dave.gallant".home = "/Users/dave.gallant";
|
||||
users.users."dave.gallant".shell = pkgs.fish;
|
||||
|
||||
programs.fish.enable = true;
|
||||
|
||||
system.primaryUser = "dave.gallant";
|
||||
|
||||
system.defaults = {
|
||||
|
||||
trackpad = {
|
||||
ActuationStrength = 0;
|
||||
Clicking = true;
|
||||
FirstClickThreshold = 1;
|
||||
SecondClickThreshold = 1;
|
||||
TrackpadRightClick = true;
|
||||
};
|
||||
|
||||
dock = {
|
||||
autohide = true;
|
||||
tilesize = 50;
|
||||
orientation = "bottom";
|
||||
persistent-apps = [
|
||||
"/Applications/iTerm.app"
|
||||
"/Applications/Google Chrome.app"
|
||||
"/Applications/LibreWolf.app"
|
||||
"/Applications/Obsidian.app"
|
||||
"/Applications/Slack.app"
|
||||
"/Applications/zoom.us.app"
|
||||
];
|
||||
};
|
||||
|
||||
NSGlobalDomain.AppleShowAllExtensions = true;
|
||||
NSGlobalDomain.AppleShowScrollBars = "Always";
|
||||
NSGlobalDomain.NSUseAnimatedFocusRing = false;
|
||||
NSGlobalDomain.NSNavPanelExpandedStateForSaveMode = true;
|
||||
NSGlobalDomain.NSNavPanelExpandedStateForSaveMode2 = true;
|
||||
NSGlobalDomain.PMPrintingExpandedStateForPrint = true;
|
||||
NSGlobalDomain.PMPrintingExpandedStateForPrint2 = true;
|
||||
NSGlobalDomain.NSDocumentSaveNewDocumentsToCloud = false;
|
||||
NSGlobalDomain.ApplePressAndHoldEnabled = false;
|
||||
NSGlobalDomain.InitialKeyRepeat = 25;
|
||||
NSGlobalDomain.KeyRepeat = 2;
|
||||
NSGlobalDomain."com.apple.mouse.tapBehavior" = 1;
|
||||
NSGlobalDomain.NSWindowShouldDragOnGesture = true;
|
||||
NSGlobalDomain.NSAutomaticSpellingCorrectionEnabled = false;
|
||||
LaunchServices.LSQuarantine = false; # disables "Are you sure?" for new apps
|
||||
loginwindow.GuestEnabled = false;
|
||||
finder.FXPreferredViewStyle = "Nlsv";
|
||||
};
|
||||
|
||||
security.pam.services.sudo_local.touchIdAuth = true;
|
||||
|
||||
homebrew = {
|
||||
enable = true;
|
||||
onActivation = {
|
||||
cleanup = "zap";
|
||||
autoUpdate = true;
|
||||
upgrade = true;
|
||||
};
|
||||
global = {
|
||||
brewfile = true;
|
||||
};
|
||||
|
||||
brews = [
|
||||
"argocd"
|
||||
"azure-cli"
|
||||
"coreutils"
|
||||
"gnu-sed"
|
||||
"gnu-tar"
|
||||
"k6"
|
||||
"node"
|
||||
"oras"
|
||||
"vault"
|
||||
];
|
||||
|
||||
casks = [
|
||||
"claude-code"
|
||||
"discord"
|
||||
"dbeaver-community"
|
||||
"font-fira-code-nerd-font"
|
||||
"font-hack-nerd-font"
|
||||
"fork"
|
||||
"freelens"
|
||||
"iterm2"
|
||||
"karabiner-elements"
|
||||
"knockknock"
|
||||
"librewolf"
|
||||
"lulu"
|
||||
"notunes"
|
||||
"obsidian"
|
||||
"raycast"
|
||||
"rectangle"
|
||||
"signal"
|
||||
"slack"
|
||||
"spotify"
|
||||
"stats"
|
||||
"steam"
|
||||
"taskexplorer"
|
||||
"tailscale-app"
|
||||
"vlc"
|
||||
"whisky"
|
||||
"zed"
|
||||
];
|
||||
|
||||
taps = [
|
||||
"hashicorp/tap"
|
||||
"homebrew/bundle"
|
||||
"homebrew/cask-fonts"
|
||||
"homebrew/cask-versions"
|
||||
"homebrew/services"
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
21
justfile
21
justfile
@@ -1,30 +1,21 @@
|
||||
set export
|
||||
|
||||
alias u := update
|
||||
alias r := rebuild
|
||||
|
||||
config := "machines/$(hostname)/configuration.nix"
|
||||
arch := `uname -s`
|
||||
|
||||
cmd := if arch == "Linux" { "nixos-rebuild --sudo" } else { "sudo darwin-rebuild" }
|
||||
cmd := if arch == "Linux" { "nixos-rebuild --use-remote-sudo" } else { "darwin-rebuild" }
|
||||
|
||||
rebuild:
|
||||
$cmd switch --flake .
|
||||
|
||||
rebuild-boot:
|
||||
$cmd boot --flake . --install-bootloader
|
||||
$cmd switch --flake . -I nixos-config=$config
|
||||
|
||||
rollback:
|
||||
sudo $cmd switch --rollback --flake .
|
||||
|
||||
channel-update:
|
||||
nix-channel --update
|
||||
sudo nix-channel --update
|
||||
$cmd switch --rollback -I nixos-config=$config
|
||||
|
||||
update:
|
||||
@./update-flake.sh
|
||||
@./nix-flake-update.sh
|
||||
|
||||
fmt:
|
||||
nixfmt *.nix
|
||||
nixpkgs-fmt .
|
||||
|
||||
clean:
|
||||
echo 'Cleaning user...'
|
||||
|
||||
264
machines/hephaestus/configuration.nix
Normal file
264
machines/hephaestus/configuration.nix
Normal file
@@ -0,0 +1,264 @@
|
||||
{ config
|
||||
, lib
|
||||
, modulesPath
|
||||
, pkgs
|
||||
, unstable
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
gnomeExtensions = with pkgs.gnomeExtensions; [
|
||||
appindicator
|
||||
bluetooth-quick-connect
|
||||
blur-my-shell
|
||||
caffeine
|
||||
clipboard-indicator
|
||||
dash-to-dock
|
||||
grand-theft-focus
|
||||
notification-banner-reloaded
|
||||
quick-settings-tweaker
|
||||
tailscale-status
|
||||
tray-icons-reloaded
|
||||
];
|
||||
in
|
||||
{
|
||||
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot = {
|
||||
extraModulePackages = with config.boot.kernelPackages; [
|
||||
xpadneo
|
||||
];
|
||||
kernelModules = [ "kvm-amd" ];
|
||||
kernelPackages = pkgs.linuxPackages;
|
||||
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
efi.efiSysMountPoint = "/boot/efi";
|
||||
grub = {
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
efiSupport = true;
|
||||
enableCryptodisk = true;
|
||||
};
|
||||
};
|
||||
|
||||
supportedFilesystems = [ "ntfs" ];
|
||||
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"ahci"
|
||||
"nvme"
|
||||
"sd_mod"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"xhci_pci"
|
||||
];
|
||||
luks.devices."root" = {
|
||||
allowDiscards = true;
|
||||
device = "/dev/disk/by-uuid/21cd166c-1528-49a4-b31b-0d408d48aa80";
|
||||
preLVM = true;
|
||||
keyFile = "./keyfile0.bin";
|
||||
};
|
||||
secrets = {
|
||||
"keyfile0.bin" = "/etc/secrets/initrd/keyfile0.bin";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
keyMap = "us";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs;
|
||||
[
|
||||
android-tools
|
||||
bitwarden
|
||||
cryptsetup
|
||||
deja-dup
|
||||
discord
|
||||
docker
|
||||
docker-compose
|
||||
foliate
|
||||
ghostscript
|
||||
gimp-with-plugins
|
||||
glibcLocales
|
||||
gnome.gnome-tweaks
|
||||
iputils
|
||||
kazam
|
||||
legendary-gl
|
||||
lm_sensors
|
||||
mullvad-vpn
|
||||
netdata
|
||||
nfs-utils
|
||||
pavucontrol
|
||||
pinentry-curses
|
||||
podman
|
||||
psst
|
||||
qemu
|
||||
sbx-h6-rgb
|
||||
strace
|
||||
tailscale
|
||||
traceroute
|
||||
ungoogled-chromium
|
||||
unstable.burpsuite
|
||||
unstable.logseq
|
||||
unstable.obsidian
|
||||
unstable.ryujinx
|
||||
unstable.signal-desktop
|
||||
usbutils
|
||||
virt-manager
|
||||
vlc
|
||||
whois
|
||||
wine
|
||||
wine64
|
||||
wireshark-qt
|
||||
zoom-us
|
||||
]
|
||||
++ gnomeExtensions;
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/a6723178-6f18-428e-b541-9ac901861125";
|
||||
fsType = "ext4";
|
||||
};
|
||||
"/home" = {
|
||||
device = "/dev/disk/by-uuid/e3ab2e1a-bddf-4ae0-b00a-bf954c6c182b";
|
||||
fsType = "ext4";
|
||||
};
|
||||
"/boot/efi" = {
|
||||
device = "/dev/disk/by-uuid/3CFD-D749";
|
||||
fsType = "vfat";
|
||||
};
|
||||
"/mnt/synology-2b/media" = {
|
||||
device = "192.168.1.178:/volume1/Media";
|
||||
fsType = "nfs";
|
||||
};
|
||||
"/mnt/synology-2b/backups" = {
|
||||
device = "192.168.1.178:/volume1/Backups";
|
||||
fsType = "nfs";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{ device = "/dev/disk/by-uuid/5d6d0388-2b15-4ff1-9f0f-391818a76090"; }
|
||||
];
|
||||
|
||||
nixpkgs = {
|
||||
hostPlatform = "x86_64-linux";
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
"nix-2.16.2"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
networking = {
|
||||
iproute2.enable = true;
|
||||
hostName = "hephaestus";
|
||||
interfaces.enp34s0 = {
|
||||
useDHCP = true;
|
||||
};
|
||||
firewall = {
|
||||
allowPing = false;
|
||||
enable = true;
|
||||
checkReversePath = "loose";
|
||||
trustedInterfaces = [ "tailscale0" ];
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services = {
|
||||
NetworkManager-wait-online.enable = false;
|
||||
};
|
||||
|
||||
system = {
|
||||
autoUpgrade.enable = true;
|
||||
stateVersion = "23.11";
|
||||
};
|
||||
|
||||
nix = {
|
||||
extraOptions = "experimental-features = nix-command flakes";
|
||||
package = pkgs.nixUnstable;
|
||||
};
|
||||
|
||||
users.users.dave = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "docker" "wheel" "libvirtd" "corectrl" ];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
time.timeZone = "America/Toronto";
|
||||
|
||||
hardware = {
|
||||
opengl.enable = true;
|
||||
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
pulseaudio.enable = true;
|
||||
# Vulkan
|
||||
opengl.driSupport = true;
|
||||
opengl.driSupport32Bit = true;
|
||||
# Steam
|
||||
opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ libva ];
|
||||
pulseaudio.support32Bit = true;
|
||||
};
|
||||
|
||||
programs = {
|
||||
corectrl.enable = true;
|
||||
gnupg.agent = {
|
||||
enable = true;
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
};
|
||||
zsh.enable = true;
|
||||
};
|
||||
|
||||
services = {
|
||||
avahi = {
|
||||
enable = true;
|
||||
nssmdns = true;
|
||||
publish = {
|
||||
enable = true;
|
||||
addresses = true;
|
||||
domain = true;
|
||||
hinfo = true;
|
||||
userServices = true;
|
||||
workstation = true;
|
||||
};
|
||||
};
|
||||
gnome.gnome-keyring.enable = true;
|
||||
mullvad-vpn.enable = false;
|
||||
printing.enable = true;
|
||||
resolved.enable = true;
|
||||
sshd.enable = true;
|
||||
tailscale.enable = true;
|
||||
udev.extraRules = ''
|
||||
ACTION=="add", ATTR{idVendor}=="041e", ATTR{idProduct}=="3255", RUN+="${pkgs.sbx-h6-rgb}/bin/sbx-h6-ctl -c c010ff 041e:3255"
|
||||
'';
|
||||
xserver = {
|
||||
enable = true;
|
||||
displayManager = {
|
||||
gdm = {
|
||||
enable = true;
|
||||
wayland = false;
|
||||
};
|
||||
};
|
||||
desktopManager = {
|
||||
gnome = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
videoDrivers = [ "amdgpu" ];
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation = {
|
||||
docker.enable = true;
|
||||
libvirtd.enable = true;
|
||||
podman.enable = true;
|
||||
};
|
||||
}
|
||||
114
machines/zelus/configuration.nix
Normal file
114
machines/zelus/configuration.nix
Normal file
@@ -0,0 +1,114 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
checkBrew = "command -v brew > /dev/null";
|
||||
in
|
||||
{
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
"nix-2.16.2"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
networking = { hostName = "zelus"; };
|
||||
|
||||
services.nix-daemon.enable = true;
|
||||
|
||||
nix.extraOptions = "experimental-features = nix-command flakes";
|
||||
nix.package = pkgs.nixVersions.stable;
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
# https://github.com/nix-community/home-manager/issues/108#issuecomment-340397178
|
||||
enableCompletion = false;
|
||||
};
|
||||
|
||||
system.stateVersion = 4;
|
||||
users.users."dave.gallant".home = "/Users/dave.gallant";
|
||||
|
||||
environment = {
|
||||
extraInit = ''
|
||||
${checkBrew} || >&2 echo "brew is not installed (install it via https://brew.sh)"
|
||||
'';
|
||||
variables = { LANG = "en_US.UTF-8"; };
|
||||
};
|
||||
|
||||
system.defaults = {
|
||||
|
||||
trackpad = {
|
||||
ActuationStrength = 0;
|
||||
Clicking = true;
|
||||
FirstClickThreshold = 1;
|
||||
SecondClickThreshold = 1;
|
||||
TrackpadRightClick = true;
|
||||
};
|
||||
|
||||
dock = {
|
||||
autohide = true;
|
||||
autohide-delay = 0.0;
|
||||
autohide-time-modifier = 1.0;
|
||||
tilesize = 50;
|
||||
static-only = false;
|
||||
showhidden = false;
|
||||
show-recents = false;
|
||||
show-process-indicators = true;
|
||||
orientation = "bottom";
|
||||
mru-spaces = false;
|
||||
};
|
||||
|
||||
NSGlobalDomain = {
|
||||
"com.apple.sound.beep.feedback" = 0;
|
||||
"com.apple.sound.beep.volume" = 0.000;
|
||||
ApplePressAndHoldEnabled = false;
|
||||
InitialKeyRepeat = 10;
|
||||
KeyRepeat = 2;
|
||||
AppleShowAllExtensions = true;
|
||||
AppleShowScrollBars = "Automatic";
|
||||
};
|
||||
};
|
||||
|
||||
homebrew = {
|
||||
enable = true;
|
||||
onActivation.autoUpdate = false;
|
||||
onActivation.upgrade = false;
|
||||
global = {
|
||||
brewfile = true;
|
||||
};
|
||||
|
||||
brews = [
|
||||
"coreutils"
|
||||
"gnu-sed"
|
||||
"gnu-tar"
|
||||
"netdata"
|
||||
"node"
|
||||
"podman"
|
||||
"podman-compose"
|
||||
];
|
||||
|
||||
casks = [
|
||||
"dbeaver-community"
|
||||
"font-fira-code-nerd-font"
|
||||
"font-hack-nerd-font"
|
||||
"karabiner-elements"
|
||||
"logseq"
|
||||
"lulu"
|
||||
"notunes"
|
||||
"obsidian"
|
||||
"postman"
|
||||
"raycast"
|
||||
"rectangle"
|
||||
"stats"
|
||||
"warp"
|
||||
];
|
||||
|
||||
taps = [
|
||||
"homebrew/bundle"
|
||||
"homebrew/cask-fonts"
|
||||
"homebrew/cask-versions"
|
||||
"homebrew/services"
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
@@ -2,20 +2,10 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if ! git diff-index --quiet HEAD --; then
|
||||
git stash push -m "Auto-stash via update-flash.sh on $(date)"
|
||||
fi
|
||||
|
||||
git pull
|
||||
update_msg=$(nix flake update 2>&1 | grep -v 'warning:')
|
||||
just rebuild
|
||||
just build
|
||||
git add .
|
||||
|
||||
read -p "Commit and push changes? [yN]? " -r
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git commit -S -m "nix flake update: $(TZ=UTC date '+%Y-%m-%d %H:%M:%S %Z')
|
||||
|
||||
$update_msg"
|
||||
@@ -1,17 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
readarray -t directories < ~/.config/cd-fzf
|
||||
|
||||
if [[ $# -eq 1 ]]; then
|
||||
selected=$1
|
||||
else
|
||||
selected=$(find "${directories[@]}" -mindepth 1 -maxdepth 1 -type d | fzf --exact)
|
||||
fi
|
||||
if [[ -z $selected ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cd "$selected"
|
||||
$SHELL
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchurl,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cd-fzf";
|
||||
version = "0.0.1";
|
||||
executable = ./cd-fzf;
|
||||
phases = [ "unpackPhase" ]; # Remove all other phases
|
||||
unpackPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp ${executable} $out/bin/cd-fzf
|
||||
'';
|
||||
meta = with lib; {
|
||||
description = "\n Fuzzy find change directory";
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
final: prev: {
|
||||
cd-fzf = prev.callPackage ./cd-fzf { };
|
||||
sbx-h6-rgb = prev.callPackage ./sbx-h6-rgb { };
|
||||
tmux-sessionizer = prev.callPackage ./tmux-sessionizer { };
|
||||
vpngate = prev.callPackage ./vpngate { };
|
||||
}
|
||||
|
||||
38
overlays/sbx-h6-rgb/default.nix
Normal file
38
overlays/sbx-h6-rgb/default.nix
Normal file
@@ -0,0 +1,38 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, pkgs
|
||||
, stdenv
|
||||
,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sbx-h6-rgb";
|
||||
version = "95b4ef9788ef94e557a4d1e815079d5ea8a70943";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Oscillope";
|
||||
repo = "sbx-h6-rgb";
|
||||
rev = version;
|
||||
sha256 = "sha256-tKKNdzijloBiGBHf5C604824B/BbxBxvCL/ms4orT9M=";
|
||||
};
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
hidapi
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
make
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
install -D sbx-h6-ctl $out/bin/sbx-h6-ctl
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Creative SoundBlasterX RGB LED setter.";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ davegallant ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
24
overlays/tmux-sessionizer/default.nix
Normal file
24
overlays/tmux-sessionizer/default.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
,
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tmux-sessionizer";
|
||||
version = "0.0.0";
|
||||
|
||||
executable = ./tmux-sessionizer;
|
||||
|
||||
phases = [ "unpackPhase" ]; # Remove all other phases
|
||||
|
||||
unpackPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp ${executable} $out/bin/tmux-sessionizer
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "
|
||||
Tmux sessionizer adapted from https://sourcegraph.com/github.com/ThePrimeagen/.dotfiles@5cd09f06d6683b91c26822a73b40e3d7fb9af57a/-/blob/bin/.local/bin/tmux-sessionizer";
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
31
overlays/tmux-sessionizer/tmux-sessionizer
Executable file
31
overlays/tmux-sessionizer/tmux-sessionizer
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Credit to ThePrimeagen for this:
|
||||
# https://sourcegraph.com/github.com/ThePrimeagen/.dotfiles@5cd09f06d6683b91c26822a73b40e3d7fb9af57a/-/blob/bin/.local/bin/tmux-sessionizer
|
||||
|
||||
|
||||
readarray -t directories < ~/.config/tmux-sessionizer
|
||||
|
||||
if [[ $# -eq 1 ]]; then
|
||||
selected=$1
|
||||
else
|
||||
selected=$(find "${directories[@]}" -mindepth 1 -maxdepth 1 -type d | fzf --exact)
|
||||
fi
|
||||
|
||||
if [[ -z $selected ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
selected_name=$(basename "$selected" | tr . _)
|
||||
tmux_running=$(pgrep tmux)
|
||||
|
||||
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
|
||||
tmux new-session -s "$selected_name" -c "$selected"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! tmux has-session -t "$selected_name" 2> /dev/null; then
|
||||
tmux new-session -ds "$selected_name" -c "$selected"
|
||||
fi
|
||||
|
||||
tmux switch-client -t "$selected_name"
|
||||
28
overlays/vpngate/default.nix
Normal file
28
overlays/vpngate/default.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, buildGoModule
|
||||
,
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "vpngate";
|
||||
version = "v0.1.5";
|
||||
|
||||
vendorHash = "sha256-TQLHvoVAMvDtm/9EQUaNVVjQajyMBnJu8NF6Kt0+RJ8=";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "davegallant";
|
||||
repo = "vpngate";
|
||||
rev = version;
|
||||
sha256 = "sha256-+KZ6/h8JLEisnIja4lstJYVHzEC/8PdHL3czK/mJCAs=";
|
||||
};
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.vpngate.net";
|
||||
description = "a client for vpngate.net";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ davegallant ];
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
pkgs,
|
||||
unstable,
|
||||
...
|
||||
{ config
|
||||
, lib
|
||||
, pkgs
|
||||
, unstable
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) stdenv;
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
# essentials
|
||||
@@ -16,47 +20,54 @@
|
||||
zip
|
||||
|
||||
# modern cli
|
||||
atuin
|
||||
bat
|
||||
cd-fzf
|
||||
doggo
|
||||
eza
|
||||
fd
|
||||
github-cli
|
||||
hadolint
|
||||
lazygit
|
||||
macchina
|
||||
ncdu
|
||||
nodePackages.eslint
|
||||
oha
|
||||
pre-commit
|
||||
progress
|
||||
ripgrep
|
||||
shellcheck
|
||||
shfmt
|
||||
starship
|
||||
tldr
|
||||
tmux-sessionizer
|
||||
unstable.atuin
|
||||
unstable.github-cli
|
||||
viddy
|
||||
yq-go
|
||||
|
||||
# containers
|
||||
unstable.argocd
|
||||
unstable.k9s
|
||||
unstable.krew
|
||||
unstable.kubecolor
|
||||
unstable.kubectl
|
||||
unstable.kubectx
|
||||
krew
|
||||
kubecolor
|
||||
kubectl
|
||||
kubectx
|
||||
minikube
|
||||
stern
|
||||
unstable.helm-docs
|
||||
unstable.kubernetes-helm
|
||||
unstable.stern
|
||||
unstable.k9s
|
||||
unstable.skaffold
|
||||
|
||||
# cloud
|
||||
awscli2
|
||||
google-cloud-sdk
|
||||
terraform
|
||||
aws-vault
|
||||
unstable.awscli2
|
||||
unstable.azure-cli
|
||||
unstable.google-cloud-sdk
|
||||
unstable.terraform
|
||||
|
||||
# lsp
|
||||
nodePackages.bash-language-server
|
||||
nodePackages.eslint
|
||||
nodePackages.pyright
|
||||
nodePackages.yaml-language-server
|
||||
terraform-ls
|
||||
|
||||
# monitoring
|
||||
btop
|
||||
htop
|
||||
procs
|
||||
|
||||
# golang
|
||||
gofumpt
|
||||
@@ -79,17 +90,20 @@
|
||||
openssl
|
||||
openvpn
|
||||
tcpdump
|
||||
vpngate
|
||||
|
||||
# rice
|
||||
neofetch
|
||||
pfetch
|
||||
|
||||
# nix
|
||||
nix-tree
|
||||
nixfmt-rfc-style
|
||||
nixpkgs-fmt
|
||||
nixpkgs-review
|
||||
nvd
|
||||
|
||||
# python
|
||||
poetry
|
||||
python313
|
||||
virtualenv
|
||||
|
||||
# media
|
||||
yt-dlp
|
||||
];
|
||||
}
|
||||
@@ -1,8 +1,5 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"schedule": [
|
||||
"every weekend"
|
||||
],
|
||||
"extends": [
|
||||
"config:recommended"
|
||||
]
|
||||
|
||||
46
services/netdata/default.nix
Normal file
46
services/netdata/default.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{ config
|
||||
, pkgs
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
netdata = pkgs.netdata;
|
||||
netdataConf = ./netdata.conf;
|
||||
netdataDir = "/var/lib/netdata";
|
||||
in
|
||||
{
|
||||
users.extraGroups.netdata.gid = 220008;
|
||||
users.users.netdata.group = "netdata";
|
||||
users.extraUsers.netdata = {
|
||||
description = "Netdata server user";
|
||||
isSystemUser = true;
|
||||
name = "netdata";
|
||||
uid = 200008;
|
||||
};
|
||||
systemd.services.netdata = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
preStart = ''
|
||||
mkdir -p ${netdataDir}/config
|
||||
mkdir -p ${netdataDir}/logs
|
||||
cp -r ${netdata}/share/netdata/web ${netdataDir}/web
|
||||
chmod -R 700 ${netdataDir}
|
||||
chown -R netdata:netdata ${netdataDir}
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
ExecStart = "${netdata}/bin/netdata -c ${netdataConf} -u netdata";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
};
|
||||
|
||||
services.nginx.httpConfig = ''
|
||||
server {
|
||||
server_name netdata.thume.net;
|
||||
location / {
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_redirect off;
|
||||
proxy_pass http://127.0.0.1:19999;
|
||||
}
|
||||
}
|
||||
'';
|
||||
}
|
||||
21
services/netdata/netdata.conf
Normal file
21
services/netdata/netdata.conf
Normal file
@@ -0,0 +1,21 @@
|
||||
[global]
|
||||
run as user = netdata
|
||||
|
||||
config directory = /var/lib/netdata/config
|
||||
web files directory = /var/lib/netdata/web
|
||||
cache directory = /var/lib/netdata
|
||||
log directory = /var/lib/netdata/logs
|
||||
|
||||
# the default database size - 1 hour
|
||||
history = 3600
|
||||
|
||||
# some defaults to run netdata with least priority
|
||||
process scheduling policy = idle
|
||||
OOM score = 1000
|
||||
|
||||
[web]
|
||||
# web files owner = root
|
||||
web files group = netdata
|
||||
|
||||
# by default do not expose the netdata port
|
||||
bind to = localhost
|
||||
5
shell.nix
Normal file
5
shell.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
(import <nixpkgs> { }).mkShell {
|
||||
shellHook = ''
|
||||
${(import ./default.nix).pre-commit-check.shellHook}
|
||||
'';
|
||||
}
|
||||
8
upgrade-diff.nix
Normal file
8
upgrade-diff.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{ pkgs, ... }: {
|
||||
system.activationScripts.diff = {
|
||||
supportsDryActivation = true;
|
||||
text = ''
|
||||
${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff /run/current-system "$systemConfig"
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user