Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5222077eac | |||
| d122263dfa | |||
| 86e020936c | |||
| c00b9dc204 | |||
| 2505485996 | |||
| f41ef34361 | |||
| 4cacb69c9c | |||
| 9880ba23aa | |||
| 628dfaba31 | |||
| 9a93834dbb | |||
| 81cfe4ff2b | |||
| 7f3b6be59b | |||
| c49a0f1420 | |||
| 323ed6ec9e | |||
| 2eb594b625 | |||
| 15f6a5d7d3 | |||
| a92ff8fe58 | |||
| c242370ae8 | |||
| 3cbabde86a | |||
| aa673196ff | |||
| 8125de7ce6 | |||
| 42e80ea537 | |||
| a24be3309b | |||
| d2ad80da6f | |||
| 49606c8711 | |||
| 48260c392b | |||
| e1cf4f3647 | |||
| 9640b433a4 | |||
| f9f9816fe9 | |||
| 297589362f | |||
| 9c3cb1f360 | |||
| d8e6a816c9 | |||
| 923cb64277 | |||
| e9c223259b | |||
| b021b555eb | |||
| 59ebcab94f | |||
| 7a25ac669f | |||
| 9f2dc8314a | |||
| aaf1a17b33 | |||
| 97f475f131 | |||
| 48eedcabd3 | |||
| 0cf4401813 | |||
| 888264a491 |
@@ -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,46 @@
|
||||
name: Release ISOs
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflows: ["CI"]
|
||||
types:
|
||||
- completed
|
||||
branches: ["main"]
|
||||
|
||||
jobs:
|
||||
build-isos:
|
||||
runs-on: nix
|
||||
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=$(readlink -f $(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
|
||||
@@ -8,14 +8,8 @@
|
||||
./settings.nix
|
||||
./homebrew.nix
|
||||
./yabai.nix
|
||||
./fonts.nix
|
||||
];
|
||||
|
||||
home-manager.users.${primaryUser}.targets.darwin = {
|
||||
linkApps.enable = true;
|
||||
copyApps.enable = false;
|
||||
};
|
||||
|
||||
# nix config
|
||||
nix = {
|
||||
settings = {
|
||||
@@ -56,9 +50,6 @@
|
||||
info.enable = false; # Skip info pages
|
||||
};
|
||||
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
# homebrew installation manager
|
||||
nix-homebrew = {
|
||||
user = primaryUser;
|
||||
|
||||
+32
-31
@@ -1,27 +1,27 @@
|
||||
{ self, ... }:
|
||||
{ self, primaryUser, ... }:
|
||||
let
|
||||
hmApps = app: "/Users/${primaryUser}/Applications/Home Manager Apps/${app}.app";
|
||||
sysApps = app: "/System/Applications/${app}.app";
|
||||
apps = app: "/Applications/${app}.app";
|
||||
in
|
||||
{
|
||||
# touch ID for sudo
|
||||
security.pam.services.sudo_local.touchIdAuth = true;
|
||||
|
||||
# system defaults and preferences
|
||||
system = {
|
||||
stateVersion = 6;
|
||||
configurationRevision = self.rev or self.dirtyRev or null;
|
||||
|
||||
startup.chime = false;
|
||||
|
||||
activationScripts = {
|
||||
setWallpaper.text = ''
|
||||
/usr/bin/osascript <<EOF
|
||||
tell application "System Events"
|
||||
tell every desktop
|
||||
set picture to "/Users/phil/Pictures/Wallpapers/Ghost_in_the_Shell.png"
|
||||
end tell
|
||||
activationScripts.setWallpaper.text = ''
|
||||
/usr/bin/osascript <<EOF
|
||||
tell application "System Events"
|
||||
tell every desktop
|
||||
set picture to "/Users/${primaryUser}/Pictures/Wallpapers/Ghost_in_the_Shell.png"
|
||||
end tell
|
||||
EOF
|
||||
'';
|
||||
|
||||
};
|
||||
end tell
|
||||
EOF
|
||||
'';
|
||||
|
||||
defaults = {
|
||||
ActivityMonitor = {
|
||||
@@ -37,20 +37,21 @@
|
||||
launchanim = true;
|
||||
mru-spaces = false;
|
||||
orientation = "left";
|
||||
persistent-apps = [
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/kitty.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/Vesktop.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/Spotify.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/Floorp.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/Obsidian.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/OpenSCAD.app"; }
|
||||
{ app = "/Applications/okular.app"; }
|
||||
{ app = "/Applications/Affinity.app"; }
|
||||
{ app = "/System/Applications/Mail.app"; }
|
||||
{ app = "/System/Applications/Launchpad.app"; }
|
||||
];
|
||||
show-recents = false;
|
||||
mineffect = "genie";
|
||||
persistent-apps = map (app: { inherit app; }) [
|
||||
(hmApps "kitty")
|
||||
(hmApps "Vesktop")
|
||||
(hmApps "Spotify")
|
||||
(hmApps "Floorp")
|
||||
(hmApps "Obsidian")
|
||||
(hmApps "OpenSCAD")
|
||||
(apps "okular")
|
||||
(apps "Affinity")
|
||||
(apps "Element")
|
||||
(sysApps "Mail")
|
||||
(sysApps "Launchpad")
|
||||
];
|
||||
};
|
||||
|
||||
loginwindow = {
|
||||
@@ -59,11 +60,11 @@
|
||||
};
|
||||
|
||||
finder = {
|
||||
AppleShowAllFiles = true; # hidden files
|
||||
AppleShowAllExtensions = true; # file extensions
|
||||
_FXShowPosixPathInTitle = true; # title bar full path
|
||||
ShowPathbar = true; # breadcrumb nav at bottom
|
||||
ShowStatusBar = true; # file count & disk space
|
||||
AppleShowAllFiles = true;
|
||||
AppleShowAllExtensions = true;
|
||||
_FXShowPosixPathInTitle = true;
|
||||
ShowPathbar = true;
|
||||
ShowStatusBar = true;
|
||||
};
|
||||
|
||||
NSGlobalDomain = {
|
||||
|
||||
+1
-64
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }: {
|
||||
_: {
|
||||
services = {
|
||||
yabai = {
|
||||
enable = true;
|
||||
@@ -38,68 +38,5 @@
|
||||
mouse_drop_action = "swap";
|
||||
};
|
||||
};
|
||||
|
||||
# skhd = {
|
||||
# enable = true;
|
||||
# skhdConfig = ''
|
||||
# Application Bindings
|
||||
# cmd - q : open -a kitty
|
||||
# cmd - e : ${pkgs.kitty}/bin/kitty yazi
|
||||
# cmd - o : open -a "Obsidian"
|
||||
# cmd - i : open -a "Floorp"
|
||||
# cmd - g : open -a "Mail"
|
||||
|
||||
# Window Management (using yabai if installed, otherwise basic macOS)
|
||||
#cmd + shift - c : yabai -m window --close || osascript -e 'tell application "System Events" to keystroke "w" using command down'
|
||||
#cmd + shift - v : yabai -m window --toggle float
|
||||
|
||||
# Focus windows (vim-like)
|
||||
# cmd - left : yabai -m window --focus west
|
||||
# cmd - right : yabai -m window --focus east
|
||||
# cmd - up : yabai -m window --focus north
|
||||
# cmd - down : yabai -m window --focus south
|
||||
|
||||
# Move windows to spaces (workspaces)
|
||||
# cmd + shift - 1 : yabai -m window --space 1
|
||||
# cmd + shift - 2 : yabai -m window --space 2
|
||||
# cmd + shift - 3 : yabai -m window --space 3
|
||||
# cmd + shift - 4 : yabai -m window --space 4
|
||||
# cmd + shift - 5 : yabai -m window --space 5
|
||||
# cmd + shift - 6 : yabai -m window --space 6
|
||||
# cmd + shift - 7 : yabai -m window --space 7
|
||||
# cmd + shift - 8 : yabai -m window --space 8
|
||||
# cmd + shift - 9 : yabai -m window --space 9
|
||||
# cmd + shift - 0 : yabai -m window --space 10
|
||||
|
||||
# Switch to spaces (workspaces)
|
||||
# cmd - 1 : yabai -m space --focus 1
|
||||
# cmd - 2 : yabai -m space --focus 2
|
||||
# cmd - 3 : yabai -m space --focus 3
|
||||
# cmd - 4 : yabai -m space --focus 4
|
||||
# cmd - 5 : yabai -m space --focus 5
|
||||
# cmd - 6 : yabai -m space --focus 6
|
||||
# cmd - 7 : yabai -m space --focus 7
|
||||
# cmd - 8 : yabai -m space --focus 8
|
||||
# cmd - 9 : yabai -m space --focus 9
|
||||
# cmd - 0 : yabai -m space --focus 10
|
||||
|
||||
# Screenshot (macOS native)
|
||||
# cmd - z : screencapture -i ~/Pictures/Screenshots/$(date +%s).png
|
||||
# cmd - u : screencapture ~/Pictures/Screenshots/$(date +%s).png
|
||||
|
||||
# Launcher (using Raycast or Spotlight as Rofi alternative)
|
||||
# cmd - r : open -a "Raycast" || osascript -e 'tell application "System Events" to keystroke space using command down'
|
||||
|
||||
# Lock screen
|
||||
# cmd - m : pmset displaysleepnow
|
||||
|
||||
# Toggle layout (if using yabai)
|
||||
# cmd - j : yabai -m space --layout $(yabai -m query --spaces --space | jq -r 'if .type == "bsp" then "float" else "bsp" end')
|
||||
# cmd - p : yabai -m window --toggle split
|
||||
|
||||
# Reload skhd config
|
||||
# cmd + shift - r : skhd --reload
|
||||
# '';
|
||||
# };
|
||||
};
|
||||
}
|
||||
|
||||
Generated
+59
-73
@@ -20,11 +20,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778857089,
|
||||
"narHash": "sha256-TclWRW2SdFeETLaiTG4BA8C8C4m/LppQEldncqyTzAQ=",
|
||||
"lastModified": 1780756231,
|
||||
"narHash": "sha256-tXQxKdG5716uB9/LIkLQqQwHKf5mRSpHoZhz3lyI2Cg=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "ab2b0af63fbc9fb779d684f19149b790978be8a8",
|
||||
"rev": "6ecde03f47172753fe5a2f334f9d3facfb7e6784",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -36,16 +36,16 @@
|
||||
"brew-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1778427648,
|
||||
"narHash": "sha256-pt9KaDGsMyYWB9JeHs4XGHs870f1lOZe3vx9LpVIhUE=",
|
||||
"lastModified": 1781226006,
|
||||
"narHash": "sha256-w4ZTuOnhYiDxjaynrMTASzp802QblBWmo3wpB8wVN4Y=",
|
||||
"owner": "Homebrew",
|
||||
"repo": "brew",
|
||||
"rev": "6f293daa9f9f5832e13b497976335e90509886d7",
|
||||
"rev": "109191be4988470b51a60a5ef1998520aa24c01b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Homebrew",
|
||||
"ref": "5.1.11",
|
||||
"ref": "6.0.1",
|
||||
"repo": "brew",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -57,11 +57,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780154910,
|
||||
"narHash": "sha256-aaGjVFEAJQWB69kok/AthcXpT/9yA5Ag2uYDwdbbj5c=",
|
||||
"lastModified": 1781255309,
|
||||
"narHash": "sha256-n2P5xkAYGylrJ3feu7L6uaCUw/+jW8rk+HO127gDbFA=",
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"rev": "cf8ccac24e24a2a78fe6f36de9c5d5e9860299a4",
|
||||
"rev": "036c78ea4cd8a42c8546c6316a944fd7d59d4341",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -77,11 +77,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779036909,
|
||||
"narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=",
|
||||
"lastModified": 1781761792,
|
||||
"narHash": "sha256-rCPytmKNjctLloB6UgK5CRrHSwV4b0ygxtJLPPp8R14=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "56c666e108467d87d13508936aade6d567f2a501",
|
||||
"rev": "a1fa429e945becaf60468600daf649be4ba0350c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -209,11 +209,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780099287,
|
||||
"narHash": "sha256-efIPwVGtIWIjWcznhaop6XN6HxnOL8800hF6CBNvlqQ=",
|
||||
"lastModified": 1781788787,
|
||||
"narHash": "sha256-YqlTCRRhGvNjcJejPeMuHrYQ/TVhOO2MV/nEGMWb8nk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "7d8127d308c3fb9664f7e643eec944be74ebb37d",
|
||||
"rev": "d456f483f157d4b706416005da226234b9c116ff",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -320,11 +320,11 @@
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780142732,
|
||||
"narHash": "sha256-7sBe6ujnxspLeX7zMSKpGpOuOXGeUmvDV/78CSsY+PQ=",
|
||||
"lastModified": 1781796010,
|
||||
"narHash": "sha256-bIqjZgUfp3vba/C1UJLVqTo8zdpfqMDvuwWrHmqDWm4=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "34fddc949042e45d22bed6cbe72f9a9c838914fa",
|
||||
"rev": "ae1690c2138313d988c81f5c25a9d0b6fadfd3b1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -396,11 +396,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779209205,
|
||||
"narHash": "sha256-asc7NpeB8vD66gvZeYcQkaWOs2X6Jgd29vBtP17vjxo=",
|
||||
"lastModified": 1781442805,
|
||||
"narHash": "sha256-Kt56e6Bq2sfqN8yq1RHsS6z+8QKCZelmhaeQQRtZyqU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"rev": "1cb37fad68dff5f5840010c314fed5809b4ee66f",
|
||||
"rev": "1f90c674d51a1ef83c725cd6d02280b4c969fdf7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -580,11 +580,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779475241,
|
||||
"narHash": "sha256-Nw4DN0A5krWNcPBvuWe5Gz2yuxsUUPiDgtu6SVPJQeU=",
|
||||
"lastModified": 1780251518,
|
||||
"narHash": "sha256-fG9xbb1SOAAJ+2kJRakp3ch+BmA/3dEg/K3PoAZTKkw=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "3cd3972b2ee658a14d2610d8494e09259e530124",
|
||||
"rev": "40ede2e7bdec80ba5d4c443160d905e9f841ae5f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -652,11 +652,11 @@
|
||||
"brew-src": "brew-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778851564,
|
||||
"narHash": "sha256-p8wzcnpB2Iys+QzAKM9/Eyw/pUyqCO3sw/NCnDH4dTE=",
|
||||
"lastModified": 1781389246,
|
||||
"narHash": "sha256-ORqLAo/hoJdsZC7UPAuEHev6S0+XIqKEC7vjo5prz1k=",
|
||||
"owner": "zhaofengli",
|
||||
"repo": "nix-homebrew",
|
||||
"rev": "b3a87b4793205cc111f3c61e25e018ffac3b8039",
|
||||
"rev": "de7953a08ed4bb9245be043e468561c17b89130d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -675,11 +675,11 @@
|
||||
"nixpkgs-nixcord": "nixpkgs-nixcord"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780158792,
|
||||
"narHash": "sha256-tAGrRIQOi11zwl7UOLKkNsy3owVTE+/lDU1MJT9K2Qw=",
|
||||
"lastModified": 1781775854,
|
||||
"narHash": "sha256-0eb1+zKSTwgD3qsBm7UiuRabahHQNkTP94Z/s3nMK60=",
|
||||
"owner": "kaylorben",
|
||||
"repo": "nixcord",
|
||||
"rev": "d0a08d06b3a00b1038b1780366180068af7c1489",
|
||||
"rev": "b92ceb7923c87dfcfcf84415407b0ca63e17548b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -726,11 +726,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1779357205,
|
||||
"narHash": "sha256-cCO8aTqss5x9Ky8GWkpY0Hy5fyTZEbtifSUV8QjSzic=",
|
||||
"lastModified": 1780749050,
|
||||
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f83fc3c307e74bc5fd5adb7eb6b8b13ffd2a36e1",
|
||||
"rev": "a799d3e3886da994fa307f817a6bc705ae538eeb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -757,27 +757,27 @@
|
||||
},
|
||||
"nixpkgs-nixcord": {
|
||||
"locked": {
|
||||
"lastModified": 1779102034,
|
||||
"narHash": "sha256-vZJZjLo513IeI8hjzHFc6TDezUd4uCE2Eq4SNO3DNNg=",
|
||||
"lastModified": 1780453794,
|
||||
"narHash": "sha256-bXMRa9VTsHSPXL4Cw8R6JJLQeY3Y/IP4+YJCYVmQ7FY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "687f05a9184cad4eaf905c48b63649e3a86f5433",
|
||||
"rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.11",
|
||||
"ref": "nixos-26.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1779560665,
|
||||
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
|
||||
"lastModified": 1781577229,
|
||||
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
|
||||
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -787,34 +787,20 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1779877693,
|
||||
"narHash": "sha256-NOF9NAREhxr50bbBfVcVOq+ArCMSoe8dP79Pk2uyARk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4100e830e085863741bc69b156ec4ccd53ab5be0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_2",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780161591,
|
||||
"narHash": "sha256-eOiIbCMsYMP9JgZXzuT/m41djqDOEHTKjMFrm5NeVHM=",
|
||||
"lastModified": 1781713417,
|
||||
"narHash": "sha256-Kaj44jTNmnaFhKrcADx8nXmUYPa7l2HYfb7m6lEPy7Q=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "57e5355a843618a717a19d43b2a726a8f27f0bd1",
|
||||
"rev": "caee4e5d4161778815f522d9ea1c9e3dc42462b7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -831,11 +817,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780200883,
|
||||
"narHash": "sha256-Fj+H8TNlWYGsLjrCQRWjcpZDcWp97i/mny9FgPS1W3E=",
|
||||
"lastModified": 1781800183,
|
||||
"narHash": "sha256-NcRZr/JQiAvqC2qCyMxcfx/98Hf1epwdtjcbwKHeMf8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "b8cdbdd02e4ce7a9fb7c8806fb1bc8d160c7433b",
|
||||
"rev": "0559d992b12ee209570bb325d79e90007b13da52",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -892,11 +878,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1777944972,
|
||||
"narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
|
||||
"lastModified": 1780547341,
|
||||
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
|
||||
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -913,11 +899,11 @@
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779824049,
|
||||
"narHash": "sha256-dWHVUjP03KSVG1PaLKA6j9EdxWSxSQvipMUIcSyuA/U=",
|
||||
"lastModified": 1781425310,
|
||||
"narHash": "sha256-GTBka4Df/ZOacmisI/DI2LICyNChEqn/giah83LucdM=",
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-nix",
|
||||
"rev": "1362178e5f5f7a848c49fe9dee004ef8824f100a",
|
||||
"rev": "aeaf7c81a45d3761da61cb05bfc370ac6d1b0441",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1015,11 +1001,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778265244,
|
||||
"narHash": "sha256-8jlPtGSsv/CQY6tVVyLF4Jjd0gnS+Zbn9yk/V13A9nM=",
|
||||
"lastModified": 1780133819,
|
||||
"narHash": "sha256-0YPKIY3dlnR7SPq7Z8ekFVvzFsfeiAtEj+QUI3KHrlI=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "813ea5ca9a1702a9a2d1f5836bc00172ef698968",
|
||||
"rev": "4a170c0ba96fd37374f93d8f91c9ed91814828ac",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
# declarative Neovim
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# declarative Discord
|
||||
@@ -94,6 +95,61 @@
|
||||
}@inputs:
|
||||
let
|
||||
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 =
|
||||
{
|
||||
hostName,
|
||||
@@ -118,6 +174,12 @@
|
||||
|
||||
sharedModules = [
|
||||
{ networking.hostName = hostName; }
|
||||
{
|
||||
nixpkgs = {
|
||||
overlays = [ (import ./overlays { inherit (inputs) nur; }) ];
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
}
|
||||
./hosts/${hostName}/configuration.nix
|
||||
inputs.sops-nix.${platformModuleSet}.sops
|
||||
inputs.home-manager.${platformModuleSet}.home-manager
|
||||
@@ -125,7 +187,7 @@
|
||||
home-manager = {
|
||||
extraSpecialArgs = sharedSpecialArgs;
|
||||
users.${primaryUser} = import ./home;
|
||||
backupFileExtension = "backup";
|
||||
backupFileExtension = "hm-backup";
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
};
|
||||
@@ -189,36 +251,26 @@
|
||||
isDarwin = true;
|
||||
};
|
||||
|
||||
# NEW: flashable image for cyper-controller
|
||||
packages.x86_64-linux.cyper-controller-image = nixos-generators.nixosGenerate {
|
||||
system = "x86_64-linux";
|
||||
format = "raw-efi";
|
||||
specialArgs = {
|
||||
inherit inputs primaryUser self;
|
||||
packages.x86_64-linux = {
|
||||
cyper-desktop-iso = mkIso { hostName = "cyper-desktop"; };
|
||||
cyper-controller-iso = mkIso {
|
||||
hostName = "cyper-controller";
|
||||
isDarwin = false;
|
||||
isServer = true;
|
||||
};
|
||||
modules = [
|
||||
{ nixpkgs.hostPlatform = "x86_64-linux"; }
|
||||
{ networking.hostName = "cyper-controller"; }
|
||||
./hosts/cyper-controller/configuration.nix
|
||||
./nixos
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager = {
|
||||
extraSpecialArgs = {
|
||||
inherit inputs primaryUser self;
|
||||
hostName = "cyper-controller";
|
||||
isDarwin = false;
|
||||
isServer = true;
|
||||
};
|
||||
users.${primaryUser} = import ./home;
|
||||
backupFileExtension = "backup";
|
||||
};
|
||||
}
|
||||
];
|
||||
cyper-proxy-iso = mkIso {
|
||||
hostName = "cyper-proxy";
|
||||
isServer = true;
|
||||
};
|
||||
cyper-node-1-iso = mkIso {
|
||||
hostName = "cyper-node-1";
|
||||
isServer = true;
|
||||
};
|
||||
cyper-node-2-iso = mkIso {
|
||||
hostName = "cyper-node-2";
|
||||
isServer = true;
|
||||
};
|
||||
};
|
||||
|
||||
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -50,5 +50,6 @@
|
||||
enable = true;
|
||||
apply = true;
|
||||
};
|
||||
opencode.enable = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -17,12 +17,16 @@
|
||||
./xdg.nix
|
||||
./neovim
|
||||
./python.nix
|
||||
./fonts.nix
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
]
|
||||
++ lib.optionals (!isDarwin && !isServer) [
|
||||
./desktop
|
||||
./catppuccin.nix
|
||||
]
|
||||
++ lib.optionals (!isDarwin) [
|
||||
./opencode.nix
|
||||
]
|
||||
++ lib.optionals isDarwin [
|
||||
./desktop/sketchybar
|
||||
./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, ... }: {
|
||||
home.packages =
|
||||
lib.mkIf (!pkgs.stdenv.isDarwin) (with pkgs; [ rofi-power-menu rofi-calc ]);
|
||||
home.packages = lib.mkIf (!pkgs.stdenv.isDarwin) (
|
||||
with pkgs;
|
||||
[
|
||||
rofi-power-menu
|
||||
rofi-calc
|
||||
]
|
||||
);
|
||||
|
||||
programs.rofi = lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
enable = true;
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{ pkgs, lib, isDarwin, ... }: {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
isDarwin,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.sketchybar = lib.mkIf isDarwin {
|
||||
enable = true;
|
||||
configType = "lua";
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
{ pkgs, lib, compositor ? "hyprland", ... }: {
|
||||
programs.waybar = lib.mkIf (!pkgs.stdenv.isDarwin) ({
|
||||
enable = true;
|
||||
package = pkgs.waybar;
|
||||
} // (import ./dual.nix { inherit compositor; }));
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
compositor ? "hyprland",
|
||||
...
|
||||
}:
|
||||
{
|
||||
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 ]);
|
||||
|
||||
|
||||
+82
-21
@@ -25,8 +25,42 @@ in
|
||||
programs.floorp = {
|
||||
enable = true;
|
||||
|
||||
policies.ExtensionSettings = {
|
||||
"adguardadblocker@adguard.com" = {
|
||||
installation_mode = "force_installed";
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/file/4805625/adguard_adblocker-5.4.3.1.xpi";
|
||||
default_area = "navbar";
|
||||
};
|
||||
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||
installation_mode = "force_installed";
|
||||
default_area = "navbar";
|
||||
}; # Bitwarden
|
||||
"{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}" = {
|
||||
installation_mode = "force_installed";
|
||||
default_area = "navbar";
|
||||
}; # Stylus
|
||||
"newtaboverride@agenedia.com" = {
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
"{3c078156-979c-498b-8990-85f7987dd929}" = {
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
"firefox@tampermonkey.net" = {
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
"{7aa7c68a-141f-45c9-a1c6-6e7382debbe1}" = {
|
||||
installation_mode = "force_installed";
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/file/4147586/catppuccin_mocha-1.0.xpi";
|
||||
};
|
||||
};
|
||||
|
||||
profiles.default = {
|
||||
isDefault = true;
|
||||
|
||||
extraConfig = ''
|
||||
user_pref("extensions.activeThemeID", "{7aa7c68a-141f-45c9-a1c6-6e7382debbe1}");
|
||||
'';
|
||||
|
||||
settings = {
|
||||
# Startup
|
||||
"browser.startup.homepage" = "https://www.cyperpunk.de";
|
||||
@@ -67,6 +101,9 @@ in
|
||||
"browser.urlbar.shortcuts.history" = false;
|
||||
"browser.urlbar.suggest.bookmark" = false;
|
||||
|
||||
# Extensions — skip manual enable prompt on fresh install
|
||||
"extensions.autoDisableScopes" = 0;
|
||||
|
||||
# Floorp specific
|
||||
"floorp.browser.tabs.openNewTabPosition" = -1;
|
||||
"floorp.commandPalette.enabled" = true;
|
||||
@@ -79,29 +116,53 @@ in
|
||||
"floorp.panelSidebar.data" = readJson ./panel-sidebar-data.json;
|
||||
"floorp.tabs.sleep.exclusion" = readJson ./tabs-sleep-exclusion.json;
|
||||
};
|
||||
extensions.packages = [
|
||||
addons.bitwarden
|
||||
addons.sidebery
|
||||
addons.tampermonkey
|
||||
addons.stylus
|
||||
addons.new-tab-override
|
||||
|
||||
(buildXpi {
|
||||
name = "adguard-adblocker";
|
||||
addonId = "adguardadblocker@adguard.com";
|
||||
version = "5.4.3.1";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/4805625/adguard_adblocker-5.4.3.1.xpi";
|
||||
sha256 = "1rqp8qcc0p6qgqfgpshiqnll5mrl9jyfnks4zygzim436k0k781l";
|
||||
})
|
||||
search = {
|
||||
force = true;
|
||||
default = "SearXNG";
|
||||
engines = {
|
||||
"SearXNG" = {
|
||||
urls = [ { template = "https://search.cyperpunk.de/search?q={searchTerms}"; } ];
|
||||
definedAliases = [ "@sx" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
(buildXpi {
|
||||
name = "catppuccin-mocha";
|
||||
addonId = "{7aa7c68a-141f-45c9-a1c6-6e7382debbe1}";
|
||||
version = "1.0";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/4147586/catppuccin_mocha-1.0.xpi";
|
||||
sha256 = "04lw5dirdv5636i52gfgyd5l0mkd74qjs2p23mimga3xv8hk1dzl";
|
||||
})
|
||||
];
|
||||
extensions = {
|
||||
force = true;
|
||||
packages = [
|
||||
addons.bitwarden
|
||||
addons.sidebery
|
||||
addons.tampermonkey
|
||||
addons.stylus
|
||||
addons.new-tab-override
|
||||
|
||||
(buildXpi {
|
||||
name = "adguard-adblocker";
|
||||
addonId = "adguardadblocker@adguard.com";
|
||||
version = "5.4.3.1";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/4805625/adguard_adblocker-5.4.3.1.xpi";
|
||||
sha256 = "1rqp8qcc0p6qgqfgpshiqnll5mrl9jyfnks4zygzim436k0k781l";
|
||||
})
|
||||
|
||||
(buildXpi {
|
||||
name = "catppuccin-mocha";
|
||||
addonId = "{7aa7c68a-141f-45c9-a1c6-6e7382debbe1}";
|
||||
version = "1.0";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/4147586/catppuccin_mocha-1.0.xpi";
|
||||
sha256 = "04lw5dirdv5636i52gfgyd5l0mkd74qjs2p23mimga3xv8hk1dzl";
|
||||
})
|
||||
];
|
||||
settings = {
|
||||
"{3c078156-979c-498b-8990-85f7987dd929}".settings = builtins.fromJSON (
|
||||
builtins.readFile ./sidebery.json
|
||||
);
|
||||
"newtaboverride@agenedia.com".settings = {
|
||||
type = "custom_url";
|
||||
url = "https://www.cyperpunk.de/";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
+24070
File diff suppressed because one or more lines are too long
@@ -1,7 +1,8 @@
|
||||
# TODO: Duplicate file
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
fonts.packages = with pkgs; [
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nerd-fonts.fira-code
|
||||
nerd-fonts.fira-mono
|
||||
nerd-fonts.hack
|
||||
+37
-8
@@ -46,10 +46,14 @@
|
||||
{
|
||||
type = "button";
|
||||
val = "[+] New file";
|
||||
on_press.__raw =
|
||||
"function() vim.cmd[[ene]] vim.cmd[[startinsert]] end";
|
||||
on_press.__raw = "function() vim.cmd[[ene]] vim.cmd[[startinsert]] end";
|
||||
opts = {
|
||||
keymap = [ "n" "e" ":ene <BAR> startinsert <CR>" { } ];
|
||||
keymap = [
|
||||
"n"
|
||||
"e"
|
||||
":ene <BAR> startinsert <CR>"
|
||||
{ }
|
||||
];
|
||||
shortcut = "e";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
@@ -63,7 +67,12 @@
|
||||
val = "[?] Find file";
|
||||
on_press.__raw = "function() vim.cmd[[Telescope find_files]] end";
|
||||
opts = {
|
||||
keymap = [ "n" "f" ":Telescope find_files <CR>" { } ];
|
||||
keymap = [
|
||||
"n"
|
||||
"f"
|
||||
":Telescope find_files <CR>"
|
||||
{ }
|
||||
];
|
||||
shortcut = "f";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
@@ -77,7 +86,12 @@
|
||||
val = "[~] Recent files";
|
||||
on_press.__raw = "function() vim.cmd[[Telescope oldfiles]] end";
|
||||
opts = {
|
||||
keymap = [ "n" "r" ":Telescope oldfiles <CR>" { } ];
|
||||
keymap = [
|
||||
"n"
|
||||
"r"
|
||||
":Telescope oldfiles <CR>"
|
||||
{ }
|
||||
];
|
||||
shortcut = "r";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
@@ -91,7 +105,12 @@
|
||||
val = "[Y] Yazi";
|
||||
on_press.__raw = "function() require('yazi').yazi() end";
|
||||
opts = {
|
||||
keymap = [ "n" "y" ":Yazi<CR>" { } ];
|
||||
keymap = [
|
||||
"n"
|
||||
"y"
|
||||
":Yazi<CR>"
|
||||
{ }
|
||||
];
|
||||
shortcut = "y";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
@@ -105,7 +124,12 @@
|
||||
val = "[A] Open Prompt";
|
||||
#on_press.__raw = "function() require('yazi').yazi() end";
|
||||
opts = {
|
||||
keymap = [ "n" "a" ":AvanteChatNew<CR>" { } ];
|
||||
keymap = [
|
||||
"n"
|
||||
"a"
|
||||
":AvanteChatNew<CR>"
|
||||
{ }
|
||||
];
|
||||
shortcut = "a";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
@@ -119,7 +143,12 @@
|
||||
val = "[X] Quit";
|
||||
on_press.__raw = "function() vim.cmd[[qa]] end";
|
||||
opts = {
|
||||
keymap = [ "n" "q" ":qa<CR>" { } ];
|
||||
keymap = [
|
||||
"n"
|
||||
"q"
|
||||
":qa<CR>"
|
||||
{ }
|
||||
];
|
||||
shortcut = "q";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
|
||||
+30
-27
@@ -5,34 +5,45 @@
|
||||
plugins = {
|
||||
markdown-preview.enable = true;
|
||||
render-markdown.enable = true;
|
||||
#extraConfigLuaPre = ''
|
||||
# vim.env.GROQ_API_KEY = os.getenv("GROQ_API_KEY")
|
||||
#'';
|
||||
# TODO: Integrate CoPilot https://github.com/settings/copilot/features
|
||||
avante = {
|
||||
enable = true;
|
||||
autoLoad = true;
|
||||
settings = {
|
||||
provider = "groq";
|
||||
provider = "ollama";
|
||||
|
||||
providers.groq = {
|
||||
__inherited_from = "openai";
|
||||
api_key_name = "cmd:cat /home/phil/.config/sops-nix/secrets/GROQ_API_KEY";
|
||||
endpoint = "https://api.groq.com/openai/v1/";
|
||||
model = "qwen/qwen3-32b"; # "llama-3.3-70b-versatile";
|
||||
system_promt = "You are a helpful coding assistant. Always respond in plain markdown format without using tool calls or JSON structures.";
|
||||
disable_tools = true;
|
||||
extra_request_body = {
|
||||
temperature = 1;
|
||||
max_tokens = 2000;
|
||||
response_format = {
|
||||
type = "text";
|
||||
providers = {
|
||||
groq = {
|
||||
__inherited_from = "openai";
|
||||
api_key_name = "cmd:cat /home/phil/.config/sops-nix/secrets/GROQ_API_KEY";
|
||||
endpoint = "https://api.groq.com/openai/v1/";
|
||||
model = "qwen/qwen3-32b";
|
||||
system_promt = "You are a helpful coding assistant. Always respond in plain markdown format without using tool calls or JSON structures.";
|
||||
disable_tools = true;
|
||||
extra_request_body = {
|
||||
temperature = 1;
|
||||
max_tokens = 2000;
|
||||
response_format = {
|
||||
type = "text";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ollama = {
|
||||
endpoint = "http://100.109.179.25:11434"; # tailscale IP, no /v1 suffix
|
||||
model = "qwen2.5:3b"; # swap for "llama3.2:3b" or "deepseek-r1:1.5b"
|
||||
timeout = 60000; # local + small model can be slow on first load
|
||||
disable_tools = true; # these small models aren't reliable at tool calling
|
||||
is_env_set.__raw = ''require("avante.providers.ollama").check_endpoint_alive'';
|
||||
extra_request_body = {
|
||||
options = {
|
||||
temperature = 0.7;
|
||||
num_ctx = 8192;
|
||||
keep_alive = "5m";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# auto_suggestions_provider = "copilot";
|
||||
|
||||
render = {
|
||||
markdown = true;
|
||||
syntax = true;
|
||||
@@ -40,7 +51,6 @@
|
||||
code = true;
|
||||
link = true;
|
||||
};
|
||||
|
||||
behaviour = {
|
||||
enable_cursor_planning_mode = false;
|
||||
auto_suggestions = false;
|
||||
@@ -51,7 +61,6 @@
|
||||
use_selection_as_context = true;
|
||||
max_context_tokens = 2000;
|
||||
};
|
||||
|
||||
mappings = {
|
||||
ask = "<leader>aa";
|
||||
edit = "<leader>ae";
|
||||
@@ -84,11 +93,9 @@
|
||||
reverse_switch_windows = "<S-Tab>";
|
||||
};
|
||||
};
|
||||
|
||||
hints = {
|
||||
enabled = true;
|
||||
};
|
||||
|
||||
windows = {
|
||||
position = "right";
|
||||
wrap = true;
|
||||
@@ -98,22 +105,18 @@
|
||||
rounded = true;
|
||||
};
|
||||
};
|
||||
|
||||
highlights = {
|
||||
diff = {
|
||||
current = "DiffText";
|
||||
incoming = "DiffAdd";
|
||||
};
|
||||
};
|
||||
|
||||
diff = {
|
||||
autojump = true;
|
||||
list_opener = "copen";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
extraPackages = with pkgs; [ curl ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
{ pkgs, inputs, ... }:
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.nixvim.homeModules.nixvim
|
||||
@@ -17,6 +21,7 @@
|
||||
#./molten.nix
|
||||
./which-key.nix
|
||||
./diffview.nix
|
||||
./live-server.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
@@ -28,6 +33,7 @@
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
enableMan = false;
|
||||
|
||||
# Leader key
|
||||
globals.mapleader = " ";
|
||||
|
||||
@@ -2,12 +2,32 @@ _: {
|
||||
programs.nixvim = {
|
||||
plugins.diffview = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
"]x" = "<cmd>DiffviewConflictNext<CR>";
|
||||
"[x" = "<cmd>DiffviewConflictPrev<CR>";
|
||||
"do" = "<cmd>DiffviewFocusOurs<CR>";
|
||||
"dt" = "<cmd>DiffviewFocusTheirs<CR>";
|
||||
};
|
||||
settings.keymaps.view = [
|
||||
{
|
||||
mode = "n";
|
||||
key = "]x";
|
||||
action = "<cmd>DiffviewConflictNext<CR>";
|
||||
description = "Next conflict";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "[x";
|
||||
action = "<cmd>DiffviewConflictPrev<CR>";
|
||||
description = "Previous conflict";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "do";
|
||||
action = "<cmd>DiffviewFocusOurs<CR>";
|
||||
description = "Focus ours";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "dt";
|
||||
action = "<cmd>DiffviewFocusTheirs<CR>";
|
||||
description = "Focus theirs";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# TODO: Remove; nodePackages is unmaintained inside nixpkgs
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# Live Server: Auto-reload browser for web development
|
||||
@@ -13,6 +12,6 @@
|
||||
}
|
||||
];
|
||||
|
||||
extraPackages = with pkgs; [ nodePackages.browser-sync ];
|
||||
extraPackages = with pkgs; [ browser-sync ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
programs.nixvim = lib.mkIf (!isDarwin) {
|
||||
plugins.molten = {
|
||||
enable = true;
|
||||
python3Dependencies = p:
|
||||
with p; [
|
||||
python3Dependencies =
|
||||
p: with p; [
|
||||
pynvim
|
||||
jupyter-client
|
||||
cairosvg
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# cheatsheet, snippets, offline manual and fuzzy help
|
||||
programs.nixvim = {
|
||||
plugins.openscad = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
autoLoad = true;
|
||||
settings = {
|
||||
fuzzy_finder = "fzf";
|
||||
|
||||
+44
-3
@@ -1,4 +1,45 @@
|
||||
_: {
|
||||
# TODO: Add Automatic Vault pull and detection
|
||||
programs.obsidian.enable = true;
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
vaultRepo = "ssh://gitea@git.cyperpunk.de:12222/DerGrumpf/Notes.git";
|
||||
vaultPath = "${config.home.homeDirectory}/Notes";
|
||||
sshBinary = "${pkgs.openssh}/bin/ssh";
|
||||
gitBin = "${pkgs.git}/bin";
|
||||
gitLfsBin = "${pkgs.git-lfs}/bin";
|
||||
in
|
||||
{
|
||||
programs.obsidian = {
|
||||
enable = true;
|
||||
vaults.notes = {
|
||||
target = "Notes";
|
||||
settings = { };
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
git
|
||||
git-lfs
|
||||
openssh
|
||||
];
|
||||
|
||||
home.activation.obsidianVault = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
export PATH="${gitBin}:${gitLfsBin}:$PATH"
|
||||
export GIT_SSH_COMMAND="${sshBinary} -o StrictHostKeyChecking=accept-new"
|
||||
export GIT_LFS_SKIP_SMUDGE=1
|
||||
|
||||
if [ ! -d "${vaultPath}/.git" ]; then
|
||||
echo "Cloning Obsidian vault (LFS objects will be pulled separately)..."
|
||||
${gitBin}/git clone "${vaultRepo}" "${vaultPath}"
|
||||
${gitLfsBin}/git-lfs install --local "${vaultPath}"
|
||||
${gitBin}/git -C "${vaultPath}" lfs pull
|
||||
else
|
||||
echo "Pulling latest changes for Obsidian vault..."
|
||||
${gitBin}/git -C "${vaultPath}" pull
|
||||
${gitBin}/git -C "${vaultPath}" lfs pull
|
||||
fi
|
||||
'';
|
||||
}
|
||||
|
||||
+1
-2
@@ -1,4 +1,3 @@
|
||||
{ pkgs, ... }: {
|
||||
programs.onlyoffice =
|
||||
pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
|
||||
programs.onlyoffice = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
_: {
|
||||
programs.opencode = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
enabled_providers = [ "ollama" ];
|
||||
|
||||
model = "ollama/llama3.2:3b";
|
||||
|
||||
provider = {
|
||||
ollama = {
|
||||
npm = "@ai-sdk/openai-compatible";
|
||||
name = "Ollama (tailscale)";
|
||||
options = {
|
||||
baseURL = "http://100.109.179.25:11434/v1";
|
||||
};
|
||||
models = {
|
||||
"llama3.2:3b" = {
|
||||
name = "Llama 3.2 3B";
|
||||
};
|
||||
"qwen2.5:3b" = {
|
||||
name = "Qwen 2.5 3B";
|
||||
};
|
||||
"deepseek-r1:1.5b" = {
|
||||
name = "DeepSeek-R1 1.5B";
|
||||
};
|
||||
"gemma4:e2b" = {
|
||||
name = "Gemma 4 2B Edge";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
+6
-2
@@ -18,7 +18,7 @@
|
||||
jq
|
||||
yq-go
|
||||
# GUI
|
||||
openscad
|
||||
# openscad
|
||||
fstl
|
||||
# PDF Tools
|
||||
pandoc
|
||||
@@ -33,8 +33,11 @@
|
||||
gnutar
|
||||
unrar
|
||||
sops
|
||||
age
|
||||
# Nix tools
|
||||
nix-index
|
||||
ncdu
|
||||
tty-solitaire
|
||||
]
|
||||
++ lib.optionals (!pkgs.stdenv.isDarwin) [
|
||||
# dev tools
|
||||
@@ -48,7 +51,6 @@
|
||||
which
|
||||
libnotify
|
||||
# encryption
|
||||
age
|
||||
ssh-to-age
|
||||
]
|
||||
++ lib.optionals (!pkgs.stdenv.isDarwin && !isServer) [
|
||||
@@ -64,6 +66,8 @@
|
||||
xonotic
|
||||
irssi
|
||||
blender
|
||||
nixpkgs-review
|
||||
netradiant-custom
|
||||
]
|
||||
++ lib.optionals pkgs.stdenv.isDarwin [ graphite-cli ];
|
||||
};
|
||||
|
||||
+233
-304
@@ -17,327 +17,256 @@
|
||||
ripgrep # grep alternative
|
||||
dnsutils
|
||||
|
||||
# LLM in the Terminal
|
||||
(pkgs.llm.withPlugins { llm-groq = true; })
|
||||
|
||||
# Fun stuff
|
||||
zoxide
|
||||
lolcat
|
||||
cmatrix
|
||||
];
|
||||
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
programs = {
|
||||
kitty = {
|
||||
enable = true;
|
||||
|
||||
font = {
|
||||
name = "Fira Code Nerd Font";
|
||||
size = 10;
|
||||
};
|
||||
font = {
|
||||
name = "Fira Code Nerd Font";
|
||||
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 = {
|
||||
notifications.enabled = true;
|
||||
image_preview.protocol = {
|
||||
type = "kitty";
|
||||
size = {
|
||||
height = 10;
|
||||
width = 66;
|
||||
};
|
||||
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";
|
||||
};
|
||||
};
|
||||
|
||||
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 = {
|
||||
enable = true;
|
||||
autoReload = true;
|
||||
browser = if isDarwin then "open" else "xdg-open";
|
||||
urls = [
|
||||
{
|
||||
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" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
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
|
||||
|
||||
programs.cava = lib.mkIf (!isDarwin) { enable = true; };
|
||||
# Link LLM std template
|
||||
".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.
|
||||
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
|
||||
settings = {
|
||||
ration = [
|
||||
1
|
||||
3
|
||||
4
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
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 {}'"
|
||||
];
|
||||
};
|
||||
|
||||
# TODO: Install OpenCode
|
||||
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
|
||||
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
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
# 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/vaultwarden.nix
|
||||
../../nixos/roles/frontpage
|
||||
../../nixos/roles/paperless-ngx.nix
|
||||
#../../nixos/roles/paperless-ngx.nix
|
||||
../../nixos/roles/octoprint.nix
|
||||
../../nixos/roles/matrix/postgres-backup.nix
|
||||
../../nixos/roles/kanidm.nix
|
||||
../../nixos/roles/ollama.nix
|
||||
];
|
||||
|
||||
networking = {
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
];
|
||||
};
|
||||
|
||||
# TODO: Add External Devices as by-label with no necessity for boot
|
||||
"/storage/internal" = {
|
||||
device = "/dev/disk/by-label/STORAGE";
|
||||
fsType = "btrfs";
|
||||
|
||||
@@ -33,10 +33,12 @@
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
services.desktopManager.plasma6.enable = false;
|
||||
services.displayManager.sddm = {
|
||||
enable = false;
|
||||
wayland.enable = true;
|
||||
services = {
|
||||
desktopManager.plasma6.enable = false;
|
||||
displayManager.sddm = {
|
||||
enable = false;
|
||||
wayland.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.pathsToLink = [
|
||||
@@ -44,5 +46,8 @@
|
||||
"/share/xdg-desktop-portal"
|
||||
];
|
||||
|
||||
system.stateVersion = "26.05";
|
||||
system.stateVersion = "26.11";
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
users.users.phil.extraGroups = [ "docker" ];
|
||||
}
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
{
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
../../nixos/roles/monitoring.nix
|
||||
../../nixos/roles/matrix.nix
|
||||
../../nixos/roles/postgresql.nix
|
||||
../../nixos/roles/wyl.nix
|
||||
../../nixos/roles/adguard.nix
|
||||
];
|
||||
|
||||
networking = {
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
../../nixos/roles/gitea.nix
|
||||
../../nixos/roles/filebrowser.nix
|
||||
];
|
||||
|
||||
networking = {
|
||||
|
||||
@@ -5,38 +5,41 @@
|
||||
];
|
||||
|
||||
boot = {
|
||||
loader.grub = {
|
||||
enable = true;
|
||||
device = "/dev/vda";
|
||||
};
|
||||
loader.grub = {
|
||||
enable = true;
|
||||
device = "/dev/vda";
|
||||
};
|
||||
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"ata_piix"
|
||||
"virtio_pci"
|
||||
"virtio_scsi"
|
||||
"virtio_blk"
|
||||
"xhci_pci"
|
||||
"sr_mod"
|
||||
];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
kernelModules = [ ];
|
||||
extraModulePackages = [ ];
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"ata_piix"
|
||||
"virtio_pci"
|
||||
"virtio_scsi"
|
||||
"virtio_blk"
|
||||
"xhci_pci"
|
||||
"sr_mod"
|
||||
];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
kernelModules = [ ];
|
||||
extraModulePackages = [ ];
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/NIXROOT";
|
||||
fsType = "ext4";
|
||||
};
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/NIXROOT";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-label/NIXBOOT";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-label/NIXBOOT";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
|
||||
@@ -12,9 +12,5 @@
|
||||
enable = true;
|
||||
accent = "sapphire";
|
||||
};
|
||||
fcitx5.enable = false;
|
||||
forgejo.enable = false;
|
||||
gitea.enable = false;
|
||||
sddm.enable = false;
|
||||
};
|
||||
}
|
||||
|
||||
+6
-35
@@ -9,7 +9,6 @@
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./fonts.nix
|
||||
./sops.nix
|
||||
./locale.nix
|
||||
./tailscale.nix
|
||||
@@ -19,7 +18,6 @@
|
||||
./regreet.nix
|
||||
./plymouth.nix
|
||||
./audio.nix
|
||||
# ./webcam.nix
|
||||
./virt.nix
|
||||
./catppuccin.nix
|
||||
];
|
||||
@@ -50,6 +48,7 @@
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"cyper-cache.cachix.org-1:pOpeWFEjGHg9XvqRg+DQpYnGRQNp+z+QEF8Ev2mbSoM="
|
||||
];
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
gc = {
|
||||
automatic = true;
|
||||
@@ -58,34 +57,9 @@
|
||||
};
|
||||
};
|
||||
|
||||
# TODO: Get rid of this
|
||||
virtualisation = lib.mkIf isServer {
|
||||
vmVariant = {
|
||||
virtualisation = {
|
||||
forwardPorts = [
|
||||
{
|
||||
from = "host";
|
||||
host.port = 2222;
|
||||
guest.port = 22;
|
||||
}
|
||||
];
|
||||
qemu.networkingOptions = [
|
||||
"-device virtio-net-pci,netdev=net0"
|
||||
"-netdev user,id=net0,net=10.0.2.0/24,dhcpstart=10.0.2.15"
|
||||
];
|
||||
};
|
||||
|
||||
systemd.network.networks."10-ethernet" = lib.mkForce {
|
||||
matchConfig.Name = "ens*";
|
||||
networkConfig = {
|
||||
Address = "10.0.2.15/24";
|
||||
Gateway = "10.0.2.2";
|
||||
|
||||
DNS = "8.8.8.8";
|
||||
DHCP = "no";
|
||||
};
|
||||
};
|
||||
};
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [ "olm-3.2.16" ];
|
||||
};
|
||||
|
||||
documentation = {
|
||||
@@ -95,11 +69,6 @@
|
||||
info.enable = false;
|
||||
};
|
||||
|
||||
nixpkgs = {
|
||||
overlays = [ (import ./packages/overlays.nix { inherit (inputs) nur; }) ];
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
|
||||
programs = {
|
||||
fish.enable = true;
|
||||
}
|
||||
@@ -116,6 +85,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [ git ];
|
||||
|
||||
security = lib.mkIf (!isServer) {
|
||||
pam.services.swaylock = { };
|
||||
polkit.enable = true;
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
# TODO: Duplicate file
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
fonts.packages = with pkgs; [
|
||||
nerd-fonts.fira-code
|
||||
nerd-fonts.fira-mono
|
||||
nerd-fonts.hack
|
||||
];
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
{ ... }:
|
||||
{ lib, ... }:
|
||||
{
|
||||
boot = {
|
||||
plymouth = {
|
||||
@@ -15,6 +15,6 @@
|
||||
"udev.log_priority=3"
|
||||
"rd.systemd.show_status=auto"
|
||||
];
|
||||
loader.timeout = 0;
|
||||
loader.timeout = lib.mkDefault 0;
|
||||
};
|
||||
}
|
||||
|
||||
+181
-147
@@ -2,6 +2,7 @@
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
primaryUser,
|
||||
...
|
||||
}:
|
||||
|
||||
@@ -36,6 +37,9 @@ in
|
||||
owner = "gitea";
|
||||
group = "gitea";
|
||||
};
|
||||
"gitea/runnerToken" = {
|
||||
mode = "0444";
|
||||
};
|
||||
"kanidm_gitea_secret" = {
|
||||
owner = "gitea";
|
||||
group = "gitea";
|
||||
@@ -43,169 +47,199 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
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
|
||||
'';
|
||||
};
|
||||
|
||||
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;
|
||||
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})
|
||||
${pkgs.postgresql_14}/bin/psql -c \
|
||||
"ALTER USER gitea WITH PASSWORD '$pass';"
|
||||
'';
|
||||
};
|
||||
script = ''
|
||||
pass=$(cat ${config.sops.secrets."gitea/dbPassword".path})
|
||||
${pkgs.postgresql_14}/bin/psql -c \
|
||||
"ALTER USER gitea WITH PASSWORD '$pass';"
|
||||
|
||||
gitea.preStart = lib.mkAfter ''
|
||||
themeDir="${config.services.gitea.stateDir}/custom/public/assets/css"
|
||||
mkdir -p "$themeDir"
|
||||
for f in ${giteaTheme}/*.css; do
|
||||
name=$(basename "$f")
|
||||
ln -sf "$f" "$themeDir/$name"
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
services.gitea = {
|
||||
enable = true;
|
||||
package = pkgs.gitea;
|
||||
user = "gitea";
|
||||
group = "gitea";
|
||||
|
||||
lfs = {
|
||||
services = {
|
||||
postgresql = {
|
||||
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 = {
|
||||
type = "postgres";
|
||||
host = "127.0.0.1";
|
||||
port = 5432;
|
||||
name = "gitea";
|
||||
gitea = {
|
||||
enable = true;
|
||||
package = pkgs.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 = {
|
||||
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;
|
||||
};
|
||||
gitea-actions-runner.instances."cyper_nix" = {
|
||||
enable = true;
|
||||
url = "https://git.cyperpunk.de";
|
||||
tokenFile = config.sops.secrets."gitea/runnerToken".path;
|
||||
name = "cyper-controller";
|
||||
labels = [ "nix:host" ];
|
||||
|
||||
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"
|
||||
];
|
||||
};
|
||||
hostPackages = with pkgs; [
|
||||
bash
|
||||
coreutils
|
||||
curl
|
||||
gawk
|
||||
gitMinimal
|
||||
gnused
|
||||
nodejs
|
||||
wget
|
||||
nix
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# symlink catppuccin css files into gitea's custom dir on every service start
|
||||
systemd.services.gitea.preStart = lib.mkAfter ''
|
||||
themeDir="${config.services.gitea.stateDir}/custom/public/assets/css"
|
||||
mkdir -p "$themeDir"
|
||||
for f in ${giteaTheme}/*.css; do
|
||||
name=$(basename "$f")
|
||||
ln -sf "$f" "$themeDir/$name"
|
||||
done
|
||||
'';
|
||||
users = {
|
||||
users = {
|
||||
gitea = {
|
||||
isSystemUser = true;
|
||||
group = "gitea";
|
||||
home = "/var/lib/gitea";
|
||||
createHome = true;
|
||||
};
|
||||
|
||||
users.users.gitea = {
|
||||
isSystemUser = true;
|
||||
group = "gitea";
|
||||
home = "/var/lib/gitea";
|
||||
createHome = true;
|
||||
postgres.extraGroups = [ "gitea" ];
|
||||
};
|
||||
groups = {
|
||||
gitea = { };
|
||||
};
|
||||
};
|
||||
users.groups.gitea = { };
|
||||
users.users.postgres.extraGroups = [ "gitea" ];
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
httpPort
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
{ config, lib, ... }:
|
||||
{
|
||||
nixpkgs.config.permittedInsecurePackages = [ "olm-3.2.16" ];
|
||||
|
||||
sops.secrets = {
|
||||
discord_bot_token = {
|
||||
owner = "mautrix-discord";
|
||||
@@ -17,78 +15,90 @@
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.mautrix-discord-env = {
|
||||
before = [ "mautrix-discord-registration.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
script = ''
|
||||
mkdir -p /run/mautrix-discord
|
||||
echo "DISCORD_BOT_TOKEN=$(cat ${config.sops.secrets.discord_bot_token.path})" > /run/mautrix-discord/env
|
||||
echo "DISCORD_CLIENT_ID=$(cat ${config.sops.secrets.discord_client_id.path})" >> /run/mautrix-discord/env
|
||||
echo "DISCORD_PICKLE_KEY=$(cat ${config.sops.secrets.discord_pickle_key.path})" >> /run/mautrix-discord/env
|
||||
chmod 600 /run/mautrix-discord/env
|
||||
chown mautrix-discord:mautrix-discord /run/mautrix-discord/env
|
||||
'';
|
||||
};
|
||||
systemd = {
|
||||
services = {
|
||||
mautrix-discord-env = {
|
||||
before = [ "mautrix-discord-registration.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
script = ''
|
||||
mkdir -p /run/mautrix-discord
|
||||
echo "DISCORD_BOT_TOKEN=$(cat ${config.sops.secrets.discord_bot_token.path})" > /run/mautrix-discord/env
|
||||
echo "DISCORD_CLIENT_ID=$(cat ${config.sops.secrets.discord_client_id.path})" >> /run/mautrix-discord/env
|
||||
echo "DISCORD_PICKLE_KEY=$(cat ${config.sops.secrets.discord_pickle_key.path})" >> /run/mautrix-discord/env
|
||||
chmod 600 /run/mautrix-discord/env
|
||||
chown mautrix-discord:mautrix-discord /run/mautrix-discord/env
|
||||
'';
|
||||
};
|
||||
|
||||
services.postgresql = {
|
||||
ensureUsers = [
|
||||
{
|
||||
name = "mautrix-discord";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
mautrix-discord-registration.serviceConfig.UMask = lib.mkForce "0750";
|
||||
};
|
||||
tmpfiles.rules = [
|
||||
"z /var/lib/mautrix-discord/discord-registration.yaml 0640 mautrix-discord mautrix-discord -"
|
||||
];
|
||||
ensureDatabases = [ "mautrix-discord" ];
|
||||
};
|
||||
|
||||
services.mautrix-discord = {
|
||||
enable = true;
|
||||
environmentFile = "/run/mautrix-discord/env";
|
||||
settings = {
|
||||
homeserver = {
|
||||
address = "http://127.0.0.1:8008";
|
||||
domain = "cyperpunk.de";
|
||||
};
|
||||
appservice.database = {
|
||||
type = "postgres";
|
||||
uri = "postgres:///mautrix-discord?host=/run/postgresql&sslmode=disable";
|
||||
};
|
||||
bridge = {
|
||||
permissions = {
|
||||
"cyperpunk.de" = "user";
|
||||
"@dergrumpf:cyperpunk.de" = "admin";
|
||||
};
|
||||
services = {
|
||||
postgresql = {
|
||||
ensureUsers = [
|
||||
{
|
||||
name = "mautrix-discord";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
ensureDatabases = [ "mautrix-discord" ];
|
||||
};
|
||||
|
||||
backfill = {
|
||||
limits = {
|
||||
initial = {
|
||||
channel = 10000;
|
||||
thread = 500;
|
||||
mautrix-discord = {
|
||||
enable = true;
|
||||
environmentFile = "/run/mautrix-discord/env";
|
||||
settings = {
|
||||
homeserver = {
|
||||
address = "http://127.0.0.1:8008";
|
||||
domain = "cyperpunk.de";
|
||||
};
|
||||
appservice.database = {
|
||||
type = "postgres";
|
||||
uri = "postgres:///mautrix-discord?host=/run/postgresql&sslmode=disable";
|
||||
};
|
||||
bridge = {
|
||||
permissions = {
|
||||
"cyperpunk.de" = "user";
|
||||
"@dergrumpf:cyperpunk.de" = "admin";
|
||||
};
|
||||
|
||||
backfill = {
|
||||
limits = {
|
||||
initial = {
|
||||
channel = 10000;
|
||||
thread = 500;
|
||||
};
|
||||
missed = {
|
||||
channel = 500;
|
||||
};
|
||||
};
|
||||
missed = {
|
||||
channel = 500;
|
||||
};
|
||||
encryption = {
|
||||
allow = true;
|
||||
default = true;
|
||||
pickle_key = "$DISCORD_PICKLE_KEY";
|
||||
verification_levels = {
|
||||
receive = "unverified";
|
||||
send = "unverified";
|
||||
share = "cross-signed-tofu";
|
||||
};
|
||||
};
|
||||
};
|
||||
encryption = {
|
||||
allow = true;
|
||||
default = true;
|
||||
pickle_key = "$DISCORD_PICKLE_KEY";
|
||||
verification_levels = {
|
||||
receive = "unverified";
|
||||
send = "unverified";
|
||||
share = "cross-signed-tofu";
|
||||
};
|
||||
discord = {
|
||||
client_id = "$DISCORD_CLIENT_ID";
|
||||
bot_token = "$DISCORD_BOT_TOKEN";
|
||||
};
|
||||
};
|
||||
discord = {
|
||||
client_id = "$DISCORD_CLIENT_ID";
|
||||
bot_token = "$DISCORD_BOT_TOKEN";
|
||||
};
|
||||
};
|
||||
};
|
||||
systemd.services.mautrix-discord-registration.serviceConfig.UMask = lib.mkForce "0022";
|
||||
|
||||
users.users.matrix-synapse.extraGroups = [ "mautrix-discord" ];
|
||||
}
|
||||
|
||||
@@ -36,6 +36,10 @@ in
|
||||
12222
|
||||
];
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /var/www/home.cyperpunk.de 0755 nginx nginx -"
|
||||
];
|
||||
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
defaults.email = "phil.keier@hotmail.com";
|
||||
@@ -70,6 +74,17 @@ in
|
||||
"calvin.cyperpunk.de" = mkWsProxy 15006;
|
||||
"auth.cyperpunk.de" = mkHttpsProxy 8444;
|
||||
|
||||
#"home.cyperpunk.de" = {
|
||||
# forceSSL = true;
|
||||
# enableACME = true;
|
||||
# locations."/" = {
|
||||
# root = "/var/www/home.cyperpunk.de";
|
||||
# extraConfig = ''
|
||||
# try_files $uri $uri/ =404;
|
||||
# '';
|
||||
# };
|
||||
#};
|
||||
|
||||
"www.cyperpunk.de" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
|
||||
@@ -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, ... }:
|
||||
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
services.unifi = {
|
||||
enable = true;
|
||||
unifiPackage = pkgs.unifi;
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
|
||||
# TODO: This need to be tested against the cam and kernel rules need to be refined
|
||||
services.udev.extraRules = ''
|
||||
ACTION=="add", \
|
||||
SUBSYSTEM=="usb", \
|
||||
ATTR{idVendor}=="04a9", \
|
||||
ATTR{idProduct}=="31ea", \
|
||||
RUN+="${pkgs.systemd}/bin/systemctl restart webcam"
|
||||
'';
|
||||
|
||||
systemd.services.webcam = {
|
||||
enable = true;
|
||||
description = "Canon Camera Webcam";
|
||||
script = ''
|
||||
${pkgs.gphoto2}/bin/gphoto2 --stdout --capture-movie | \
|
||||
${pkgs.ffmpeg}/bin/ffmpeg \
|
||||
-i - \
|
||||
-vcodec rawvideo \
|
||||
-pix_fmt yuv420p \
|
||||
-threads 0 \
|
||||
-framerate 30 \
|
||||
-f v4l2 \
|
||||
/dev/video0
|
||||
'';
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
}
|
||||
@@ -6,4 +6,5 @@ final: prev:
|
||||
oidcwarden = final.callPackage ./oidcwarden.nix {
|
||||
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]
|
||||
lfsJwtSecret: ENC[AES256_GCM,data:L20mFZ6zwsF3ZUoodarTJV+vhUdLlBrUbHz7FpEzJ2/C6AdFc1ZZcioN3g==,iv:E2C3gg1OYQ46Ae2bGnhF+3uw+q77l+yph3Kd2fxwW9M=,tag:VQkQ4R9S8Dr39rSLhL/X1w==,type:str]
|
||||
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_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:
|
||||
@@ -43,7 +44,7 @@ sops:
|
||||
6fuez+zApathZfl14w41kAUojPWBznnxDqYtNvzVVLXwnpp3BMx+7w==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age10pyhca0jy75wtqv5hrn0gf0jcam5272zx9h73a8xwwaxyfq89c0qs5dr9t
|
||||
lastmodified: "2026-05-27T20:55:18Z"
|
||||
mac: ENC[AES256_GCM,data:qHJwYNk4rR37KAKFKGpMfkY/Q3VJ+15yM3cUUaF6/MrHn5BtE6aoV9jjxoXbftTjNTmRRw37M4rVJJjaw+5baWwLrHpBGD5vNJC3HLwH9Mx/UmL9m90dpUWxQN9U5ah3jcg5uZzIZWhC32YNNYiuBz+qK7FwtxgEoXPbxVuh8zM=,iv:QTKO8cF5wIad/yIIs4a4/WC0lxIrCgYNZ9vfMiI28Ic=,tag:cKdCiu9w4pvpxAuMmZxDTA==,type:str]
|
||||
lastmodified: "2026-06-22T18:17:22Z"
|
||||
mac: ENC[AES256_GCM,data:nIGjfBCia9y1+f0dE6TRK6pBLo3B+vqmK88t5xrCY9j+SIzPvCc2Iv6h8AXSfunvIZpxODhn+PmX2FBwa9TtNVePi/Iywu43fRGHz67gSVYTyTBoLRAxqW/7hEvRMXu0ECUfAPzQCq3rd4iWjMXyIYU/FsX9g4NlIno0zcCV5cs=,iv:M4FBoxzojH01hScrRoET3AwmG3qevhkxiET+W94drh0=,tag:rHf7wbkp64FKybjZL0EDDQ==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.13.1
|
||||
|
||||
Reference in New Issue
Block a user