Compare commits
26 Commits
48260c392b
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| d122263dfa | |||
| 86e020936c | |||
| c00b9dc204 | |||
| 2505485996 | |||
| f41ef34361 | |||
| 4cacb69c9c | |||
| 9880ba23aa | |||
| 628dfaba31 | |||
| 9a93834dbb | |||
| 81cfe4ff2b | |||
| 7f3b6be59b | |||
| c49a0f1420 | |||
| 323ed6ec9e | |||
| 2eb594b625 | |||
| 15f6a5d7d3 | |||
| a92ff8fe58 | |||
| c242370ae8 | |||
| 3cbabde86a | |||
| aa673196ff | |||
| 8125de7ce6 | |||
| 42e80ea537 | |||
| a24be3309b | |||
| d2ad80da6f | |||
| 49606c8711 | |||
| e1cf4f3647 | |||
| f9f9816fe9 |
@@ -0,0 +1,31 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["main"]
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: nix
|
||||||
|
env:
|
||||||
|
PATH: "/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin"
|
||||||
|
NIXPKGS_ALLOW_UNFREE: "1"
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
run: git clone https://git.cyperpunk.de/DerGrumpf/cyper-nix.git .
|
||||||
|
|
||||||
|
- name: Format check
|
||||||
|
run: nix fmt -- --ci
|
||||||
|
|
||||||
|
- name: Nix flake check
|
||||||
|
run: nix flake check --impure
|
||||||
|
|
||||||
|
- name: Build NixOS configs (dry-run)
|
||||||
|
run: |
|
||||||
|
nix build .#nixosConfigurations.cyper-desktop.config.system.build.toplevel --dry-run
|
||||||
|
nix build .#nixosConfigurations.cyper-controller.config.system.build.toplevel --dry-run
|
||||||
|
nix build .#nixosConfigurations.cyper-proxy.config.system.build.toplevel --dry-run
|
||||||
|
nix build .#nixosConfigurations.cyper-node-1.config.system.build.toplevel --dry-run
|
||||||
|
nix build .#nixosConfigurations.cyper-node-2.config.system.build.toplevel --dry-run
|
||||||
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
name: Release ISOs
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: ["CI"]
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
branches: ["main"]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-isos:
|
||||||
|
runs-on: nix
|
||||||
|
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||||
|
env:
|
||||||
|
NIXPKGS_ALLOW_UNFREE: "1"
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
run: git clone https://git.cyperpunk.de/DerGrumpf/cyper-nix.git .
|
||||||
|
|
||||||
|
- name: Build ISOs
|
||||||
|
run: |
|
||||||
|
nix build .#packages.x86_64-linux.cyper-desktop-iso --out-link result-desktop
|
||||||
|
nix build .#packages.x86_64-linux.cyper-controller-iso --out-link result-controller
|
||||||
|
nix build .#packages.x86_64-linux.cyper-proxy-iso --out-link result-proxy
|
||||||
|
nix build .#packages.x86_64-linux.cyper-node-1-iso --out-link result-node-1
|
||||||
|
nix build .#packages.x86_64-linux.cyper-node-2-iso --out-link result-node-2
|
||||||
|
|
||||||
|
- name: Create release and upload ISOs
|
||||||
|
run: |
|
||||||
|
TAG="iso-$(date +%Y%m%d-%H%M%S)"
|
||||||
|
COMMIT=$(git -C . rev-parse --short HEAD)
|
||||||
|
|
||||||
|
RELEASE=$(curl -s -X POST \
|
||||||
|
-H "Authorization: token ${{ secrets.CI_TOKEN }}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{\"tag_name\":\"${TAG}\",\"name\":\"ISOs ${TAG}\",\"body\":\"Automated ISO build from commit ${COMMIT}\"}" \
|
||||||
|
"https://git.cyperpunk.de/api/v1/repos/DerGrumpf/cyper-nix/releases")
|
||||||
|
|
||||||
|
RELEASE_ID=$(echo $RELEASE | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
||||||
|
|
||||||
|
for result in result-desktop result-controller result-proxy result-node-1 result-node-2; do
|
||||||
|
iso=$(find $result -name "*.iso" | head -1)
|
||||||
|
curl -s -X POST \
|
||||||
|
-H "Authorization: token ${{ secrets.CI_TOKEN }}" \
|
||||||
|
-F "attachment=@${iso};filename=${result}.iso" \
|
||||||
|
"https://git.cyperpunk.de/api/v1/repos/DerGrumpf/cyper-nix/releases/${RELEASE_ID}/assets"
|
||||||
|
done
|
||||||
Generated
+18
-18
@@ -77,11 +77,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781242433,
|
"lastModified": 1781761792,
|
||||||
"narHash": "sha256-bchLZZ3sRn740zyvD2icZSnNoTaanN0nw7l6fjVXO+E=",
|
"narHash": "sha256-rCPytmKNjctLloB6UgK5CRrHSwV4b0ygxtJLPPp8R14=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "aabb2037edfc0f210723b72cd5f528aab5dd3f0b",
|
"rev": "a1fa429e945becaf60468600daf649be4ba0350c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -209,11 +209,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781667738,
|
"lastModified": 1781788787,
|
||||||
"narHash": "sha256-OxrwHpsWf+QGbos1LMDGAcv7sjBGshcw/43th6waeYI=",
|
"narHash": "sha256-YqlTCRRhGvNjcJejPeMuHrYQ/TVhOO2MV/nEGMWb8nk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "7664e05e2413d5e2b8c54a884eb8ea0f8a504fc2",
|
"rev": "d456f483f157d4b706416005da226234b9c116ff",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -320,11 +320,11 @@
|
|||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781627558,
|
"lastModified": 1781796010,
|
||||||
"narHash": "sha256-qqFd1ufiH/oBB2RCmt7dg5Kyca7grJguIJrNPsD91zk=",
|
"narHash": "sha256-bIqjZgUfp3vba/C1UJLVqTo8zdpfqMDvuwWrHmqDWm4=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "5b47c782c9f83539a6c642d83844cdc9130a2873",
|
"rev": "ae1690c2138313d988c81f5c25a9d0b6fadfd3b1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -675,11 +675,11 @@
|
|||||||
"nixpkgs-nixcord": "nixpkgs-nixcord"
|
"nixpkgs-nixcord": "nixpkgs-nixcord"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781659360,
|
"lastModified": 1781775854,
|
||||||
"narHash": "sha256-bwTlMeMALwHREYkYBd9swITfW270tt6GzyY1j+QAqIU=",
|
"narHash": "sha256-0eb1+zKSTwgD3qsBm7UiuRabahHQNkTP94Z/s3nMK60=",
|
||||||
"owner": "kaylorben",
|
"owner": "kaylorben",
|
||||||
"repo": "nixcord",
|
"repo": "nixcord",
|
||||||
"rev": "9dd239d5f8d651ccd94efcf1e3bd384ad41084ca",
|
"rev": "b92ceb7923c87dfcfcf84415407b0ca63e17548b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -796,11 +796,11 @@
|
|||||||
"systems": "systems_3"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781637822,
|
"lastModified": 1781713417,
|
||||||
"narHash": "sha256-6Fwwt8BBGF5rqwGPhj/9ZMyyjXeJQzeHHJQfPuqJP3I=",
|
"narHash": "sha256-Kaj44jTNmnaFhKrcADx8nXmUYPa7l2HYfb7m6lEPy7Q=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "d43c763fd9fae0912bdb4103cd842f26fea5b0ed",
|
"rev": "caee4e5d4161778815f522d9ea1c9e3dc42462b7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -817,11 +817,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781694117,
|
"lastModified": 1781800183,
|
||||||
"narHash": "sha256-TobjUrIR9hSn3PdjooxvNYjuQuCbZ+HIQzExWatX6Bo=",
|
"narHash": "sha256-NcRZr/JQiAvqC2qCyMxcfx/98Hf1epwdtjcbwKHeMf8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "fea207887cf1f76cb19452ffd6978b82311d9746",
|
"rev": "0559d992b12ee209570bb325d79e90007b13da52",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -95,6 +95,61 @@
|
|||||||
}@inputs:
|
}@inputs:
|
||||||
let
|
let
|
||||||
primaryUser = "phil";
|
primaryUser = "phil";
|
||||||
|
|
||||||
|
mkIso =
|
||||||
|
{
|
||||||
|
hostName,
|
||||||
|
isDarwin ? false,
|
||||||
|
isServer ? false,
|
||||||
|
}:
|
||||||
|
nixos-generators.nixosGenerate {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
format = "iso";
|
||||||
|
specialArgs = {
|
||||||
|
inherit
|
||||||
|
inputs
|
||||||
|
primaryUser
|
||||||
|
self
|
||||||
|
hostName
|
||||||
|
isDarwin
|
||||||
|
isServer
|
||||||
|
;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
inputs.nur.overlays.default
|
||||||
|
(import ./overlays { inherit (inputs) nur; })
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ nixpkgs.config.allowUnfree = true; }
|
||||||
|
{ nixpkgs.hostPlatform = "x86_64-linux"; }
|
||||||
|
{ networking.hostName = hostName; }
|
||||||
|
./hosts/${hostName}/configuration.nix
|
||||||
|
./nixos
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager = {
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit
|
||||||
|
inputs
|
||||||
|
primaryUser
|
||||||
|
self
|
||||||
|
hostName
|
||||||
|
isDarwin
|
||||||
|
isServer
|
||||||
|
;
|
||||||
|
};
|
||||||
|
users.${primaryUser} = import ./home;
|
||||||
|
backupFileExtension = "backup";
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
mkSystem =
|
mkSystem =
|
||||||
{
|
{
|
||||||
hostName,
|
hostName,
|
||||||
@@ -196,36 +251,26 @@
|
|||||||
isDarwin = true;
|
isDarwin = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# NEW: flashable image for cyper-controller
|
packages.x86_64-linux = {
|
||||||
packages.x86_64-linux.cyper-controller-image = nixos-generators.nixosGenerate {
|
cyper-desktop-iso = mkIso { hostName = "cyper-desktop"; };
|
||||||
system = "x86_64-linux";
|
cyper-controller-iso = mkIso {
|
||||||
format = "raw-efi";
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs primaryUser self;
|
|
||||||
hostName = "cyper-controller";
|
hostName = "cyper-controller";
|
||||||
isDarwin = false;
|
|
||||||
isServer = true;
|
isServer = true;
|
||||||
};
|
};
|
||||||
modules = [
|
cyper-proxy-iso = mkIso {
|
||||||
{ nixpkgs.hostPlatform = "x86_64-linux"; }
|
hostName = "cyper-proxy";
|
||||||
{ networking.hostName = "cyper-controller"; }
|
isServer = true;
|
||||||
./hosts/cyper-controller/configuration.nix
|
};
|
||||||
./nixos
|
cyper-node-1-iso = mkIso {
|
||||||
inputs.sops-nix.nixosModules.sops
|
hostName = "cyper-node-1";
|
||||||
inputs.home-manager.nixosModules.home-manager
|
isServer = true;
|
||||||
{
|
};
|
||||||
home-manager = {
|
cyper-node-2-iso = mkIso {
|
||||||
extraSpecialArgs = {
|
hostName = "cyper-node-2";
|
||||||
inherit inputs primaryUser self;
|
isServer = true;
|
||||||
hostName = "cyper-controller";
|
};
|
||||||
isDarwin = false;
|
|
||||||
isServer = true;
|
|
||||||
};
|
|
||||||
users.${primaryUser} = import ./home;
|
|
||||||
backupFileExtension = "backup";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,5 +50,6 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
apply = true;
|
apply = true;
|
||||||
};
|
};
|
||||||
|
opencode.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -18,13 +18,15 @@
|
|||||||
./neovim
|
./neovim
|
||||||
./python.nix
|
./python.nix
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
./opencode.nix
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
]
|
]
|
||||||
++ lib.optionals (!isDarwin && !isServer) [
|
++ lib.optionals (!isDarwin && !isServer) [
|
||||||
./desktop
|
./desktop
|
||||||
./catppuccin.nix
|
./catppuccin.nix
|
||||||
]
|
]
|
||||||
|
++ lib.optionals (!isDarwin) [
|
||||||
|
./opencode.nix
|
||||||
|
]
|
||||||
++ lib.optionals isDarwin [
|
++ lib.optionals isDarwin [
|
||||||
./desktop/sketchybar
|
./desktop/sketchybar
|
||||||
./catppuccin.nix
|
./catppuccin.nix
|
||||||
|
|||||||
@@ -1,110 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
{
|
|
||||||
services.swaync = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
positionX = "center";
|
|
||||||
positionY = "center";
|
|
||||||
layer = "overlay";
|
|
||||||
control-center-layer = "top";
|
|
||||||
layer-shell = true;
|
|
||||||
cssPriority = "user";
|
|
||||||
control-center-margin-top = 100;
|
|
||||||
control-center-margin-bottom = 200;
|
|
||||||
control-center-margin-right = 0;
|
|
||||||
control-center-margin-left = 0;
|
|
||||||
notification-2fa-action = true;
|
|
||||||
notification-inline-replies = false;
|
|
||||||
notification-icon-size = 64;
|
|
||||||
notification-body-image-height = 100;
|
|
||||||
notification-body-image-width = 200;
|
|
||||||
widgets = [
|
|
||||||
"mpris"
|
|
||||||
"volume"
|
|
||||||
"inhibitors"
|
|
||||||
"title"
|
|
||||||
"dnd"
|
|
||||||
"notifications"
|
|
||||||
];
|
|
||||||
widget-config = {
|
|
||||||
|
|
||||||
mpris = {
|
|
||||||
blacklist = [ ];
|
|
||||||
autohide = false;
|
|
||||||
show-album-art = "always";
|
|
||||||
loop-carousel = false;
|
|
||||||
image-size = 96;
|
|
||||||
image-radius = 12;
|
|
||||||
};
|
|
||||||
|
|
||||||
volume = {
|
|
||||||
label = "gain";
|
|
||||||
show-per-app = false;
|
|
||||||
empty-list-label = "Nothin' is playin'";
|
|
||||||
expand-button-label = "⤢";
|
|
||||||
collaps-button-label = "⤡";
|
|
||||||
};
|
|
||||||
|
|
||||||
title = {
|
|
||||||
text = "Hollerin'";
|
|
||||||
clear-all-button = true;
|
|
||||||
button-text = "Sheriff's Pardon";
|
|
||||||
};
|
|
||||||
|
|
||||||
dnd = {
|
|
||||||
text = "Let'er rest";
|
|
||||||
};
|
|
||||||
|
|
||||||
menubar = {
|
|
||||||
"menu#power" = {
|
|
||||||
label = "Power";
|
|
||||||
position = "right";
|
|
||||||
animation-type = "slide_down";
|
|
||||||
animation-duration = 250;
|
|
||||||
actions = [
|
|
||||||
{
|
|
||||||
label = "Bolt It";
|
|
||||||
command = "hyprlock";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "Ride Out";
|
|
||||||
command = "hyprctl dispatch exit";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "Circle Back";
|
|
||||||
command = "systemctl reboot";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "Bet Down the Horses";
|
|
||||||
command = "systemctl poweroff";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"buttons#media" = {
|
|
||||||
position = "left";
|
|
||||||
actions = [
|
|
||||||
{
|
|
||||||
label = "Play/Pause";
|
|
||||||
command = "playerctl play-pause";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "Next";
|
|
||||||
command = "playerctl next";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "Previous";
|
|
||||||
command = "playerctl previous";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
notifications = {
|
|
||||||
vexpand = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,11 @@
|
|||||||
{ pkgs, lib, ... }: {
|
{ pkgs, lib, ... }: {
|
||||||
home.packages =
|
home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) (
|
||||||
lib.mkIf (!pkgs.stdenv.isDarwin) (with pkgs; [ rofi-power-menu rofi-calc ]);
|
with pkgs;
|
||||||
|
[
|
||||||
|
rofi-power-menu
|
||||||
|
rofi-calc
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
programs.rofi = lib.mkIf (!pkgs.stdenv.isDarwin) {
|
programs.rofi = lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{ pkgs, lib, isDarwin, ... }: {
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
isDarwin,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
programs.sketchybar = lib.mkIf isDarwin {
|
programs.sketchybar = lib.mkIf isDarwin {
|
||||||
enable = true;
|
enable = true;
|
||||||
configType = "lua";
|
configType = "lua";
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
{ pkgs, lib, compositor ? "hyprland", ... }: {
|
{
|
||||||
programs.waybar = lib.mkIf (!pkgs.stdenv.isDarwin) ({
|
pkgs,
|
||||||
enable = true;
|
lib,
|
||||||
package = pkgs.waybar;
|
compositor ? "hyprland",
|
||||||
} // (import ./dual.nix { inherit compositor; }));
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.waybar = lib.mkIf (!pkgs.stdenv.isDarwin) (
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.waybar;
|
||||||
|
}
|
||||||
|
// (import ./dual.nix { inherit compositor; })
|
||||||
|
);
|
||||||
|
|
||||||
home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) (with pkgs; [ cava ]);
|
home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) (with pkgs; [ cava ]);
|
||||||
|
|
||||||
|
|||||||
+37
-8
@@ -46,10 +46,14 @@
|
|||||||
{
|
{
|
||||||
type = "button";
|
type = "button";
|
||||||
val = "[+] New file";
|
val = "[+] New file";
|
||||||
on_press.__raw =
|
on_press.__raw = "function() vim.cmd[[ene]] vim.cmd[[startinsert]] end";
|
||||||
"function() vim.cmd[[ene]] vim.cmd[[startinsert]] end";
|
|
||||||
opts = {
|
opts = {
|
||||||
keymap = [ "n" "e" ":ene <BAR> startinsert <CR>" { } ];
|
keymap = [
|
||||||
|
"n"
|
||||||
|
"e"
|
||||||
|
":ene <BAR> startinsert <CR>"
|
||||||
|
{ }
|
||||||
|
];
|
||||||
shortcut = "e";
|
shortcut = "e";
|
||||||
position = "center";
|
position = "center";
|
||||||
cursor = 3;
|
cursor = 3;
|
||||||
@@ -63,7 +67,12 @@
|
|||||||
val = "[?] Find file";
|
val = "[?] Find file";
|
||||||
on_press.__raw = "function() vim.cmd[[Telescope find_files]] end";
|
on_press.__raw = "function() vim.cmd[[Telescope find_files]] end";
|
||||||
opts = {
|
opts = {
|
||||||
keymap = [ "n" "f" ":Telescope find_files <CR>" { } ];
|
keymap = [
|
||||||
|
"n"
|
||||||
|
"f"
|
||||||
|
":Telescope find_files <CR>"
|
||||||
|
{ }
|
||||||
|
];
|
||||||
shortcut = "f";
|
shortcut = "f";
|
||||||
position = "center";
|
position = "center";
|
||||||
cursor = 3;
|
cursor = 3;
|
||||||
@@ -77,7 +86,12 @@
|
|||||||
val = "[~] Recent files";
|
val = "[~] Recent files";
|
||||||
on_press.__raw = "function() vim.cmd[[Telescope oldfiles]] end";
|
on_press.__raw = "function() vim.cmd[[Telescope oldfiles]] end";
|
||||||
opts = {
|
opts = {
|
||||||
keymap = [ "n" "r" ":Telescope oldfiles <CR>" { } ];
|
keymap = [
|
||||||
|
"n"
|
||||||
|
"r"
|
||||||
|
":Telescope oldfiles <CR>"
|
||||||
|
{ }
|
||||||
|
];
|
||||||
shortcut = "r";
|
shortcut = "r";
|
||||||
position = "center";
|
position = "center";
|
||||||
cursor = 3;
|
cursor = 3;
|
||||||
@@ -91,7 +105,12 @@
|
|||||||
val = "[Y] Yazi";
|
val = "[Y] Yazi";
|
||||||
on_press.__raw = "function() require('yazi').yazi() end";
|
on_press.__raw = "function() require('yazi').yazi() end";
|
||||||
opts = {
|
opts = {
|
||||||
keymap = [ "n" "y" ":Yazi<CR>" { } ];
|
keymap = [
|
||||||
|
"n"
|
||||||
|
"y"
|
||||||
|
":Yazi<CR>"
|
||||||
|
{ }
|
||||||
|
];
|
||||||
shortcut = "y";
|
shortcut = "y";
|
||||||
position = "center";
|
position = "center";
|
||||||
cursor = 3;
|
cursor = 3;
|
||||||
@@ -105,7 +124,12 @@
|
|||||||
val = "[A] Open Prompt";
|
val = "[A] Open Prompt";
|
||||||
#on_press.__raw = "function() require('yazi').yazi() end";
|
#on_press.__raw = "function() require('yazi').yazi() end";
|
||||||
opts = {
|
opts = {
|
||||||
keymap = [ "n" "a" ":AvanteChatNew<CR>" { } ];
|
keymap = [
|
||||||
|
"n"
|
||||||
|
"a"
|
||||||
|
":AvanteChatNew<CR>"
|
||||||
|
{ }
|
||||||
|
];
|
||||||
shortcut = "a";
|
shortcut = "a";
|
||||||
position = "center";
|
position = "center";
|
||||||
cursor = 3;
|
cursor = 3;
|
||||||
@@ -119,7 +143,12 @@
|
|||||||
val = "[X] Quit";
|
val = "[X] Quit";
|
||||||
on_press.__raw = "function() vim.cmd[[qa]] end";
|
on_press.__raw = "function() vim.cmd[[qa]] end";
|
||||||
opts = {
|
opts = {
|
||||||
keymap = [ "n" "q" ":qa<CR>" { } ];
|
keymap = [
|
||||||
|
"n"
|
||||||
|
"q"
|
||||||
|
":qa<CR>"
|
||||||
|
{ }
|
||||||
|
];
|
||||||
shortcut = "q";
|
shortcut = "q";
|
||||||
position = "center";
|
position = "center";
|
||||||
cursor = 3;
|
cursor = 3;
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
programs.nixvim = lib.mkIf (!isDarwin) {
|
programs.nixvim = lib.mkIf (!isDarwin) {
|
||||||
plugins.molten = {
|
plugins.molten = {
|
||||||
enable = true;
|
enable = true;
|
||||||
python3Dependencies = p:
|
python3Dependencies =
|
||||||
with p; [
|
p: with p; [
|
||||||
pynvim
|
pynvim
|
||||||
jupyter-client
|
jupyter-client
|
||||||
cairosvg
|
cairosvg
|
||||||
|
|||||||
+1
-2
@@ -1,4 +1,3 @@
|
|||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
programs.onlyoffice =
|
programs.onlyoffice = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
|
||||||
pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ _: {
|
|||||||
"deepseek-r1:1.5b" = {
|
"deepseek-r1:1.5b" = {
|
||||||
name = "DeepSeek-R1 1.5B";
|
name = "DeepSeek-R1 1.5B";
|
||||||
};
|
};
|
||||||
|
"gemma4:e2b" = {
|
||||||
|
name = "Gemma 4 2B Edge";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -67,6 +67,7 @@
|
|||||||
irssi
|
irssi
|
||||||
blender
|
blender
|
||||||
nixpkgs-review
|
nixpkgs-review
|
||||||
|
netradiant-custom
|
||||||
]
|
]
|
||||||
++ lib.optionals pkgs.stdenv.isDarwin [ graphite-cli ];
|
++ lib.optionals pkgs.stdenv.isDarwin [ graphite-cli ];
|
||||||
};
|
};
|
||||||
|
|||||||
+234
-304
@@ -17,326 +17,256 @@
|
|||||||
ripgrep # grep alternative
|
ripgrep # grep alternative
|
||||||
dnsutils
|
dnsutils
|
||||||
|
|
||||||
# LLM in the Terminal
|
|
||||||
(pkgs.llm.withPlugins { llm-groq = true; })
|
|
||||||
|
|
||||||
# Fun stuff
|
# Fun stuff
|
||||||
zoxide
|
zoxide
|
||||||
lolcat
|
lolcat
|
||||||
cmatrix
|
cmatrix
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.kitty = {
|
programs = {
|
||||||
enable = true;
|
kitty = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
font = {
|
font = {
|
||||||
name = "Fira Code Nerd Font";
|
name = "Fira Code Nerd Font";
|
||||||
size = 10;
|
size = 10;
|
||||||
};
|
};
|
||||||
|
|
||||||
settings = {
|
|
||||||
confirm_os_window_close = 0;
|
|
||||||
dynamic_background_opacity = true; # ctrl+shift+a>m/l
|
|
||||||
enable_audio_bell = false;
|
|
||||||
mouse_hide_wait = 3.0;
|
|
||||||
window_padding_width = 10;
|
|
||||||
|
|
||||||
background_opacity = 0.8;
|
|
||||||
background_blur = 5;
|
|
||||||
|
|
||||||
tab_bar_min_tabs = 1;
|
|
||||||
tab_bar_edge = "bottom";
|
|
||||||
tab_bar_style = "custom"; # Should be changed to custom
|
|
||||||
tab_title_template = "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}";
|
|
||||||
|
|
||||||
symbol_map =
|
|
||||||
let
|
|
||||||
mappings = [
|
|
||||||
"U+23FB-U+23FE"
|
|
||||||
"U+2B58"
|
|
||||||
"U+E200-U+E2A9"
|
|
||||||
"U+E0A0-U+E0A3"
|
|
||||||
"U+E0B0-U+E0BF"
|
|
||||||
"U+E0C0-U+E0C8"
|
|
||||||
"U+E0CC-U+E0CF"
|
|
||||||
"U+E0D0-U+E0D2"
|
|
||||||
"U+E0D4"
|
|
||||||
"U+E700-U+E7C5"
|
|
||||||
"U+F000-U+F2E0"
|
|
||||||
"U+2665"
|
|
||||||
"U+26A1"
|
|
||||||
"U+F400-U+F4A8"
|
|
||||||
"U+F67C"
|
|
||||||
"U+E000-U+E00A"
|
|
||||||
"U+F300-U+F313"
|
|
||||||
"U+E5FA-U+E62B"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
(builtins.concatStringsSep "," mappings) + " Symbols Nerd Font Mono";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Doenst work
|
|
||||||
programs.iamb = {
|
|
||||||
enable = false;
|
|
||||||
settings = {
|
|
||||||
default_profile = "personal";
|
|
||||||
settings = {
|
settings = {
|
||||||
notifications.enabled = true;
|
confirm_os_window_close = 0;
|
||||||
image_preview.protocol = {
|
dynamic_background_opacity = true; # ctrl+shift+a>m/l
|
||||||
type = "kitty";
|
enable_audio_bell = false;
|
||||||
size = {
|
mouse_hide_wait = 3.0;
|
||||||
height = 10;
|
window_padding_width = 10;
|
||||||
width = 66;
|
|
||||||
};
|
background_opacity = 0.8;
|
||||||
|
background_blur = 5;
|
||||||
|
|
||||||
|
tab_bar_min_tabs = 1;
|
||||||
|
tab_bar_edge = "bottom";
|
||||||
|
tab_bar_style = "custom"; # Should be changed to custom
|
||||||
|
tab_title_template = "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}";
|
||||||
|
|
||||||
|
symbol_map =
|
||||||
|
let
|
||||||
|
mappings = [
|
||||||
|
"U+23FB-U+23FE"
|
||||||
|
"U+2B58"
|
||||||
|
"U+E200-U+E2A9"
|
||||||
|
"U+E0A0-U+E0A3"
|
||||||
|
"U+E0B0-U+E0BF"
|
||||||
|
"U+E0C0-U+E0C8"
|
||||||
|
"U+E0CC-U+E0CF"
|
||||||
|
"U+E0D0-U+E0D2"
|
||||||
|
"U+E0D4"
|
||||||
|
"U+E700-U+E7C5"
|
||||||
|
"U+F000-U+F2E0"
|
||||||
|
"U+2665"
|
||||||
|
"U+26A1"
|
||||||
|
"U+F400-U+F4A8"
|
||||||
|
"U+F67C"
|
||||||
|
"U+E000-U+E00A"
|
||||||
|
"U+F300-U+F313"
|
||||||
|
"U+E5FA-U+E62B"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
(builtins.concatStringsSep "," mappings) + " Symbols Nerd Font Mono";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cava = lib.mkIf (!isDarwin) { enable = true; };
|
||||||
|
|
||||||
|
yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
ration = [
|
||||||
|
1
|
||||||
|
3
|
||||||
|
4
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
defaultCommand = "fd --type f --strip-cwd-prefix --hidden --exclude .git";
|
||||||
|
fileWidgetCommand = "fd --type f --strip-cwd-prefix --hidden --exclude .git";
|
||||||
|
defaultOptions = [
|
||||||
|
"--height 100%"
|
||||||
|
"--border sharp"
|
||||||
|
"--layout=reverse"
|
||||||
|
"--inline-info"
|
||||||
|
"--preview 'bat --color=always --style=numbers {}'"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nushell = {
|
||||||
|
enable = true;
|
||||||
|
shellAliases = {
|
||||||
|
la = "ls -la";
|
||||||
|
i = "kitty +kitten icat";
|
||||||
|
grep = "rg";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
$env.config = {
|
||||||
|
show_banner: false
|
||||||
|
}
|
||||||
|
# Starship
|
||||||
|
$env.STARSHIP_SHELL = "nu"
|
||||||
|
mkdir ~/.cache/starship
|
||||||
|
starship init nu | save -f ~/.cache/starship/init.nu
|
||||||
|
# fzf picker for nvim
|
||||||
|
def f [] { nvim (fzf) }
|
||||||
|
'';
|
||||||
|
extraEnv = ''
|
||||||
|
starship init nu | save -f ~/.cache/starship/init.nu
|
||||||
|
use ~/.cache/starship/init.nu
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
fish = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
ls = "eza --icons=always";
|
||||||
|
la = "eza -la --icons=always";
|
||||||
|
f = "nvim $(fzf)";
|
||||||
|
tree = "eza --icons=always -T";
|
||||||
|
i = "kitty +kitten icat";
|
||||||
|
bat = "bat --color=always --style=numbers";
|
||||||
|
grep = "rg";
|
||||||
|
cp = "rsync -ah --progress";
|
||||||
|
nix-switch =
|
||||||
|
if isDarwin then
|
||||||
|
"sudo darwin-rebuild switch --flake ~/.config/nix#(hostname -s)"
|
||||||
|
else
|
||||||
|
"sudo nixos-rebuild switch --flake ~/.config/nix#(hostname -s)";
|
||||||
|
|
||||||
|
nix-check =
|
||||||
|
if isDarwin then
|
||||||
|
"nix eval ~/.config/nix#darwinConfigurations.(hostname -s).config.system.build.toplevel.outPath"
|
||||||
|
else
|
||||||
|
"nix flake check --no-build ~/.config/nix";
|
||||||
|
};
|
||||||
|
|
||||||
|
interactiveShellInit = ''
|
||||||
|
starship init fish | source
|
||||||
|
fzf --fish | source
|
||||||
|
zoxide init fish --cmd cd | source
|
||||||
|
function fish_greeting
|
||||||
|
echo " _ _ ";
|
||||||
|
echo " | | | | ";
|
||||||
|
echo " ___ _ _ _ __ ___ _ __ _ __ _ _ _ __ | | __ __| | ___ ";
|
||||||
|
echo " / __| | | | '_ \\ / _ \\ '__| '_ \\| | | | '_ \\| |/ / / _\` |/ _ \\";
|
||||||
|
echo "| (__| |_| | |_) | __/ | | |_) | |_| | | | | < | (_| | __/";
|
||||||
|
echo " \\___|\\__, | .__/ \\___|_| | .__/ \\__,_|_| |_|_|\\_(_)__,_|\\___|";
|
||||||
|
echo " __/ | | | | ";
|
||||||
|
echo " |___/|_| |_| ";
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
command_timeout = 500;
|
||||||
|
|
||||||
|
format = ''
|
||||||
|
$username$hostname $directory $git_branch$git_status
|
||||||
|
$character '';
|
||||||
|
right_format = "$cmd_duration";
|
||||||
|
|
||||||
|
username = {
|
||||||
|
style_user = "bold #cba6f7";
|
||||||
|
style_root = "bold #f38ba8";
|
||||||
|
format = "[┌](bold #a6e3a1)[$user]($style)";
|
||||||
|
show_always = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hostname = {
|
||||||
|
style = "bold #74c7ec";
|
||||||
|
format = "[@](bold #fab387)[$hostname]($style)";
|
||||||
|
ssh_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
directory = {
|
||||||
|
style = "bold #a6e3a1";
|
||||||
|
truncation_length = 0;
|
||||||
|
truncation_symbol = "";
|
||||||
|
format = "[⤇ ](bold #f38ba8)[《$path 》]($style)";
|
||||||
|
};
|
||||||
|
|
||||||
|
git_branch = {
|
||||||
|
format = "[⟦$branch⟧]($style)";
|
||||||
|
style = "bold #f9e2af";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Git status module settings
|
||||||
|
git_status = {
|
||||||
|
format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](red) ($ahead_behind$stashed)]($style)";
|
||||||
|
style = "bold #a6e3a1";
|
||||||
|
conflicted = "";
|
||||||
|
untracked = "";
|
||||||
|
modified = "";
|
||||||
|
staged = "";
|
||||||
|
renamed = "";
|
||||||
|
deleted = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Command duration module
|
||||||
|
cmd_duration = {
|
||||||
|
format = "[$duration]($style)";
|
||||||
|
style = "bold #cdd6f4";
|
||||||
|
min_time = 5000; # Only show if command takes longer than 5 seconds
|
||||||
|
};
|
||||||
|
|
||||||
|
# Character module (prompt symbol)
|
||||||
|
character = {
|
||||||
|
success_symbol = "[└──────⇴ ](bold #a6e3a1)";
|
||||||
|
error_symbol = "[└──────⇴ ](bold #f38ba8)";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix_shell = {
|
||||||
|
format = "[$symbol$state( ($name))]($style)";
|
||||||
|
symbol = "U+02744";
|
||||||
|
style = "bold #89dceb";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.newsboat = {
|
home = {
|
||||||
enable = true;
|
file = {
|
||||||
autoReload = true;
|
".config/fastfetch/config.jsonc".source = ./fastfetch.jsonc;
|
||||||
browser = if isDarwin then "open" else "xdg-open";
|
".config/tabiew/theme.toml".source = ./tabiew.toml;
|
||||||
urls = [
|
".config/kitty/tab_bar.py".source = ./tab_bar.py;
|
||||||
{
|
".hushlogin" = lib.mkIf isDarwin { text = ""; }; # Suppress Login
|
||||||
url = "https://www.tagesschau.de/xml/rss2";
|
|
||||||
tags = [
|
|
||||||
"news"
|
|
||||||
"de"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "https://www.spiegel.de/schlagzeilen/index.rss";
|
|
||||||
tags = [
|
|
||||||
"news"
|
|
||||||
"de"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "https://www.focus.de/rss";
|
|
||||||
tags = [
|
|
||||||
"news"
|
|
||||||
"de"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
url = "https://feeds.feedburner.com/blogspot/rkEL";
|
|
||||||
tags = [ "blog" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.cava = lib.mkIf (!isDarwin) { enable = true; };
|
# Link LLM std template
|
||||||
|
".config/io.datasette.llm/templates/std.yaml".text = ''
|
||||||
programs.yazi = {
|
system: |
|
||||||
enable = true;
|
You are a concise technical assistant running on an Intel Mac (x86_64-darwin)
|
||||||
enableBashIntegration = true;
|
with nix-darwin and home-manager.
|
||||||
enableZshIntegration = true;
|
|
||||||
enableFishIntegration = true;
|
Rules:
|
||||||
|
- Always respond in valid markdown
|
||||||
settings = {
|
- Be concise and direct, no unnecessary explanation
|
||||||
ration = [
|
- Prefer code blocks for commands and code
|
||||||
1
|
- You have access to these tools in the shell: nvim, fish, git,
|
||||||
3
|
eza, bat, ripgrep, fzf, yazi, glow, llm, zoxide, fastfetch,
|
||||||
4
|
nix, darwin-rebuild, brew
|
||||||
];
|
- When suggesting nix config changes, use the nix language
|
||||||
};
|
- nix-switch rebuilds the system config
|
||||||
};
|
- nix-check validates the flake without building
|
||||||
|
|
||||||
programs.fzf = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
defaultCommand = "fd --type f --strip-cwd-prefix --hidden --exclude .git";
|
|
||||||
fileWidgetCommand = "fd --type f --strip-cwd-prefix --hidden --exclude .git";
|
|
||||||
defaultOptions = [
|
|
||||||
"--height 100%"
|
|
||||||
"--border sharp"
|
|
||||||
"--layout=reverse"
|
|
||||||
"--inline-info"
|
|
||||||
"--preview 'bat --color=always --style=numbers {}'"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.nushell = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
shellAliases = {
|
|
||||||
# ls = "eza --icons=always";
|
|
||||||
la = "ls -la";
|
|
||||||
#tree = "eza --icons=always -T";
|
|
||||||
i = "kitty +kitten icat";
|
|
||||||
# cat = "bat --color=always --style=numbers";
|
|
||||||
grep = "rg";
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
$env.config = {
|
|
||||||
show_banner: false
|
|
||||||
}
|
|
||||||
|
|
||||||
# Starship
|
|
||||||
$env.STARSHIP_SHELL = "nu"
|
|
||||||
mkdir ~/.cache/starship
|
|
||||||
starship init nu | save -f ~/.cache/starship/init.nu
|
|
||||||
|
|
||||||
# fzf picker for nvim
|
|
||||||
def f [] { nvim (fzf) }
|
|
||||||
|
|
||||||
# llm | glow
|
|
||||||
def l [...args] { llm prompt -m groq/llama-3.3-70b-versatile -t std ...$args | glow }
|
|
||||||
'';
|
|
||||||
|
|
||||||
extraEnv = ''
|
|
||||||
starship init nu | save -f ~/.cache/starship/init.nu
|
|
||||||
use ~/.cache/starship/init.nu
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
shellAliases = {
|
|
||||||
ls = "eza --icons=always";
|
|
||||||
la = "eza -la --icons=always";
|
|
||||||
f = "nvim $(fzf)";
|
|
||||||
tree = "eza --icons=always -T";
|
|
||||||
i = "kitty +kitten icat";
|
|
||||||
bat = "bat --color=always --style=numbers";
|
|
||||||
grep = "rg";
|
|
||||||
cp = "rsync -ah --progress";
|
|
||||||
nix-switch =
|
|
||||||
if isDarwin then
|
|
||||||
"sudo darwin-rebuild switch --flake ~/.config/nix#(hostname -s)"
|
|
||||||
else
|
|
||||||
"sudo nixos-rebuild switch --flake ~/.config/nix#(hostname -s)";
|
|
||||||
|
|
||||||
nix-check =
|
|
||||||
if isDarwin then
|
|
||||||
"nix eval ~/.config/nix#darwinConfigurations.(hostname -s).config.system.build.toplevel.outPath"
|
|
||||||
else
|
|
||||||
"nix flake check --no-build ~/.config/nix";
|
|
||||||
};
|
|
||||||
|
|
||||||
interactiveShellInit = ''
|
|
||||||
starship init fish | source
|
|
||||||
fzf --fish | source
|
|
||||||
zoxide init fish --cmd cd | source
|
|
||||||
function fish_greeting
|
|
||||||
echo " _ _ ";
|
|
||||||
echo " | | | | ";
|
|
||||||
echo " ___ _ _ _ __ ___ _ __ _ __ _ _ _ __ | | __ __| | ___ ";
|
|
||||||
echo " / __| | | | '_ \\ / _ \\ '__| '_ \\| | | | '_ \\| |/ / / _\` |/ _ \\";
|
|
||||||
echo "| (__| |_| | |_) | __/ | | |_) | |_| | | | | < | (_| | __/";
|
|
||||||
echo " \\___|\\__, | .__/ \\___|_| | .__/ \\__,_|_| |_|_|\\_(_)__,_|\\___|";
|
|
||||||
echo " __/ | | | | ";
|
|
||||||
echo " |___/|_| |_| ";
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
|
|
||||||
functions.l = {
|
|
||||||
body = ''
|
|
||||||
if test -f "$GROQ_API_KEY"
|
|
||||||
set -x GROQ_API_KEY (cat $GROQ_API_KEY)
|
|
||||||
end
|
|
||||||
llm prompt -m groq/llama-3.3-70b-versatile -t std $argv | glow
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Link LLM std template
|
|
||||||
home.file.".config/io.datasette.llm/templates/std.yaml".text = ''
|
|
||||||
system: |
|
|
||||||
You are a concise technical assistant running on an Intel Mac (x86_64-darwin)
|
|
||||||
with nix-darwin and home-manager.
|
|
||||||
|
|
||||||
Rules:
|
|
||||||
- Always respond in valid markdown
|
|
||||||
- Be concise and direct, no unnecessary explanation
|
|
||||||
- Prefer code blocks for commands and code
|
|
||||||
- You have access to these tools in the shell: nvim, fish, git,
|
|
||||||
eza, bat, ripgrep, fzf, yazi, glow, llm, zoxide, fastfetch,
|
|
||||||
nix, darwin-rebuild, brew
|
|
||||||
- When suggesting nix config changes, use the nix language
|
|
||||||
- nix-switch rebuilds the system config
|
|
||||||
- nix-check validates the flake without building
|
|
||||||
'';
|
|
||||||
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
add_newline = true;
|
|
||||||
command_timeout = 500;
|
|
||||||
|
|
||||||
format = ''
|
|
||||||
$username$hostname $directory $git_branch$git_status
|
|
||||||
$character '';
|
|
||||||
right_format = "$cmd_duration";
|
|
||||||
|
|
||||||
username = {
|
|
||||||
style_user = "bold #cba6f7";
|
|
||||||
style_root = "bold #f38ba8";
|
|
||||||
format = "[┌](bold #a6e3a1)[$user]($style)";
|
|
||||||
show_always = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
hostname = {
|
|
||||||
style = "bold #74c7ec";
|
|
||||||
format = "[@](bold #fab387)[$hostname]($style)";
|
|
||||||
ssh_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
directory = {
|
|
||||||
style = "bold #a6e3a1";
|
|
||||||
truncation_length = 0;
|
|
||||||
truncation_symbol = "";
|
|
||||||
format = "[⤇ ](bold #f38ba8)[《$path 》]($style)";
|
|
||||||
};
|
|
||||||
|
|
||||||
git_branch = {
|
|
||||||
format = "[⟦$branch⟧]($style)";
|
|
||||||
style = "bold #f9e2af";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Git status module settings
|
|
||||||
git_status = {
|
|
||||||
format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](red) ($ahead_behind$stashed)]($style)";
|
|
||||||
style = "bold #a6e3a1";
|
|
||||||
conflicted = "";
|
|
||||||
untracked = "";
|
|
||||||
modified = "";
|
|
||||||
staged = "";
|
|
||||||
renamed = "";
|
|
||||||
deleted = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Command duration module
|
|
||||||
cmd_duration = {
|
|
||||||
format = "[$duration]($style)";
|
|
||||||
style = "bold #cdd6f4";
|
|
||||||
min_time = 5000; # Only show if command takes longer than 5 seconds
|
|
||||||
};
|
|
||||||
|
|
||||||
# Character module (prompt symbol)
|
|
||||||
character = {
|
|
||||||
success_symbol = "[└──────⇴ ](bold #a6e3a1)";
|
|
||||||
error_symbol = "[└──────⇴ ](bold #f38ba8)";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix_shell = {
|
|
||||||
format = "[$symbol$state( ($name))]($style)";
|
|
||||||
symbol = "U+02744";
|
|
||||||
style = "bold #89dceb";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/fastfetch/config.jsonc".source = ./fastfetch.jsonc;
|
|
||||||
".config/tabiew/theme.toml".source = ./tabiew.toml;
|
|
||||||
".config/kitty/tab_bar.py".source = ./tab_bar.py;
|
|
||||||
".hushlogin" = lib.mkIf isDarwin { text = ""; }; # Suppress Login
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,10 +11,11 @@
|
|||||||
../../nixos/roles/gitea.nix
|
../../nixos/roles/gitea.nix
|
||||||
../../nixos/roles/vaultwarden.nix
|
../../nixos/roles/vaultwarden.nix
|
||||||
../../nixos/roles/frontpage
|
../../nixos/roles/frontpage
|
||||||
../../nixos/roles/paperless-ngx.nix
|
#../../nixos/roles/paperless-ngx.nix
|
||||||
../../nixos/roles/octoprint.nix
|
../../nixos/roles/octoprint.nix
|
||||||
../../nixos/roles/matrix/postgres-backup.nix
|
../../nixos/roles/matrix/postgres-backup.nix
|
||||||
../../nixos/roles/kanidm.nix
|
../../nixos/roles/kanidm.nix
|
||||||
|
../../nixos/roles/ollama.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
|||||||
@@ -33,10 +33,12 @@
|
|||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.desktopManager.plasma6.enable = false;
|
services = {
|
||||||
services.displayManager.sddm = {
|
desktopManager.plasma6.enable = false;
|
||||||
enable = false;
|
displayManager.sddm = {
|
||||||
wayland.enable = true;
|
enable = false;
|
||||||
|
wayland.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.pathsToLink = [
|
environment.pathsToLink = [
|
||||||
@@ -45,4 +47,7 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
system.stateVersion = "26.11";
|
system.stateVersion = "26.11";
|
||||||
|
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
users.users.phil.extraGroups = [ "docker" ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,6 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../nixos/roles/monitoring.nix
|
|
||||||
../../nixos/roles/matrix.nix
|
|
||||||
../../nixos/roles/postgresql.nix
|
|
||||||
../../nixos/roles/wyl.nix
|
|
||||||
../../nixos/roles/adguard.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../nixos/roles/gitea.nix
|
|
||||||
../../nixos/roles/filebrowser.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
|||||||
@@ -5,38 +5,41 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
loader.grub = {
|
loader.grub = {
|
||||||
enable = true;
|
enable = true;
|
||||||
device = "/dev/vda";
|
device = "/dev/vda";
|
||||||
};
|
};
|
||||||
|
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = [
|
availableKernelModules = [
|
||||||
"ata_piix"
|
"ata_piix"
|
||||||
"virtio_pci"
|
"virtio_pci"
|
||||||
"virtio_scsi"
|
"virtio_scsi"
|
||||||
"virtio_blk"
|
"virtio_blk"
|
||||||
"xhci_pci"
|
"xhci_pci"
|
||||||
"sr_mod"
|
"sr_mod"
|
||||||
];
|
];
|
||||||
kernelModules = [ ];
|
kernelModules = [ ];
|
||||||
};
|
};
|
||||||
kernelModules = [ ];
|
kernelModules = [ ];
|
||||||
extraModulePackages = [ ];
|
extraModulePackages = [ ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/" = {
|
"/" = {
|
||||||
device = "/dev/disk/by-label/NIXROOT";
|
device = "/dev/disk/by-label/NIXROOT";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
"/boot" = {
|
"/boot" = {
|
||||||
device = "/dev/disk/by-label/NIXBOOT";
|
device = "/dev/disk/by-label/NIXBOOT";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [ "fmask=0022" "dmask=0022" ];
|
options = [
|
||||||
|
"fmask=0022"
|
||||||
|
"dmask=0022"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
|||||||
@@ -12,9 +12,5 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
accent = "sapphire";
|
accent = "sapphire";
|
||||||
};
|
};
|
||||||
fcitx5.enable = false;
|
|
||||||
forgejo.enable = false;
|
|
||||||
gitea.enable = false;
|
|
||||||
sddm.enable = false;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixpkgs.config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
permittedInsecurePackages = [ "olm-3.2.16" ];
|
||||||
|
};
|
||||||
|
|
||||||
documentation = {
|
documentation = {
|
||||||
enable = true;
|
enable = true;
|
||||||
doc.enable = false;
|
doc.enable = false;
|
||||||
@@ -80,6 +85,8 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [ git ];
|
||||||
|
|
||||||
security = lib.mkIf (!isServer) {
|
security = lib.mkIf (!isServer) {
|
||||||
pam.services.swaylock = { };
|
pam.services.swaylock = { };
|
||||||
polkit.enable = true;
|
polkit.enable = true;
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
{ ... }:
|
{ lib, ... }:
|
||||||
{
|
{
|
||||||
boot = {
|
boot = {
|
||||||
plymouth = {
|
plymouth = {
|
||||||
@@ -15,6 +15,6 @@
|
|||||||
"udev.log_priority=3"
|
"udev.log_priority=3"
|
||||||
"rd.systemd.show_status=auto"
|
"rd.systemd.show_status=auto"
|
||||||
];
|
];
|
||||||
loader.timeout = 0;
|
loader.timeout = lib.mkDefault 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+181
-147
@@ -2,6 +2,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
|
primaryUser,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
@@ -36,6 +37,9 @@ in
|
|||||||
owner = "gitea";
|
owner = "gitea";
|
||||||
group = "gitea";
|
group = "gitea";
|
||||||
};
|
};
|
||||||
|
"gitea/runnerToken" = {
|
||||||
|
mode = "0444";
|
||||||
|
};
|
||||||
"kanidm_gitea_secret" = {
|
"kanidm_gitea_secret" = {
|
||||||
owner = "gitea";
|
owner = "gitea";
|
||||||
group = "gitea";
|
group = "gitea";
|
||||||
@@ -43,169 +47,199 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.postgresql = {
|
systemd.services = {
|
||||||
enable = true;
|
gitea-db-password = {
|
||||||
package = pkgs.postgresql_14;
|
description = "Set gitea postgres user password";
|
||||||
ensureDatabases = [ "gitea" ];
|
requires = [ "postgresql.service" ];
|
||||||
ensureUsers = [
|
after = [ "postgresql.service" ];
|
||||||
{
|
before = [ "gitea.service" ];
|
||||||
name = "gitea";
|
wantedBy = [ "gitea.service" ];
|
||||||
ensureDBOwnership = true;
|
serviceConfig = {
|
||||||
}
|
Type = "oneshot";
|
||||||
];
|
User = "postgres";
|
||||||
authentication = lib.mkOverride 10 ''
|
RemainAfterExit = true;
|
||||||
local all all trust
|
};
|
||||||
host all all 127.0.0.1/32 md5
|
script = ''
|
||||||
host all all ::1/128 md5
|
pass=$(cat ${config.sops.secrets."gitea/dbPassword".path})
|
||||||
'';
|
${pkgs.postgresql_14}/bin/psql -c \
|
||||||
};
|
"ALTER USER gitea WITH PASSWORD '$pass';"
|
||||||
|
'';
|
||||||
systemd.services.gitea-db-password = {
|
|
||||||
description = "Set gitea postgres user password";
|
|
||||||
requires = [ "postgresql.service" ];
|
|
||||||
after = [ "postgresql.service" ];
|
|
||||||
before = [ "gitea.service" ];
|
|
||||||
wantedBy = [ "gitea.service" ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
User = "postgres";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
};
|
||||||
script = ''
|
|
||||||
pass=$(cat ${config.sops.secrets."gitea/dbPassword".path})
|
gitea.preStart = lib.mkAfter ''
|
||||||
${pkgs.postgresql_14}/bin/psql -c \
|
themeDir="${config.services.gitea.stateDir}/custom/public/assets/css"
|
||||||
"ALTER USER gitea WITH PASSWORD '$pass';"
|
mkdir -p "$themeDir"
|
||||||
|
for f in ${giteaTheme}/*.css; do
|
||||||
|
name=$(basename "$f")
|
||||||
|
ln -sf "$f" "$themeDir/$name"
|
||||||
|
done
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
services.gitea = {
|
services = {
|
||||||
enable = true;
|
postgresql = {
|
||||||
package = pkgs.gitea;
|
|
||||||
user = "gitea";
|
|
||||||
group = "gitea";
|
|
||||||
|
|
||||||
lfs = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
contentDir = "/storage/fast/lfs";
|
package = pkgs.postgresql_14;
|
||||||
|
ensureDatabases = [ "gitea" ];
|
||||||
|
ensureUsers = [
|
||||||
|
{
|
||||||
|
name = "gitea";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
authentication = lib.mkOverride 10 ''
|
||||||
|
local all all trust
|
||||||
|
host all all 127.0.0.1/32 md5
|
||||||
|
host all all ::1/128 md5
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
database = {
|
gitea = {
|
||||||
type = "postgres";
|
enable = true;
|
||||||
host = "127.0.0.1";
|
package = pkgs.gitea;
|
||||||
port = 5432;
|
|
||||||
name = "gitea";
|
|
||||||
user = "gitea";
|
user = "gitea";
|
||||||
passwordFile = config.sops.secrets."gitea/dbPassword".path;
|
group = "gitea";
|
||||||
|
|
||||||
|
lfs = {
|
||||||
|
enable = true;
|
||||||
|
contentDir = "/storage/fast/lfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
database = {
|
||||||
|
type = "postgres";
|
||||||
|
host = "127.0.0.1";
|
||||||
|
port = 5432;
|
||||||
|
name = "gitea";
|
||||||
|
user = "gitea";
|
||||||
|
passwordFile = config.sops.secrets."gitea/dbPassword".path;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
DOMAIN = domain;
|
||||||
|
HTTP_ADDR = "0.0.0.0";
|
||||||
|
HTTP_PORT = httpPort;
|
||||||
|
SSH_PORT = sshPort;
|
||||||
|
SSH_LISTEN_PORT = sshPort;
|
||||||
|
ROOT_URL = "https://${domain}/";
|
||||||
|
DISABLE_SSH = false;
|
||||||
|
START_SSH_SERVER = true;
|
||||||
|
LFS_START_SERVER = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
metrics = {
|
||||||
|
ENABLED = true;
|
||||||
|
ENABLED_ISSUE_BY_LABEL = true;
|
||||||
|
ENABLED_ISSUE_BY_REPOSITORY = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ui = {
|
||||||
|
DEFAULT_THEME = "catppuccin-mocha-green";
|
||||||
|
THEMES = lib.concatStringsSep "," [
|
||||||
|
# built-in
|
||||||
|
"gitea"
|
||||||
|
"arc-green"
|
||||||
|
# latte
|
||||||
|
"catppuccin-latte-blue"
|
||||||
|
"catppuccin-latte-flamingo"
|
||||||
|
"catppuccin-latte-green"
|
||||||
|
"catppuccin-latte-lavender"
|
||||||
|
"catppuccin-latte-maroon"
|
||||||
|
"catppuccin-latte-mauve"
|
||||||
|
"catppuccin-latte-peach"
|
||||||
|
"catppuccin-latte-pink"
|
||||||
|
"catppuccin-latte-red"
|
||||||
|
"catppuccin-latte-rosewater"
|
||||||
|
"catppuccin-latte-sapphire"
|
||||||
|
"catppuccin-latte-sky"
|
||||||
|
"catppuccin-latte-teal"
|
||||||
|
"catppuccin-latte-yellow"
|
||||||
|
# frappe
|
||||||
|
"catppuccin-frappe-blue"
|
||||||
|
"catppuccin-frappe-flamingo"
|
||||||
|
"catppuccin-frappe-green"
|
||||||
|
"catppuccin-frappe-lavender"
|
||||||
|
"catppuccin-frappe-maroon"
|
||||||
|
"catppuccin-frappe-mauve"
|
||||||
|
"catppuccin-frappe-peach"
|
||||||
|
"catppuccin-frappe-pink"
|
||||||
|
"catppuccin-frappe-red"
|
||||||
|
"catppuccin-frappe-rosewater"
|
||||||
|
"catppuccin-frappe-sapphire"
|
||||||
|
"catppuccin-frappe-sky"
|
||||||
|
"catppuccin-frappe-teal"
|
||||||
|
"catppuccin-frappe-yellow"
|
||||||
|
# macchiato
|
||||||
|
"catppuccin-macchiato-blue"
|
||||||
|
"catppuccin-macchiato-flamingo"
|
||||||
|
"catppuccin-macchiato-green"
|
||||||
|
"catppuccin-macchiato-lavender"
|
||||||
|
"catppuccin-macchiato-maroon"
|
||||||
|
"catppuccin-macchiato-mauve"
|
||||||
|
"catppuccin-macchiato-peach"
|
||||||
|
"catppuccin-macchiato-pink"
|
||||||
|
"catppuccin-macchiato-red"
|
||||||
|
"catppuccin-macchiato-rosewater"
|
||||||
|
"catppuccin-macchiato-sapphire"
|
||||||
|
"catppuccin-macchiato-sky"
|
||||||
|
"catppuccin-macchiato-teal"
|
||||||
|
"catppuccin-macchiato-yellow"
|
||||||
|
# mocha
|
||||||
|
"catppuccin-mocha-blue"
|
||||||
|
"catppuccin-mocha-flamingo"
|
||||||
|
"catppuccin-mocha-green"
|
||||||
|
"catppuccin-mocha-lavender"
|
||||||
|
"catppuccin-mocha-maroon"
|
||||||
|
"catppuccin-mocha-mauve"
|
||||||
|
"catppuccin-mocha-peach"
|
||||||
|
"catppuccin-mocha-pink"
|
||||||
|
"catppuccin-mocha-red"
|
||||||
|
"catppuccin-mocha-rosewater"
|
||||||
|
"catppuccin-mocha-sapphire"
|
||||||
|
"catppuccin-mocha-sky"
|
||||||
|
"catppuccin-mocha-teal"
|
||||||
|
"catppuccin-mocha-yellow"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
settings = {
|
gitea-actions-runner.instances."cyper_nix" = {
|
||||||
server = {
|
enable = true;
|
||||||
DOMAIN = domain;
|
url = "https://git.cyperpunk.de";
|
||||||
HTTP_ADDR = "0.0.0.0";
|
tokenFile = config.sops.secrets."gitea/runnerToken".path;
|
||||||
HTTP_PORT = httpPort;
|
name = "cyper-controller";
|
||||||
SSH_PORT = sshPort;
|
labels = [ "nix:host" ];
|
||||||
SSH_LISTEN_PORT = sshPort;
|
|
||||||
ROOT_URL = "https://${domain}/";
|
|
||||||
DISABLE_SSH = false;
|
|
||||||
START_SSH_SERVER = true;
|
|
||||||
LFS_START_SERVER = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
metrics = {
|
hostPackages = with pkgs; [
|
||||||
ENABLED = true;
|
bash
|
||||||
ENABLED_ISSUE_BY_LABEL = true;
|
coreutils
|
||||||
ENABLED_ISSUE_BY_REPOSITORY = true;
|
curl
|
||||||
};
|
gawk
|
||||||
|
gitMinimal
|
||||||
ui = {
|
gnused
|
||||||
DEFAULT_THEME = "catppuccin-mocha-green";
|
nodejs
|
||||||
THEMES = lib.concatStringsSep "," [
|
wget
|
||||||
# built-in
|
nix
|
||||||
"gitea"
|
];
|
||||||
"arc-green"
|
|
||||||
# latte
|
|
||||||
"catppuccin-latte-blue"
|
|
||||||
"catppuccin-latte-flamingo"
|
|
||||||
"catppuccin-latte-green"
|
|
||||||
"catppuccin-latte-lavender"
|
|
||||||
"catppuccin-latte-maroon"
|
|
||||||
"catppuccin-latte-mauve"
|
|
||||||
"catppuccin-latte-peach"
|
|
||||||
"catppuccin-latte-pink"
|
|
||||||
"catppuccin-latte-red"
|
|
||||||
"catppuccin-latte-rosewater"
|
|
||||||
"catppuccin-latte-sapphire"
|
|
||||||
"catppuccin-latte-sky"
|
|
||||||
"catppuccin-latte-teal"
|
|
||||||
"catppuccin-latte-yellow"
|
|
||||||
# frappe
|
|
||||||
"catppuccin-frappe-blue"
|
|
||||||
"catppuccin-frappe-flamingo"
|
|
||||||
"catppuccin-frappe-green"
|
|
||||||
"catppuccin-frappe-lavender"
|
|
||||||
"catppuccin-frappe-maroon"
|
|
||||||
"catppuccin-frappe-mauve"
|
|
||||||
"catppuccin-frappe-peach"
|
|
||||||
"catppuccin-frappe-pink"
|
|
||||||
"catppuccin-frappe-red"
|
|
||||||
"catppuccin-frappe-rosewater"
|
|
||||||
"catppuccin-frappe-sapphire"
|
|
||||||
"catppuccin-frappe-sky"
|
|
||||||
"catppuccin-frappe-teal"
|
|
||||||
"catppuccin-frappe-yellow"
|
|
||||||
# macchiato
|
|
||||||
"catppuccin-macchiato-blue"
|
|
||||||
"catppuccin-macchiato-flamingo"
|
|
||||||
"catppuccin-macchiato-green"
|
|
||||||
"catppuccin-macchiato-lavender"
|
|
||||||
"catppuccin-macchiato-maroon"
|
|
||||||
"catppuccin-macchiato-mauve"
|
|
||||||
"catppuccin-macchiato-peach"
|
|
||||||
"catppuccin-macchiato-pink"
|
|
||||||
"catppuccin-macchiato-red"
|
|
||||||
"catppuccin-macchiato-rosewater"
|
|
||||||
"catppuccin-macchiato-sapphire"
|
|
||||||
"catppuccin-macchiato-sky"
|
|
||||||
"catppuccin-macchiato-teal"
|
|
||||||
"catppuccin-macchiato-yellow"
|
|
||||||
# mocha
|
|
||||||
"catppuccin-mocha-blue"
|
|
||||||
"catppuccin-mocha-flamingo"
|
|
||||||
"catppuccin-mocha-green"
|
|
||||||
"catppuccin-mocha-lavender"
|
|
||||||
"catppuccin-mocha-maroon"
|
|
||||||
"catppuccin-mocha-mauve"
|
|
||||||
"catppuccin-mocha-peach"
|
|
||||||
"catppuccin-mocha-pink"
|
|
||||||
"catppuccin-mocha-red"
|
|
||||||
"catppuccin-mocha-rosewater"
|
|
||||||
"catppuccin-mocha-sapphire"
|
|
||||||
"catppuccin-mocha-sky"
|
|
||||||
"catppuccin-mocha-teal"
|
|
||||||
"catppuccin-mocha-yellow"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# symlink catppuccin css files into gitea's custom dir on every service start
|
users = {
|
||||||
systemd.services.gitea.preStart = lib.mkAfter ''
|
users = {
|
||||||
themeDir="${config.services.gitea.stateDir}/custom/public/assets/css"
|
gitea = {
|
||||||
mkdir -p "$themeDir"
|
isSystemUser = true;
|
||||||
for f in ${giteaTheme}/*.css; do
|
group = "gitea";
|
||||||
name=$(basename "$f")
|
home = "/var/lib/gitea";
|
||||||
ln -sf "$f" "$themeDir/$name"
|
createHome = true;
|
||||||
done
|
};
|
||||||
'';
|
|
||||||
|
|
||||||
users.users.gitea = {
|
postgres.extraGroups = [ "gitea" ];
|
||||||
isSystemUser = true;
|
};
|
||||||
group = "gitea";
|
groups = {
|
||||||
home = "/var/lib/gitea";
|
gitea = { };
|
||||||
createHome = true;
|
};
|
||||||
};
|
};
|
||||||
users.groups.gitea = { };
|
|
||||||
users.users.postgres.extraGroups = [ "gitea" ];
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
httpPort
|
httpPort
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
{
|
{
|
||||||
nixpkgs.config.permittedInsecurePackages = [ "olm-3.2.16" ];
|
|
||||||
|
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
discord_bot_token = {
|
discord_bot_token = {
|
||||||
owner = "mautrix-discord";
|
owner = "mautrix-discord";
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
_: {
|
||||||
|
services.ollama = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
host = "0.0.0.0";
|
||||||
|
port = 11434;
|
||||||
|
|
||||||
|
openFirewall = true;
|
||||||
|
|
||||||
|
loadModels = [
|
||||||
|
"llama3.2:3b"
|
||||||
|
"qwen2.5:3b"
|
||||||
|
"deepseek-r1:1.5b"
|
||||||
|
"gemma4:e2b"
|
||||||
|
];
|
||||||
|
|
||||||
|
syncModels = true;
|
||||||
|
|
||||||
|
environmentVariables = {
|
||||||
|
OLLAMA_CONTEXT_LENGTH = "16384";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
services.unifi = {
|
services.unifi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
unifiPackage = pkgs.unifi;
|
unifiPackage = pkgs.unifi;
|
||||||
|
|||||||
@@ -6,4 +6,5 @@ final: prev:
|
|||||||
oidcwarden = final.callPackage ./oidcwarden.nix {
|
oidcwarden = final.callPackage ./oidcwarden.nix {
|
||||||
inherit (prev) vaultwarden;
|
inherit (prev) vaultwarden;
|
||||||
};
|
};
|
||||||
|
netradiant-custom = final.callPackage ./netradiant-custom.nix { };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
fetchgit,
|
||||||
|
pkg-config,
|
||||||
|
makeWrapper,
|
||||||
|
subversion,
|
||||||
|
git,
|
||||||
|
unzip,
|
||||||
|
wget,
|
||||||
|
qt5,
|
||||||
|
glib,
|
||||||
|
libxml2,
|
||||||
|
zlib,
|
||||||
|
libpng,
|
||||||
|
assimp,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
xonoticPack = fetchgit {
|
||||||
|
url = "https://gitlab.com/xonotic/netradiant-xonoticpack.git";
|
||||||
|
rev = "b9b95499e6bd1082a4eaff78664f9243cbcbb2e1";
|
||||||
|
hash = "sha256-boSWipgiQzXHFJ0KGpd8xbwik3hKQK3IKSNByUaUHBk=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "netradiant-custom";
|
||||||
|
version = "20260114";
|
||||||
|
__structuredAttrs = true;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "Garux";
|
||||||
|
repo = "netradiant-custom";
|
||||||
|
rev = version;
|
||||||
|
hash = "sha256-dlJn10Y45mx3UwxvB8mzw5Ok8LvvxVpMwDAdHXSt5dk=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
makeWrapper
|
||||||
|
subversion
|
||||||
|
git
|
||||||
|
unzip
|
||||||
|
wget
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
qt5.qtbase
|
||||||
|
qt5.qtsvg
|
||||||
|
glib
|
||||||
|
libxml2
|
||||||
|
zlib
|
||||||
|
libpng
|
||||||
|
assimp
|
||||||
|
];
|
||||||
|
|
||||||
|
makeFlags = [
|
||||||
|
"DOWNLOAD_GAMEPACKS=no"
|
||||||
|
"DEPENDENCIES_CHECK=off"
|
||||||
|
"BUILD=release"
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
dontWrapQtApps = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/opt/netradiant-custom
|
||||||
|
cp -r install/* $out/opt/netradiant-custom/
|
||||||
|
|
||||||
|
# Replicates what upstream's install-gamepack.sh does:
|
||||||
|
# - files in <pack>/games/*.game go into gamepacks/games/
|
||||||
|
# - directories named <pack>/*.game go into gamepacks/ directly
|
||||||
|
mkdir -p $out/opt/netradiant-custom/gamepacks/games
|
||||||
|
if [ -d "${xonoticPack}/games" ]; then
|
||||||
|
cp -r ${xonoticPack}/games/*.game $out/opt/netradiant-custom/gamepacks/games/
|
||||||
|
fi
|
||||||
|
for d in ${xonoticPack}/*.game; do
|
||||||
|
cp -r "$d" $out/opt/netradiant-custom/gamepacks/
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p $out/bin
|
||||||
|
makeWrapper $out/opt/netradiant-custom/radiant.x86_64 $out/bin/netradiant-custom \
|
||||||
|
--chdir "$out/opt/netradiant-custom" \
|
||||||
|
--prefix QT_PLUGIN_PATH : "${qt5.qtbase}/${qt5.qtbase.qtPluginPrefix}" \
|
||||||
|
--set QT_QPA_PLATFORM xcb
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Cross-platform level editor for id Tech based games (NetRadiant fork)";
|
||||||
|
homepage = "https://github.com/Garux/netradiant-custom";
|
||||||
|
license = lib.licenses.gpl2Plus;
|
||||||
|
mainProgram = "netradiant-custom";
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -30,6 +30,7 @@ gitea:
|
|||||||
internalToken: ENC[AES256_GCM,data:7N8TkPNb1YdCk2uAcCvVd2pKRVOf85//DYxAvz0UCg1E8ccEI5630xVyKafDFiSTM4ER7xiYelartzXL0jLWSf3QNOjSHUP8TIAz4bJRAZUJPxO917bURSLGGe7WEOfONzqy3Ts5QhrJ,iv:DiIs1ytlwLvqD/Ejep6m2fmpSqdFZkxBcgLNt6+29jY=,tag:8jsEcOkH0p+1mP9cnVjiDQ==,type:str]
|
internalToken: ENC[AES256_GCM,data:7N8TkPNb1YdCk2uAcCvVd2pKRVOf85//DYxAvz0UCg1E8ccEI5630xVyKafDFiSTM4ER7xiYelartzXL0jLWSf3QNOjSHUP8TIAz4bJRAZUJPxO917bURSLGGe7WEOfONzqy3Ts5QhrJ,iv:DiIs1ytlwLvqD/Ejep6m2fmpSqdFZkxBcgLNt6+29jY=,tag:8jsEcOkH0p+1mP9cnVjiDQ==,type:str]
|
||||||
lfsJwtSecret: ENC[AES256_GCM,data:L20mFZ6zwsF3ZUoodarTJV+vhUdLlBrUbHz7FpEzJ2/C6AdFc1ZZcioN3g==,iv:E2C3gg1OYQ46Ae2bGnhF+3uw+q77l+yph3Kd2fxwW9M=,tag:VQkQ4R9S8Dr39rSLhL/X1w==,type:str]
|
lfsJwtSecret: ENC[AES256_GCM,data:L20mFZ6zwsF3ZUoodarTJV+vhUdLlBrUbHz7FpEzJ2/C6AdFc1ZZcioN3g==,iv:E2C3gg1OYQ46Ae2bGnhF+3uw+q77l+yph3Kd2fxwW9M=,tag:VQkQ4R9S8Dr39rSLhL/X1w==,type:str]
|
||||||
mailerPassword: ""
|
mailerPassword: ""
|
||||||
|
runnerToken: ENC[AES256_GCM,data:giY3e3oHqWytgIWfnuKxOfrp8R+u7I0lMzEGnLWXnZWL9aQkVsM1kiF1FNKn/A==,iv:YsQrAKU8pncPeSSosOFn9BjU676KCh956FGC2hnCuac=,tag:+eZ1y6P/85XNPD9gVVNMgA==,type:str]
|
||||||
ssh_private_key: ENC[AES256_GCM,data:R511mVFVk1ogAd5CKk/2P6rtT4NnHIFfKyqeCen545QgcvDqDFmW0rFBmPJyipaya2srJNoWvKJbnvxWtTYeJh2tPAybRMoUicStIFMUn3FPNfjx/WuQFLhKLoU3UOHHPJnkFqkQ9MBqLq2k5K7MVsNNFTxIDCKS1jPgkTmAWjRZ0EFiRXLa+Gvnz3GP5ltgfjDwdPeb5xp0/AqKPD8jea9w5ClR6ckrRHCLsfXhL2e9IaF4B96JlIv4rICLX3HmeIgM2PKl2MnSt8we5z39bBoLSA0yWG6BvpiMBaFqbo7jeHf1SxI6R404/emHhwW3pwSCDrq2ZE1ATG2UmA5NssFcVuaBPBoQer+n5haVYMNpNUp6rtKZeAIbf5JEOXJ6CJqiInfnnzOMNGhGFkGUYkhsy3p6Ti/lmNMPX/xtY+8ZqMwXf5drssm5KgnQ5nDbVqnTWAhoT/D3t+cJVAaXGTGw88fU0X95dZr8vaL/5nBCj1uUdv5cRBJ8PGhqbBX8PoiXrtGooBGhxf6nHbxIneSzG1++MZGo3e1G,iv:D1lgCnZKm3Gyv6cZpQ7zGW7JXN5RCwoaas+LroTkhPc=,tag:WI6Nr1cX8gm5pjFpu/Ok0w==,type:str]
|
ssh_private_key: ENC[AES256_GCM,data:R511mVFVk1ogAd5CKk/2P6rtT4NnHIFfKyqeCen545QgcvDqDFmW0rFBmPJyipaya2srJNoWvKJbnvxWtTYeJh2tPAybRMoUicStIFMUn3FPNfjx/WuQFLhKLoU3UOHHPJnkFqkQ9MBqLq2k5K7MVsNNFTxIDCKS1jPgkTmAWjRZ0EFiRXLa+Gvnz3GP5ltgfjDwdPeb5xp0/AqKPD8jea9w5ClR6ckrRHCLsfXhL2e9IaF4B96JlIv4rICLX3HmeIgM2PKl2MnSt8we5z39bBoLSA0yWG6BvpiMBaFqbo7jeHf1SxI6R404/emHhwW3pwSCDrq2ZE1ATG2UmA5NssFcVuaBPBoQer+n5haVYMNpNUp6rtKZeAIbf5JEOXJ6CJqiInfnnzOMNGhGFkGUYkhsy3p6Ti/lmNMPX/xtY+8ZqMwXf5drssm5KgnQ5nDbVqnTWAhoT/D3t+cJVAaXGTGw88fU0X95dZr8vaL/5nBCj1uUdv5cRBJ8PGhqbBX8PoiXrtGooBGhxf6nHbxIneSzG1++MZGo3e1G,iv:D1lgCnZKm3Gyv6cZpQ7zGW7JXN5RCwoaas+LroTkhPc=,tag:WI6Nr1cX8gm5pjFpu/Ok0w==,type:str]
|
||||||
ssh_github_key: ENC[AES256_GCM,data:vZAH4cRDsgGXLAppQKOyUPOvmBJZ27bujMGz4hQ8tt0xhGFUP28llwGZz/VRuU02Yv4alLgVWBAIPuyhZT9f35KnjIR1Mmb7HXk/6oaNM59/lBiISLrnOpC10WmJ9O5krKdxwP8ZDvHA34B0s+oYNkTNXiU0S8AVg3icploax7ylKH5Dorj53kjdYSTjd8KN6ZsgCKmcz97+GnP0IgdmauyNL7e+kv9WIfE8Xx1kGvC8WVnidX2YhSxm6vt8l60eUj9etRigU88oFYTDZ+mIf4lucSpzaLZutz2fM/16D/o9SS7mmTrEllj2S+IXc9ZZTRKKDLbW+yv0XUi0XZi+OHAdZScjS54NZKyT9uWrc/IDJHammGsoHRQpHZtbGhkeFi/KdJsYBsWItslXjM0xJVtFIM2tMnd10kv9UGuXsSl9J4NC0rpz3aXnQqG4ZAhMjN9D/DTJpB4K0pcFyd2FDWdrbKq5iPfnU/V6ecnHPML6wCt6gua/LdK1MWoG3l2SqwMLYj1r7UW5fQZqSw1EK0BAtp9cQMLBL/2w8ykMfWpLekE=,iv:gcinU7xOoXQkFVkLNB3sQYHAcZy3pZN+bDRIq4sspys=,tag:yawgAHBKIkGpnKPHsRId4g==,type:str]
|
ssh_github_key: ENC[AES256_GCM,data:vZAH4cRDsgGXLAppQKOyUPOvmBJZ27bujMGz4hQ8tt0xhGFUP28llwGZz/VRuU02Yv4alLgVWBAIPuyhZT9f35KnjIR1Mmb7HXk/6oaNM59/lBiISLrnOpC10WmJ9O5krKdxwP8ZDvHA34B0s+oYNkTNXiU0S8AVg3icploax7ylKH5Dorj53kjdYSTjd8KN6ZsgCKmcz97+GnP0IgdmauyNL7e+kv9WIfE8Xx1kGvC8WVnidX2YhSxm6vt8l60eUj9etRigU88oFYTDZ+mIf4lucSpzaLZutz2fM/16D/o9SS7mmTrEllj2S+IXc9ZZTRKKDLbW+yv0XUi0XZi+OHAdZScjS54NZKyT9uWrc/IDJHammGsoHRQpHZtbGhkeFi/KdJsYBsWItslXjM0xJVtFIM2tMnd10kv9UGuXsSl9J4NC0rpz3aXnQqG4ZAhMjN9D/DTJpB4K0pcFyd2FDWdrbKq5iPfnU/V6ecnHPML6wCt6gua/LdK1MWoG3l2SqwMLYj1r7UW5fQZqSw1EK0BAtp9cQMLBL/2w8ykMfWpLekE=,iv:gcinU7xOoXQkFVkLNB3sQYHAcZy3pZN+bDRIq4sspys=,tag:yawgAHBKIkGpnKPHsRId4g==,type:str]
|
||||||
sops:
|
sops:
|
||||||
@@ -43,7 +44,7 @@ sops:
|
|||||||
6fuez+zApathZfl14w41kAUojPWBznnxDqYtNvzVVLXwnpp3BMx+7w==
|
6fuez+zApathZfl14w41kAUojPWBznnxDqYtNvzVVLXwnpp3BMx+7w==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
recipient: age10pyhca0jy75wtqv5hrn0gf0jcam5272zx9h73a8xwwaxyfq89c0qs5dr9t
|
recipient: age10pyhca0jy75wtqv5hrn0gf0jcam5272zx9h73a8xwwaxyfq89c0qs5dr9t
|
||||||
lastmodified: "2026-05-27T20:55:18Z"
|
lastmodified: "2026-06-22T18:17:22Z"
|
||||||
mac: ENC[AES256_GCM,data:qHJwYNk4rR37KAKFKGpMfkY/Q3VJ+15yM3cUUaF6/MrHn5BtE6aoV9jjxoXbftTjNTmRRw37M4rVJJjaw+5baWwLrHpBGD5vNJC3HLwH9Mx/UmL9m90dpUWxQN9U5ah3jcg5uZzIZWhC32YNNYiuBz+qK7FwtxgEoXPbxVuh8zM=,iv:QTKO8cF5wIad/yIIs4a4/WC0lxIrCgYNZ9vfMiI28Ic=,tag:cKdCiu9w4pvpxAuMmZxDTA==,type:str]
|
mac: ENC[AES256_GCM,data:nIGjfBCia9y1+f0dE6TRK6pBLo3B+vqmK88t5xrCY9j+SIzPvCc2Iv6h8AXSfunvIZpxODhn+PmX2FBwa9TtNVePi/Iywu43fRGHz67gSVYTyTBoLRAxqW/7hEvRMXu0ECUfAPzQCq3rd4iWjMXyIYU/FsX9g4NlIno0zcCV5cs=,iv:M4FBoxzojH01hScrRoET3AwmG3qevhkxiET+W94drh0=,tag:rHf7wbkp64FKybjZL0EDDQ==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.13.1
|
version: 3.13.1
|
||||||
|
|||||||
Reference in New Issue
Block a user