loptland #2

Closed
Daholli wants to merge 0 commits from loptland into main
57 changed files with 717 additions and 2278 deletions

1
.envrc
View file

@ -1 +0,0 @@
export SOPS_AGE_KEY=$(ssh-to-age -i ~/.ssh/id_ed25519 -private-key)

View file

@ -1,22 +0,0 @@
on:
schedule:
- cron: 0 */6 * * *
jobs:
UpdateFlake:
runs-on: native
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Update flake
run: |
cd ${{ gitea.workspace }}
nix flake update
- name: Commit new Flake.lock
run: |
git config --local user.email "christoph.hollizeck@hey.com"
git config --local user.name "forgjo-actions[bot]"
git commit -a -m "chore: update flake"
- name: Push changes
run: git push

7
.gitattributes vendored
View file

@ -1,4 +1,3 @@
# *.png filter=lfs diff=lfs merge=lfs -text *.png filter=lfs diff=lfs merge=lfs -text
# *.webp filter=lfs diff=lfs merge=lfs -text *.webp filter=lfs diff=lfs merge=lfs -text
# *.jpg filter=lfs diff=lfs merge=lfs -text *.jpg filter=lfs diff=lfs merge=lfs -text
* !text !filter !merge !diff

View file

@ -0,0 +1,24 @@
<!--- Provide a general summary of your changes in the Title above -->
## Description
<!--- Describe your changes in detail -->
- Built on platform(s)
- [ ] x86_64-linux
- [ ] aarch64-linux
- [ ] x86_64-darwin
- [ ] aarch64-darwin
## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added tests to cover my changes.
- [ ] All new and existing tests passed.

View file

@ -1,8 +1,5 @@
keys: keys:
- &primary age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85 - &primary age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85
- &yggdrasil age1xxv54tzxz6n4cp4undmejl2lyd7k7s3yh9q0z6ed83evfuz6asqsqhaduv
- &loptland age13xshg5e6ucvnu3vqgn344mxpk5kcqutv2lf4gdffvwadq0ku5ewqy4cck6
- &nixberry age1ev7c7xfz0gmj6p5p8ugzz55y28lsn8fjlk0d8wc3w9drmw4e69ys6z5yg4
creation_rules: creation_rules:
- path_regex: secrets/secrets.yaml$ - path_regex: secrets/secrets.yaml$
key_groups: key_groups:
@ -13,16 +10,8 @@ creation_rules:
key_groups: key_groups:
- age: - age:
- *primary - *primary
- *yggdrasil
- path_regex: secrets/secrets-loptland.yaml$ - path_regex: secrets/secrets-loptland.yaml$
key_groups: key_groups:
- age: - age:
- *primary - *primary
- *loptland
- path_regex: secrets/secrets-nixberry.yaml$
key_groups:
- age:
- *primary
- *nixberry

1098
flake.lock generated

File diff suppressed because it is too large Load diff

View file

@ -2,12 +2,12 @@
description = "NixOs Config"; description = "NixOs Config";
inputs = { inputs = {
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-master.url = "github:nixos/nixpkgs/master"; nixpkgs-master.url = "github:nixos/nixpkgs/master";
nixpkgs-latest-factorio.url = "github:Daholli/nixpkgs/1f36f691a2a05eb0785d35164ba03962607348bf"; nixpkgs-latest-factorio.url = "github:Daholli/nixpkgs/d941e9aa2d89f377d45516c5edd765fef15ea90a";
nixpkgs-tuya-vacuum.url = "github:Daholli/nixpkgs/84b34e39e7a0879367189f34401191f6a0364bcf";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/master"; url = "github:nix-community/home-manager/master";
@ -30,7 +30,7 @@
### ###
# hyprland stuff # hyprland stuff
hyprland.url = "github:hyprwm/Hyprland"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hyprlock.url = "github:hyprwm/hyprlock"; hyprlock.url = "github:hyprwm/hyprlock";
hyprland-plugins = { hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins"; url = "github:hyprwm/hyprland-plugins";
@ -51,6 +51,17 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
snowfall-flake = {
url = "github:snowfallorg/flake";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
# still not sure if I like helix or nvim more, for now helix does mostly everything I need it to
kickstartnvim = {
url = "github:Daholli/kickstart-nix-nvim";
inputs.nixpkgs.follows = "nixpkgs";
};
helix = { helix = {
url = "github:helix-editor/helix"; url = "github:helix-editor/helix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -65,23 +76,7 @@
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
## temporary ## temporary
zen-browser.url = "github:0xc000022070/zen-browser-flake"; zen-browser.url = "github:ch4og/zen-browser-flake";
raspberry-pi-nix = {
url = "github:JamieMagee/raspberry-pi-nix/25118248489e047a7da43a21409b457aa2af315e";
inputs.nixpkgs.follows = "nixpkgs";
};
simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/b4fbffe79c00f19be94b86b4144ff67541613659";
catppuccin.url = "github:catppuccin/nix";
###############
# homeassitant
tuya-vaccum-maps = {
url = "github:jaidenlabelle/tuya-vacuum-maps";
flake = false;
};
################ ################
## inputs for dev shells ## inputs for dev shells
@ -118,39 +113,17 @@
outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; }; outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; };
overlays = with inputs; [ overlays = with inputs; [
snowfall-flake.overlays.default
kickstartnvim.overlays.default
hyprpanel.overlay hyprpanel.overlay
]; ];
homes.modules = with inputs; [
sops-nix.homeManagerModules.sops
catppuccin.homeModules.catppuccin
];
systems.modules.nixos = with inputs; [ systems.modules.nixos = with inputs; [
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
nix-ld.nixosModules.nix-ld nix-ld.nixosModules.nix-ld
sops-nix.nixosModules.sops sops-nix.nixosModules.sops
catppuccin.nixosModules.catppuccin
];
systems.hosts.nixberry.modules = with inputs; [
raspberry-pi-nix.nixosModules.raspberry-pi
raspberry-pi-nix.nixosModules.sd-image
];
systems.hosts.loptland.modules = with inputs; [
simple-nixos-mailserver.nixosModules.default
]; ];
systems.hosts.wsl.modules = with inputs; [ nixos-wsl.nixosModules.default ]; systems.hosts.wsl.modules = with inputs; [ nixos-wsl.nixosModules.default ];
}
// rec {
self = inputs.self;
hydraJobs = {
hosts = lib.mapAttrs (_: cfg: cfg.config.system.build.toplevel) self.outputs.nixosConfigurations;
packages = self.packages;
};
}; };
} }

View file

@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
osConfig ? { },
format ? "unknown",
...
}:
with lib.wyrdgard;
{
wyrdgard = {
apps = {
kitty = enabled;
};
tools = {
direnv = enabled;
};
};
home.stateVersion = "24.11";
}

View file

@ -17,4 +17,6 @@ with lib.wyrdgard;
direnv = enabled; direnv = enabled;
}; };
}; };
home.stateVersion = "24.11";
} }

View file

@ -2,12 +2,11 @@
lib, lib,
pkgs, pkgs,
config, config,
namespace,
osConfig ? { }, osConfig ? { },
format ? "unknown", format ? "unknown",
... ...
}: }:
with lib.${namespace}; with lib.wyrdgard;
{ {
wyrdgard = { wyrdgard = {
apps = { apps = {
@ -19,273 +18,5 @@ with lib.${namespace};
}; };
}; };
services.easyeffects = { home.stateVersion = "23.11";
enable = true;
preset = "jtrv-preset";
extraPresets = {
jtrv-preset = {
input = {
blocklist = [
];
"compressor#0" = {
attack = 5;
boost-amount = 6;
boost-threshold = -72;
bypass = false;
dry = -100;
hpf-frequency = 10;
hpf-mode = "off";
input-gain = 0;
knee = -6;
lpf-frequency = 20000;
lpf-mode = "off";
makeup = 0;
mode = "Downward";
output-gain = 0;
ratio = 4;
release = 75;
release-threshold = -40;
sidechain = {
lookahead = 0;
mode = "RMS";
preamp = 0;
reactivity = 10;
source = "Middle";
stereo-split-source = "Left/Right";
type = "Feed-forward";
};
stereo-split = false;
threshold = -20;
wet = 0;
};
"deesser#0" = {
bypass = false;
detection = "RMS";
f1-freq = 3000.0;
f1-level = -6.0;
f2-freq = 5000.0;
f2-level = -6.0;
f2-q = 1.5000000000000004;
input-gain = 0.0;
laxity = 15;
makeup = 0;
mode = "Wide";
output-gain = 0;
ratio = 5;
sc-listen = false;
threshold = -20;
};
"equalizer#0" = {
balance = 0;
bypass = false;
input-gain = 0;
left = {
band0 = {
frequency = 50;
gain = 3;
mode = "RLC (BT)";
mute = false;
q = 0.7;
slope = "x1";
solo = false;
type = "Hi-pass";
width = 4;
};
band1 = {
frequency = 90;
gain = 3;
mode = "RLC (MT)";
mute = false;
q = 0.7;
slope = "x1";
solo = false;
type = "Lo-shelf";
width = 4;
};
band2 = {
frequency = 425;
gain = -2;
mode = "BWC (MT)";
mute = false;
q = 0.9999999999999998;
slope = "x2";
solo = false;
type = "Bell";
width = 4;
};
band3 = {
frequency = 3500;
gain = 3;
mode = "BWC (BT)";
mute = false;
q = 0.7;
slope = "x2";
solo = false;
type = "Bell";
width = 4;
};
band4 = {
frequency = 9000;
gain = 2;
mode = "LRX (MT)";
mute = false;
q = 0.7;
slope = "x1";
solo = false;
type = "Hi-shelf";
width = 4;
};
};
mode = "IIR";
num-bands = 5;
output-gain = 0;
pitch-left = 0;
pitch-right = 0;
right = {
band0 = {
frequency = 50;
gain = 3;
mode = "RLC (BT)";
mute = false;
q = 0.7;
slope = "x1";
solo = false;
type = "Hi-pass";
width = 4;
};
band1 = {
frequency = 90;
gain = 3;
mode = "RLC (MT)";
mute = false;
q = 0.9999999999999998;
slope = "x1";
solo = false;
type = "Lo-shelf";
width = 4;
};
band2 = {
frequency = 425;
gain = -2;
mode = "BWC (MT)";
mute = false;
q = 0.7;
slope = "x2";
solo = false;
type = "Bell";
width = 4;
};
band3 = {
frequency = 3500;
gain = 3;
mode = "BWC (BT)";
mute = false;
q = 0.7;
slope = "x2";
solo = false;
type = "Bell";
width = 4;
};
band4 = {
frequency = 9000;
gain = 2;
mode = "LRX (MT)";
mute = false;
q = 0.7;
slope = "x1";
solo = false;
type = "Hi-shelf";
width = 4;
};
};
split-channels = false;
};
"gate#0" = {
attack = 1;
bypass = false;
curve-threshold = -50;
curve-zone = -2;
dry = -100;
hpf-frequency = 10;
hpf-mode = "off";
hysteresis = true;
hysteresis-threshold = -3;
hysteresis-zone = -1;
input-gain = 0;
lpf-frequency = 20000;
lpf-mode = "off";
makeup = 1;
output-gain = 0;
reduction = -15;
release = 200;
sidechain = {
input = "Internal";
lookahead = 0;
mode = "RMS";
preamp = 0;
reactivity = 10;
source = "Middle";
stereo-split-source = "Left/Right";
};
stereo-split = false;
wet = -1;
};
"limiter#0" = {
alr = false;
alr-attack = 5;
alr-knee = 0;
alr-release = 50;
attack = 1;
bypass = false;
dithering = "16bit";
external-sidechain = false;
gain-boost = true;
input-gain = 0;
lookahead = 5;
mode = "Herm Wide";
output-gain = 0;
oversampling = "Half x2(2L)";
release = 5;
sidechain-preamp = 0;
stereo-link = 100;
threshold = -1;
};
plugins_order = [
"rnnoise#0"
"gate#0"
"deesser#0"
"compressor#0"
"equalizer#0"
"speex#0"
"limiter#0"
];
"rnnoise#0" = {
bypass = false;
enable-vad = false;
input-gain = 0;
model-path = "";
output-gain = 0;
release = 20;
vad-thres = 50;
wet = 0;
};
"speex#0" = {
bypass = false;
enable-agc = false;
enable-denoise = false;
enable-dereverb = false;
input-gain = 0;
noise-suppression = -70;
output-gain = 0;
vad = {
enable = true;
probability-continue = 90;
probability-start = 95;
};
};
};
};
};
};
} }

View file

@ -18,14 +18,13 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
catppuccin.fish.enable = true;
programs = { programs = {
fish = { fish = {
enable = true; enable = true;
shellInit = '' shellInit = ''
zoxide init fish | source zoxide init fish | source
direnv hook fish | source direnv hook fish | source
source ~/.config/op/plugins.sh
set -x LESS_TERMCAP_mb \e'[01;32m' set -x LESS_TERMCAP_mb \e'[01;32m'
set -x LESS_TERMCAP_md \e'[01;32m' set -x LESS_TERMCAP_md \e'[01;32m'
@ -39,14 +38,9 @@ in
''; '';
shellAliases = { shellAliases = {
vim = "hx"; vim = "hx";
ls = "eza -lah --icons --git"; ls = "eza -lh --icons --git";
lss = "ls --total-size"; lss = "ls --total-size";
}; };
functions = {
checkHash = "nix hash to-sri --type sha256 $(nix-prefetch-url --unpack $argv)";
deployNixberry = "nixos-rebuild switch --flake .#nixberry --target-host nixberry --use-remote-sudo --fast";
deployLoptland = "nixos-rebuild switch --flake .#loptland --target-host christophhollizeck.dev --use-remote-sudo --fast";
};
plugins = with pkgs.fishPlugins; [ plugins = with pkgs.fishPlugins; [
{ {
name = "forgit"; name = "forgit";

View file

@ -16,7 +16,6 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
catppuccin.starship.enable = true;
programs = { programs = {
fish.shellInit = " fish.shellInit = "
starship init fish | source starship init fish | source

View file

@ -19,8 +19,6 @@ in
home.sessionVariables.TERMINAL = "kitty"; home.sessionVariables.TERMINAL = "kitty";
catppuccin.kitty.enable = true;
# TODO: move this to a thunar specific module # TODO: move this to a thunar specific module
home.file.".config/Thunar/uca.xml".text = '' home.file.".config/Thunar/uca.xml".text = ''
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -42,7 +40,7 @@ in
programs.kitty = { programs.kitty = {
enable = true; enable = true;
# themeFile = "tokyo_night_night"; themeFile = "tokyo_night_night";
font = { font = {
name = "Code New Roman"; name = "Code New Roman";
size = 15; size = 15;

View file

@ -16,7 +16,7 @@ in
enable = mkBoolOpt true "Enable Git (Default true)"; enable = mkBoolOpt true "Enable Git (Default true)";
userName = mkOpt types.str user.fullName "The name to configure git with."; userName = mkOpt types.str user.fullName "The name to configure git with.";
userEmail = mkOpt types.str user.email "The email to configure git with."; userEmail = mkOpt types.str user.email "The email to configure git with.";
signingKey = mkOpt types.str "ACCFA2DB47795D9E" "The pub key to sign commits with."; signingKey = mkOpt types.str "6995A5FF33791B7B" "The pub key to sign commits with.";
signByDefault = mkOpt types.bool true "Whether to sign commits by default."; signByDefault = mkOpt types.bool true "Whether to sign commits by default.";
}; };
@ -52,7 +52,6 @@ in
]; ];
strategy = "incremental"; strategy = "incremental";
}; };
lfs."https://git.christophhollizeck.dev/Daholli/nixos-config.git/info/lfs".locksverify = true;
}; };
}; };
}; };

View file

@ -11,10 +11,8 @@ let
inherit (lib.${namespace}) mkBoolOpt; inherit (lib.${namespace}) mkBoolOpt;
cfg = config.${namespace}.apps._1password; cfg = config.${namespace}.apps._1password;
username = config.${namespace}.user.name;
in in
{ {
options.${namespace}.apps._1password = { options.${namespace}.apps._1password = {
enable = mkBoolOpt true "Enable 1Password"; enable = mkBoolOpt true "Enable 1Password";
}; };
@ -24,14 +22,8 @@ in
_1password.enable = true; _1password.enable = true;
_1password-gui = { _1password-gui = {
enable = true; enable = true;
polkitPolicyOwners = [ username ]; polkitPolicyOwners = [ config.${namespace}.user.name ];
}; };
}; };
${namespace}.home.file.".ssh/config".text = ''
Host *
ForwardAgent yes
IdentityAgent /home/${username}/.1password/agent.sock
'';
}; };
} }

View file

@ -8,7 +8,7 @@
... ...
}: }:
let let
inherit (lib) mkIf mkEnableOption mkOption; inherit (lib) mkIf mkEnableOption;
cfg = config.${namespace}.apps.cli-apps.helix; cfg = config.${namespace}.apps.cli-apps.helix;
cachix-url = "https://helix.cachix.org"; cachix-url = "https://helix.cachix.org";
@ -19,42 +19,27 @@ in
{ {
options.${namespace}.apps.cli-apps.helix = { options.${namespace}.apps.cli-apps.helix = {
enable = mkEnableOption "Whether to enable helix or not"; enable = mkEnableOption "Whether to enable helix or not";
pkg = mkOption {
type = lib.types.package;
default = helix-pkg;
description = "Which helix pacakge to use";
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment = { environment = {
systemPackages = [ systemPackages = [
cfg.pkg helix-pkg
pkgs.wl-clipboard
]; ];
}; };
${namespace} = { ${namespace} = {
home.extraOptions = { home.extraOptions = {
home.file.".config/helix/ignore".text = ''
.idea/
!**/appsettings.json
.direnv/
.devenv/
'';
catppuccin.helix.enable = true;
programs.helix = { programs.helix = {
enable = true; enable = true;
package = helix-pkg; package = helix-pkg;
defaultEditor = true; defaultEditor = true;
settings = { settings = {
theme = "tokyonight";
editor = { editor = {
auto-format = true; auto-format = true;
line-number = "relative"; line-number = "relative";
file-picker = {
hidden = false;
};
lsp = { lsp = {
display-inlay-hints = true; display-inlay-hints = true;
@ -154,21 +139,11 @@ in
config.provideFormatter = true; config.provideFormatter = true;
config.json.validate.enable = true; config.json.validate.enable = true;
}; };
vscode-html-language-server = {
command = "${pkgs.vscode-langservers-extracted}/bin/vscode-html-language-server";
args = [ "--stdio" ];
config.provideFormatter = true;
};
vscode-css-language-server = { vscode-css-language-server = {
command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server"; command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server";
args = [ "--stdio" ]; args = [ "--stdio" ];
config.provideFormatter = true; config.provideFormatter = true;
}; };
vscode-eslint-language-server = {
command = "${pkgs.vscode-langservers-extracted}/bin/vscode-eslint-language-server";
args = [ "--stdio" ];
config.provideFormatter = true;
};
}; };
}; };
}; };

View file

@ -19,7 +19,6 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
discord discord
vesktop
]; ];
}; };
} }

View file

@ -1,23 +0,0 @@
{
config,
lib,
namespace,
options,
pkgs,
...
}:
let
inherit (lib) mkIf mkEnableOption;
cfg = config.${namespace}.apps.starsector;
in
{
options.${namespace}.apps.starsector = {
enable = mkEnableOption "Whether or not to enable the game starsector.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
starsector
];
};
}

View file

@ -23,15 +23,12 @@ in
zenbrowser zenbrowser
]; ];
environment.sessionVariables = { environment.sessionVariables.DEFAULT_BROWSER = "${zenbrowser}/bin/zen";
DEFAULT_BROWSER = "${zenbrowser}/bin/zen-beta";
BROWSER = "zen-beta";
};
environment.etc = { environment.etc = {
"1password/custom_allowed_browsers" = { "1password/custom_allowed_browsers" = {
text = '' text = ''
zen .zen-wrapped
''; '';
mode = "0755"; mode = "0755";
}; };

View file

@ -2,12 +2,14 @@
config, config,
lib, lib,
namespace, namespace,
pkgs,
... ...
}: }:
let let
inherit (lib) mkIf mkEnableOption; inherit (lib) mkIf mkEnableOption;
cfg = config.${namespace}.desktop.addons.hypridle; cfg = config.${namespace}.desktop.addons.hypridle;
username = config.${namespace}.user.name;
in in
{ {
options.${namespace}.desktop.addons.hypridle = { options.${namespace}.desktop.addons.hypridle = {
@ -15,19 +17,19 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
${namespace}.home.extraOptions = { snowfallorg.users.${username}.home.config = {
services.hypridle = { services.hypridle = {
enable = true; enable = true;
settings = { settings = {
general = { general = {
after_sleep_cmd = "hyprctl dispatch dpms on"; after_sleep_cmd = "hyprctl dispatch dpms on";
ignore_dbus_inhibit = false; ignore_dbus_inhibit = false;
lock_cmd = "hyprlock-blur"; lock_cmd = "hyprlock";
}; };
listener = [ listener = [
{ {
timeout = 600; timeout = 900;
on-timeout = "loginctl lock-session"; on-timeout = "loginctl lock-session";
} }
{ {

View file

@ -31,11 +31,9 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
security.pam.services.hyprlock = { }; security.pam.services.hyprlock = { };
environment.systemPackages = [ hyprlock-blur ];
${namespace}.desktop.hyprland.settings = { ${namespace}.desktop.hyprland.settings = {
bind = [ bind = [
"$mod CTRL, l, exec, hyprlock-blur" "$mod CTRL, l, exec, ${hyprlock-blur}/bin/hyprlock-blur"
]; ];
}; };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

After

Width:  |  Height:  |  Size: 132 B

Before After
Before After

View file

@ -610,9 +610,5 @@ in
text = builtins.toJSON settings; text = builtins.toJSON settings;
}; };
}; };
environment.systemPackages = with pkgs.nerd-fonts; [
jetbrains-mono
];
}; };
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 132 B

Before After
Before After

View file

@ -17,15 +17,11 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
catppuccin.flavor = "mocha";
catppuccin.enable = true;
${namespace}.home.extraOptions = { ${namespace}.home.extraOptions = {
catppuccin.flavor = "mocha"; dconf.settings = {
catppuccin.enable = true; "org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
dconf = { };
settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
}; };
gtk = { gtk = {
@ -44,5 +40,6 @@ in
platformTheme = "gnome"; platformTheme = "gnome";
style = "adwaita-dark"; style = "adwaita-dark";
}; };
}; };
} }

View file

@ -31,51 +31,9 @@ let
else else
# always open on w/space 4 # always open on w/space 4
hyprctl dispatch workspace 9 hyprctl dispatch workspace 9
ELECTRON_OZONE_PLATFORM_HINT=x11 1password& 1password&
fi fi
''; '';
# clipsync = pkgs.writeShellScriptBin "clipsync" ''
# insert() {
# # Read all the piped input into variable.
# value=$(cat)
# wValue="$(wl-paste)"
# xValue="$(xclip -o -selection clipboard)"
# notify() {
# notify-send -u low -c clipboard "$1" "$value"
# }
# if [ "$value" != "$wValue" ]; then
# notify "Wayland"
# echo -n "$value" | wl-copy
# fi
# if [ "$value" != "$xValue" ]; then
# notify "X11"
# echo -n "$value" | xclip -selection clipboard
# fi
# }
# watch() {
# # Wayland -> X11
# wl-paste --type text --watch clipsync insert &
# # X11 -> Wayland
# while clipnotify; do
# xclip -o -selection clipboard | clipsync insert
# done &
# }
# kill() {
# pkill wl-paste
# pkill clipnotify
# pkill xclip
# pkill clipsync
# }
# "$@"
# '';
in in
{ {
options.${namespace}.desktop.hyprland = { options.${namespace}.desktop.hyprland = {
@ -96,13 +54,8 @@ in
libnotify libnotify
# Wayland Utilities # Wayland Utilities
wlr-randr
# Clipboard Stuff
wl-clipboard wl-clipboard
xclip wlr-randr
clipnotify
# clipsync
# Screenshot Utility # Screenshot Utility
grimblast grimblast
@ -128,15 +81,11 @@ in
}; };
}; };
services.greetd = { services = {
xserver = enabled;
displayManager.sddm = {
enable = true; enable = true;
settings = rec { theme = "Elegant";
initial_session = {
command = "${hyprland-package}/bin/Hyprland";
user = "cholli";
};
default_session = initial_session;
}; };
}; };
@ -168,15 +117,19 @@ in
{ {
"$mod" = "SUPER"; "$mod" = "SUPER";
env = [
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
"QT_QPA_PLATFORM,wayland;xcb"
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
];
exec-once = [ exec-once = [
"systemctl --user start hyprpolkitagent" "systemctl --user start hyprpolkitagent"
"[workspace 2 silent] steam --disable-gpu-compositing" # nvidia pls let me have nice things "[workspace 2 silent] steam --disable-gpu-compositing" # nvidia pls let me have nice things
"[workspace 8 silent] discord" "[workspace 8 silent] discord --disable-gpu-compositing"
"[workspace 9 silent] ELECTRON_OZONE_PLATFORM_HINT=x11 1password" # fix for promts not showing up anymore "[workspace 9 silent] 1password"
"[workspace 1 silent] zen-beta" "[workspace 1 silent] zen"
"${pkgs.xorg.xhost}/bin/xhost +"
]; ];
windowrulev2 = [ windowrulev2 = [
@ -263,6 +216,7 @@ in
"$mod SHIFT, P, changegroupactive, b" "$mod SHIFT, P, changegroupactive, b"
"$mod, R, togglesplit," "$mod, R, togglesplit,"
"$mod, T, togglefloating," "$mod, T, togglefloating,"
"$mod, P, pseudo,"
"$mod ALT, ,resizeactive," "$mod ALT, ,resizeactive,"
"$mod CTRL, left, movecurrentworkspacetomonitor, l" "$mod CTRL, left, movecurrentworkspacetomonitor, l"
@ -290,6 +244,7 @@ in
#run important programs #run important programs
"$mod, Return, exec, kitty" "$mod, Return, exec, kitty"
"$mod, Z, exec, zen"
"$mod, D, exec, rofi -show drun" "$mod, D, exec, rofi -show drun"
"$mod, P, exec, focus-or-open-1pass" "$mod, P, exec, focus-or-open-1pass"
# "$mod, D, exec, rofi -show combi" # "$mod, D, exec, rofi -show combi"
@ -361,14 +316,7 @@ in
}; };
environment.sessionVariables = { environment.sessionVariables = {
NIXOS_OZONE_WL = "1"; # Hint electron apps to use wayland NIXOS_OZONE_WL = "1";
ELECTRON_OZONE_PLATFORM_HINT = "auto";
XDG_SESSION_TYPE = "wayland";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
QT_QPA_PLATFORM = "wayland;xcb";
}; };
}; };
} }

View file

@ -20,15 +20,15 @@ in
}; };
config = { config = {
snowfallorg.users.${config.${namespace}.user.name}.home.config = mkMerge [ ${namespace}.home.extraOptions = {
{
home.stateVersion = config.system.stateVersion; home.stateVersion = config.system.stateVersion;
home.file = mkAliasDefinitions options.${namespace}.home.file; home.file = mkAliasDefinitions options.${namespace}.home.file;
xdg.enable = true; xdg.enable = true;
xdg.configFile = mkAliasDefinitions options.${namespace}.home.configFile; xdg.configFile = mkAliasDefinitions options.${namespace}.home.configFile;
} };
config.${namespace}.home.extraOptions
]; snowfallorg.users.${config.${namespace}.user.name}.home.config =
config.${namespace}.home.extraOptions;
home-manager = { home-manager = {
useUserPackages = true; useUserPackages = true;

View file

@ -41,13 +41,10 @@ in
}) cfg.extra-substituters; }) cfg.extra-substituters;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
snowfallorg.flake
nixfmt-rfc-style nixfmt-rfc-style
nix-prefetch-git nix-prefetch-git
nix-du nix-du
nix-weather
nix-index
nix-output-monitor
]; ];
nix = nix =
@ -55,8 +52,7 @@ in
users = [ users = [
"root" "root"
config.${namespace}.user.name config.${namespace}.user.name
"gitea-runner" ];
] ++ optional config.services.hydra.enable "hydra hydra-www hydra-evaluator hydra-queue-runner";
in in
{ {
package = cfg.package; package = cfg.package;
@ -71,7 +67,6 @@ in
auto-optimise-store = true; auto-optimise-store = true;
trusted-users = users; trusted-users = users;
allowed-users = users; allowed-users = users;
allowed-uris = "github: https://github.com/ git+https://github.com/ gitlab: https://gitlab.com/ git+https://gitlab.com/";
substituters = [ substituters = [
cfg.default-substituter.url cfg.default-substituter.url
] ++ (mapAttrsToList (name: value: name) cfg.extra-substituters); ] ++ (mapAttrsToList (name: value: name) cfg.extra-substituters);

View file

@ -26,15 +26,15 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
sops = { sops = {
secrets = { secrets = {
"netcup/customer_number" = { netcup_customer_number = {
inherit (cfg) sopsFile; inherit (cfg) sopsFile;
}; };
"netcup/api/key" = { netcup_api_key = {
inherit (cfg) sopsFile; inherit (cfg) sopsFile;
}; };
"netcup/api/password" = { netcup_api_password = {
inherit (cfg) sopsFile; inherit (cfg) sopsFile;
}; };
}; };
@ -42,9 +42,9 @@ in
templates = { templates = {
"netcup.env" = { "netcup.env" = {
content = '' content = ''
NETCUP_CUSTOMER_NUMBER=${config.sops.placeholder."netcup/customer_number"} NETCUP_CUSTOMER_NUMBER=${config.sops.placeholder.netcup_customer_number}
NETCUP_API_KEY=${config.sops.placeholder."netcup/api/key"} NETCUP_API_KEY=${config.sops.placeholder.netcup_api_key}
NETCUP_API_PASSWORD=${config.sops.placeholder."netcup/api/password"} NETCUP_API_PASSWORD=${config.sops.placeholder.netcup_api_password}
NETCUP_PROPAGATION_TIMEOUT=1200 NETCUP_PROPAGATION_TIMEOUT=1200
''; '';
}; };

View file

@ -43,7 +43,7 @@ in
pinentry-qt pinentry-qt
yubikey-manager yubikey-manager
yubioath-flutter yubikey-manager-qt
reload-yubikey reload-yubikey
]; ];
@ -64,6 +64,7 @@ in
".gnupg/gpg.conf".source = gpgConf; ".gnupg/gpg.conf".source = gpgConf;
".gnupg/gpg-agent.conf".text = gpgAgentConf; ".gnupg/gpg-agent.conf".text = gpgAgentConf;
".gnupg/scdeamon.conf".text = "disable-ccid"; ".gnupg/scdeamon.conf".text = "disable-ccid";
# YUBIKEYCERTIFYPASSWORD
}; };
}; };
}; };

View file

@ -18,6 +18,5 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.gnome.gnome-keyring.enable = true; services.gnome.gnome-keyring.enable = true;
security.pam.services.sddm.enableGnomeKeyring = true; security.pam.services.sddm.enableGnomeKeyring = true;
security.pam.services.greetd.enableGnomeKeyring = true;
}; };
} }

View file

@ -19,15 +19,13 @@ in
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
sops sops
age age
ssh-to-age
]; ];
sops = { sops = {
defaultSopsFile = lib.snowfall.fs.get-file "secrets/secrets.yaml"; defaultSopsFile = lib.snowfall.fs.get-file "secrets/secrets.yaml";
defaultSopsFormat = "yaml"; defaultSopsFormat = "yaml";
# age.keyFile = "/home/cholli/.config/sops/age/keys.txt"; age.keyFile = "/home/cholli/.config/sops/age/keys.txt";
age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
}; };
}; };
} }

View file

@ -24,50 +24,44 @@ in
environment.systemPackages = [ pkgs.factorio-headless ]; environment.systemPackages = [ pkgs.factorio-headless ];
sops = { sops = {
secrets = { secrets = {
"factorio/token" = { factorio_token = {
restartUnits = [ "factorio.service" ]; restartUnits = [ "factorio.service" ];
inherit (cfg) sopsFile; inherit (cfg) sopsFile;
}; };
"factorio/username" = { factorio_username = {
restartUnits = [ "factorio.service" ]; restartUnits = [ "factorio.service" ];
inherit (cfg) sopsFile; inherit (cfg) sopsFile;
}; };
"factorio/game_password" = { factorio_game_password = {
restartUnits = [ "factorio.service" ]; restartUnits = [ "factorio.service" ];
inherit (cfg) sopsFile; inherit (cfg) sopsFile;
}; };
}; };
templates."extraSettingsFile.json".content = '' templates."extraSettingsFile.json".content = ''
{ {
"name": "Pyanodons Holli", "name": "SpaceAgeHolli",
"description": "Trying to run a factorio-headless-server on my nix system", "description": "Trying to run a factorio-headless-server on my nix system",
"tags": ["vanilla"], "tags": ["vanilla"],
"max_players": 10, "max_players": 10,
"game_password": "${config.sops.placeholder."factorio/game_password"}", "game_password": "${config.sops.placeholder.factorio_game_password}",
"allow_commands": "admins-only", "allow_commands": "admins-only",
"autosave_slots": 5, "autosave_slots": 5,
"ignore_player_limit_for_returning_players": true, "ignore_player_limit_for_returning_players": true,
"username" : "${config.sops.placeholder."factorio/username"}", "username" : "${config.sops.placeholder.factorio_username}",
"token": "${config.sops.placeholder."factorio/token"}" "token": "${config.sops.placeholder.factorio_token}"
} }
''; '';
templates."extraSettingsFile.json".mode = "0444"; templates."extraSettingsFile.json".mode = "0444";
}; };
systemd.tmpfiles.rules = [
"Z /var/lib/factorio/mods 770 65400 65400 - -"
"Z /var/lib/factorio/saves 770 65400 65400 - -"
];
services.factorio = { services.factorio = {
enable = true; enable = true;
openFirewall = true; openFirewall = true;
public = true; public = true;
lan = true; lan = true;
nonBlockingSaving = true; nonBlockingSaving = true;
autosave-interval = 5; autosave-interval = 15;
saveName = "Pyanodons"; saveName = "SpaceAge";
loadLatestSave = true;
admins = [ admins = [
"daholli" "daholli"
"galbrain" "galbrain"

View file

@ -1,182 +0,0 @@
{
lib,
config,
namespace,
pkgs,
...
}:
with lib.${namespace};
let
cfg = config.${namespace}.services.gitea-runner;
inherit (lib) mkIf mkOption mkEnableOption;
inherit (lib.types)
attrsOf
package
path
submodule
str
;
in
{
options.${namespace}.services.gitea-runner = {
enable = mkEnableOption "Enable gitea/forgejo runner";
git-url = mkOption {
type = str;
default = "https://git.christophhollizeck.dev";
};
sopsFile = mkOption {
type = path;
default = lib.snowfall.fs.get-file "secrets/secrets.yaml";
description = "SecretFile";
};
runner-package = mkOption {
type = package;
default = pkgs.forgejo-actions-runner;
description = "Which runner to use Gitea/Forgjo";
};
## taken from nixos/modules/services/continuous-integration/gitea-actions-runner.nix
runner-instances = mkOption {
default = { };
description = ''
Gitea Actions Runner instances.
'';
type = attrsOf (submodule {
options = {
enable = mkEnableOption "Gitea Actions Runner instance";
name = mkOption {
type = str;
example = literalExpression "config.networking.hostName";
description = ''
The name identifying the runner instance towards the Gitea/Forgejo instance.
'';
};
url = mkOption {
type = str;
example = "https://forge.example.com";
description = ''
Base URL of your Gitea/Forgejo instance.
'';
};
tokenFile = mkOption {
type = nullOr (either str path);
default = null;
description = ''
Path to an environment file, containing the `TOKEN` environment
variable, that holds a token to register at the configured
Gitea/Forgejo instance.
'';
};
labels = mkOption {
type = listOf str;
example = literalExpression ''
[
# provide a debian base with nodejs for actions
"debian-latest:docker://node:18-bullseye"
# fake the ubuntu name, because node provides no ubuntu builds
"ubuntu-latest:docker://node:18-bullseye"
# provide native execution on the host
#"native:host"
]
'';
description = ''
Labels used to map jobs to their runtime environment. Changing these
labels currently requires a new registration token.
Many common actions require bash, git and nodejs, as well as a filesystem
that follows the filesystem hierarchy standard.
'';
};
settings = mkOption {
description = ''
Configuration for `act_runner daemon`.
See https://gitea.com/gitea/act_runner/src/branch/main/internal/pkg/config/config.example.yaml for an example configuration
'';
type = types.submodule {
freeformType = settingsFormat.type;
};
default = { };
};
hostPackages = mkOption {
type = listOf package;
default = with pkgs; [
bash
coreutils
curl
gawk
gitMinimal
gnused
nodejs
wget
];
defaultText = literalExpression ''
with pkgs; [
bash
coreutils
curl
gawk
gitMinimal
gnused
nodejs
wget
]
'';
description = ''
List of packages, that are available to actions, when the runner is configured
with a host execution label.
'';
};
};
});
};
};
config = mkIf cfg.enable {
sops = {
secrets = {
"forgejo/runner/token" = {
inherit (cfg) sopsFile;
};
};
};
services.gitea-actions-runner = {
package = cfg.runner-package;
instances = {
native = {
enable = true;
name = "monolith";
url = cfg.git-url;
tokenFile = config.sops.secrets."forgejo/runner/token".path;
labels = [
"native:host"
];
hostPackages = with pkgs; [
bash
coreutils
curl
gawk
gitMinimal
gnused
nodejs
wget
lix
];
settings = {
log.level = "info";
runner = {
capacity = 1;
timeout = "3h";
shutdown_timeout = "5s";
fetch_timeout = "10s";
fetch_inteval = "5s";
};
};
};
} // cfg.runner-instances;
};
};
}

View file

@ -1,37 +0,0 @@
{
lib,
config,
namespace,
...
}:
let
cfg = config.${namespace}.services.hydra;
inherit (lib) mkIf mkOption mkEnableOption;
in
{
options.${namespace}.services.hydra = {
enable = mkEnableOption "Enable Hydra CI";
httpPort = mkOption {
type = lib.types.int;
default = 2000;
description = "The path to host the http server on, relevant for nginx forwarding";
};
enableCache = mkEnableOption "Enable cache using nix-server";
};
config = mkIf cfg.enable {
services.nix-serve = mkIf cfg.enableCache {
enable = true;
secretKeyFile = "/var/cache-priv-key.pem";
};
services.hydra = {
enable = true;
hydraURL = "http://localhost:${toString cfg.httpPort}";
port = cfg.httpPort;
notificationSender = "hydra@localhost";
useSubstitutes = true;
};
};
}

View file

@ -1,29 +0,0 @@
{
lib,
config,
namespace,
...
}:
let
cfg = config.${namespace}.services.openssh;
inherit (lib) mkIf mkEnableOption;
in
{
options.${namespace}.services.openssh = {
enable = mkEnableOption "Enable SSH";
};
config = mkIf cfg.enable {
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
};
};
services.fail2ban = {
enable = true;
};
};
}

View file

@ -1,48 +0,0 @@
{
lib,
config,
namespace,
...
}:
let
cfg = config.${namespace}.services.remotebuild;
inherit (lib) mkIf mkEnableOption;
in
{
options.${namespace}.services.remotebuild = {
enable = mkEnableOption "Enable remotebuild";
};
config = mkIf cfg.enable {
users.users.remotebuild = {
isNormalUser = true;
createHome = false;
group = "remotebuild";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJYZjG+XPNoVHVdCel5MK4mwvtoFCqDY1WMI1yoU71Rd root@yggdrasil"
];
};
users.groups.remotebuild = { };
nix = {
nrBuildUsers = 64;
settings = {
trusted-users = [ "remotebuild" ];
min-free = 10 * 1024 * 1024;
max-free = 200 * 1024 * 1024;
max-jobs = "auto";
cores = 0;
};
};
systemd.services.nix-daemon.serviceConfig = {
MemoryAccounting = true;
MemoryMax = "90%";
OOMScoreAdjust = 500;
};
};
}

View file

@ -17,7 +17,7 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
fastfetch neofetch
fd fd
tree tree
@ -27,27 +27,10 @@ in
wslu wslu
wsl-open wsl-open
zip
unzip
]; ];
${namespace} = { ${namespace} = {
nix = { nix = enabled;
enable = true;
extra-substituters = {
"https://cache.lix.systems" = {
key = "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=";
};
"https://nix-community.cachix.org" = {
key = "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=";
};
"https://nixcache.christophhollizeck.dev" = {
key = "christophhollizeck.dev:7pPAvm9xqFQB8FDApVNL6Tii1Jsv+Sj/LjEIkdeGhbA=";
};
};
};
apps.cli-apps.helix = enabled; apps.cli-apps.helix = enabled;

View file

@ -18,7 +18,7 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
fastfetch neofetch
fd fd
tree tree
@ -30,26 +30,10 @@ in
pciutils pciutils
usbutils usbutils
btop btop
zip
unzip
]; ];
${namespace} = { ${namespace} = {
nix = { nix = enabled;
enable = true;
extra-substituters = {
"https://cache.lix.systems" = {
key = "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=";
};
"https://nix-community.cachix.org" = {
key = "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=";
};
"https://nixcache.christophhollizeck.dev" = {
key = "christophhollizeck.dev:7pPAvm9xqFQB8FDApVNL6Tii1Jsv+Sj/LjEIkdeGhbA=";
};
};
};
apps.cli-apps.helix = enabled; apps.cli-apps.helix = enabled;

View file

@ -1,84 +0,0 @@
Arch: win64
CompatData: ''
Creation_Date: '2024-11-12 18:24:45.924771'
Custom_Path: false
DLL_Overrides: {}
DXVK: dxvk-2.4.1
Environment: Custom
Environment_Variables: {}
External_Programs:
b8ae3872-d1d4-435f-ba7f-1cd829b4da81:
executable: eve-online-latest+Setup.exe
folder: /home/cholli/Downloads
id: b8ae3872-d1d4-435f-ba7f-1cd829b4da81
name: eve-online-latest+Setup
path: /home/cholli/Downloads/eve-online-latest+Setup.exe
Installed_Dependencies:
- dotnet40
- dotnet48
- vcredist2022
Language: sys
LatencyFleX: latencyflex-v0.1.1
NVAPI: dxvk-nvapi-v0.7.1
Name: EVE
Parameters:
custom_dpi: 96
decorated: true
discrete_gpu: false
dxvk: true
dxvk_nvapi: false
fixme_logs: false
fsr: false
fsr_quality_mode: none
fsr_sharpening_strength: 2
fullscreen_capture: false
gamemode: false
gamescope: false
gamescope_borderless: false
gamescope_fps: 0
gamescope_fps_no_focus: 0
gamescope_fullscreen: true
gamescope_game_height: 0
gamescope_game_width: 0
gamescope_scaling: false
gamescope_window_height: 0
gamescope_window_width: 0
latencyflex: false
mangohud: false
mouse_warp: true
obsvkc: false
pulseaudio_latency: false
renderer: gl
sandbox: false
sync: wine
take_focus: false
use_be_runtime: true
use_eac_runtime: true
use_runtime: false
use_steam_runtime: false
versioning_automatic: false
versioning_compression: false
versioning_exclusion_patterns: false
virtual_desktop: false
virtual_desktop_res: 1280x720
vkbasalt: false
vkd3d: true
vmtouch: false
vmtouch_cache_cwd: false
Path: EVE
Runner: caffe-9.7
RunnerPath: ''
Sandbox:
share_net: false
share_sound: false
State: 0
Uninstallers: {}
Update_Date: '2024-11-12 18:36:11.134986'
VKD3D: vkd3d-proton-2.13
Versioning: false
Versioning_Exclusion_Patterns: []
Windows: win10
WorkingDir: /storage/home/bottles
data: {}
run_in_terminal: false
session_arguments: ''

View file

@ -28,11 +28,15 @@ in
fonts.packages = fonts.packages =
with pkgs; with pkgs;
[ [
(nerdfonts.override {
fonts = [
"CodeNewRoman"
"NerdFontsSymbolsOnly"
];
})
font-awesome font-awesome
powerline-fonts powerline-fonts
powerline-symbols powerline-symbols
nerd-fonts.code-new-roman
nerd-fonts.symbols-only
] ]
++ cfg.fonts; ++ cfg.fonts;
}; };

View file

@ -18,11 +18,13 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
noisetorch
pavucontrol pavucontrol
easyeffects
]; ];
services.pulseaudio = disabled; programs.noisetorch.enable = true;
hardware.pulseaudio = disabled;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {

View file

@ -28,20 +28,9 @@ in
powerManagement.enable = true; powerManagement.enable = true;
open = false; open = false;
nvidiaSettings = true; nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta; # stable, beta package = config.boot.kernelPackages.nvidiaPackages.stable; # stable, beta
}; };
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = [ "nvidia" ];
boot.kernelParams = [
"nvidia.NVreg_PreserveVideoMemoryAllocations=1"
"nvidia_drm.fbdev=1"
];
environment.sessionVariables = {
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
LIBVA_DRIVER_NAME = "nvidia";
NVD_BACKEND = "direct";
};
}; };
} }

View file

@ -1,23 +0,0 @@
{
config,
lib,
namespace,
pkgs,
...
}:
let
inherit (lib) mkIf mkEnableOption;
cfg = config.${namespace}.tools.devenv;
in
{
options.${namespace}.tools.devenv = {
enable = mkEnableOption "Whether or not to enable direnv.";
};
config = mkIf cfg.enable {
environment.systemPackages = [
pkgs.devenv
];
};
}

View file

@ -17,7 +17,7 @@ in
enable = mkBoolOpt true "Wether or not to enable git (Default enabled)"; enable = mkBoolOpt true "Wether or not to enable git (Default enabled)";
userName = mkOpt types.str user.fullName "The name to use git with"; userName = mkOpt types.str user.fullName "The name to use git with";
userEmail = mkOpt types.str user.email "The email to use git with"; userEmail = mkOpt types.str user.email "The email to use git with";
signingKey = mkOpt types.str "ACCFA2DB47795D9E" "The key ID to sign commits with."; signingKey = mkOpt types.str "6995A5FF33791B7B" "The key ID to sign commits with.";
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -34,7 +34,7 @@ in
lfs.enable = true; lfs.enable = true;
signing = { signing = {
key = cfg.signingKey; key = cfg.signingKey;
signByDefault = true; signByDefault = mkIf gpg.enable true;
}; };
extraConfig = { extraConfig = {
init = { init = {
@ -49,7 +49,6 @@ in
safe = { safe = {
directory = "${config.users.users.${user.name}.home}/projects/config"; directory = "${config.users.users.${user.name}.home}/projects/config";
}; };
lfs."https://git.christophhollizeck.dev/Daholli/nixos-config.git/info/lfs".locksverify = true;
}; };
}; };
}; };

View file

@ -2,6 +2,7 @@
config, config,
lib, lib,
namespace, namespace,
options,
pkgs, pkgs,
... ...
}: }:
@ -10,6 +11,33 @@ with lib.${namespace};
let let
cfg = config.${namespace}.user; cfg = config.${namespace}.user;
defaultIconFileName = "profile.png"; defaultIconFileName = "profile.png";
defaultIcon = pkgs.stdenvNoCC.mkDerivation {
name = "default-icon";
src = ./. + "/${defaultIconFileName}";
dontUnpack = true;
installPhase = ''
cp $src $out
'';
passthru = {
fileName = defaultIconFileName;
};
};
propagatedIcon =
pkgs.runCommandNoCC "propagated-icon"
{
passthru = {
inherit (fileName) ;
};
}
''
local target="$out/share/${namespace}-icons/user/${cfg.name}"
mkdir -p "$target"
cp ${cfg.icon} "$target/${cfg.icon.fileName}"
'';
in in
{ {
options.${namespace}.user = with types; { options.${namespace}.user = with types; {
@ -17,7 +45,7 @@ in
fullName = mkOpt str "Christoph Hollizeck" "The full name of the user."; fullName = mkOpt str "Christoph Hollizeck" "The full name of the user.";
email = mkOpt str "christoph.hollizeck@hey.com" "The email of the user."; email = mkOpt str "christoph.hollizeck@hey.com" "The email of the user.";
initialPassword = mkOpt str "asdf" "The initial password to use when the user is first created."; initialPassword = mkOpt str "asdf" "The initial password to use when the user is first created.";
icon = mkOpt (nullOr path) ./${defaultIconFileName} "The profile picture to use for the user."; icon = mkOpt (nullOr package) defaultIcon "The profile picture to use for the user.";
extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned."; extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned.";
extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.<name>`."); extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.<name>`.");
trustedPublicKeys = mkOption { trustedPublicKeys = mkOption {
@ -50,7 +78,7 @@ in
"Videos/.keep".text = ""; "Videos/.keep".text = "";
"projects/.keep".text = ""; "projects/.keep".text = "";
".face".source = cfg.icon; ".face".source = cfg.icon;
"Pictures/${defaultIconFileName}".source = cfg.icon; "Pictures/${cfg.icon.fileName or (builtins.baseNameOf cfg.icon)}".source = cfg.icon;
}; };
}; };

View file

@ -0,0 +1,9 @@
{ ... }:
final: prev: {
discord = prev.discord.overrideAttrs (oldAttrs: {
commandLineArgs = ''
--disable-gpu-compositing
'';
});
}

View file

@ -1,8 +0,0 @@
{ ... }:
final: prev: {
starsector = prev.starsector.overrideAttrs (prevAttrs: {
postInstall = ''
wrapProgram $out/bin/starsector --set __GL_THREADED_OPTIMIZATIONS 0
'';
});
}

View file

@ -1,5 +0,0 @@
{ channels, ... }:
final: prev: {
tuya-vacuum = channels.nixpkgs-tuya-vacuum.python3Packages.tuya-vacuum;
}

View file

@ -1,44 +1,30 @@
factorio: #ENC[AES256_GCM,data:Cgp+gOU81+rvdlY=,iv:8DxJxnCslDoEu0bxtlTjmNiAUCdiAV/8VYKTb4yqQ50=,tag:ZTkK7WCOBh1It6GuKPUXdg==,type:comment]
username: ENC[AES256_GCM,data:aFRsUMsoaw==,iv:8EGn99WbgJxUyEKuOcwV6U8awOl7bDfmui+M3mDBoCg=,tag:BzMvGS3lfTsXToI/I5dguQ==,type:str] factorio_username: ENC[AES256_GCM,data:egV5kXtAiw==,iv:Hay0PC2yol5FAJGcWxLkxzNdwpD1V4UfDDnkhsjvjVQ=,tag:QBDS6eAeOswQoHBoi4Gj6A==,type:str]
token: ENC[AES256_GCM,data:WP6FTOBOBuNF6+pzi090wXsXpL2XsU34dQ2ZMzmw,iv:uKM4hLyx3vdyk9F0SyKu4x+2sl442GWXwEKbdgo/Dug=,tag:Xw3BJ7wxuft6hOG9cGtW0g==,type:str] factorio_token: ENC[AES256_GCM,data:whruEJQCNIqqfMA0A3yQdwwrzpIJBt815Lvex4Au,iv:hh3zZt+UxV9ltSHIAjpTRwtDvPgPU5APrB/1bXtKUkE=,tag:AgUmBYWp+Oyxm8O7yD8vlA==,type:str]
game_password: ENC[AES256_GCM,data:GtLNoCdQH1M=,iv:dxOMtXscLeMdsQxWjNgrIMb08vL2wAswvd1oM6pEWPA=,tag:a55ciDtw9mjLM9x5YQBTwQ==,type:str] factorio_game_password: ENC[AES256_GCM,data:Gu/p0+Sbd6Y=,iv:6AB1T3JdleiUnusU7hw/0wOFNSBsAsBgP2yD9FB7zXk=,tag:DMgD4csthynuBon+KNZtOw==,type:str]
forgejo: #ENC[AES256_GCM,data:15i2BBxM4iM=,iv:JV6Lsk8jUZl/eIJWkH/w5I2NraB9J9+0ggsENBGgbdI=,tag:HDwGheUv7dFIztQoJBjGmQ==,type:comment]
db: forgejo_db_password: ENC[AES256_GCM,data:CFsvko1AXRymDBC6WiOBs98rvFM=,iv:Wemhu8URxA6HsWQyYcPSwJzuMP4myrDC3rU3GEDVt7c=,tag:6wcNlDFVdnjez8hzi4E2cw==,type:str]
password: ENC[AES256_GCM,data:CicLsCG2WCtiKMcz3DF5eVVaT8A=,iv:SPO1H4AZwo5FjJWkf1OS7aPOrpTGxqsAj4q3cuuWAbA=,tag:0snK8RyAd8heNvui2sbSNw==,type:str] #ENC[AES256_GCM,data:nQnLBl7v,iv:HORr/Uvw4eUXfW5uS6rWr+6FkFF9bTNpMYGaRpVITRY=,tag:/r4n/xpqp7EPecGxDj4N+w==,type:comment]
mail: netcup_customer_number: ENC[AES256_GCM,data:pRooJa3O,iv:0U/ONcWa2eqcsT1UpgXmLpAvJndaU8zln2g1HMbBQYE=,tag:+pu8EBl/dnm6DoLAtrjZBQ==,type:str]
password: ENC[AES256_GCM,data:XgQZM0MBUEELyhH7UvyyMEiUABs=,iv:m3Wzs2SAPQ2w6UC02lpTvwd83Dt0LEzqdIj65HeOrbU=,tag:3cr5dnjeyoJ4ze9RFd9K5g==,type:str] netcup_api_key: ENC[AES256_GCM,data:nlkDz1VV2NIXxv/tIROWDHN9DLI0lVq9n9l2FlDwt+3H4G4gg6yCeZjGtR+pTCNfwio=,iv:x8HLL10ww52UJDkz7Yi02KBg7jbuLFHAlG0iMYDd8hk=,tag:pcuka4/Hu/QFIwS0b8GlxQ==,type:str]
passwordHash: ENC[AES256_GCM,data:hHGJBUEtCi/gErZ5vm0gsEFqyIDNkED4scR4NAOSzbiiZAYTMg++yqf3hfjjwWV3wTPswNpzzw+gYKEH,iv:wDM5IOOamopFpMEkUit4y7LBZi8CJff3+Tc08lK4IXI=,tag:FaaaohtA+vBFwjDugoemQw==,type:str] netcup_api_password: ENC[AES256_GCM,data:k2mdQp57x5ZTypRCHbVlq1fembJ0uj5D0rb72K5rac43p888y3TFyiYVuDTosxR66mo=,iv:0OhtKWD/LWeV5ZWN9fbPozebSxvaFRdSn1AkX97ffAM=,tag:uY6A4jBL/9mtGy7++Yvn0A==,type:str]
runner:
token: ENC[AES256_GCM,data:mnKLrRPsh3l8jVOCxBrZvSoELR+Bbf8iWBbb8fFmO+0tVniV87M3/0CDneXkuA==,iv:jdySCO3mB+Kz236IBuz8SMGBI6dtFjvcaQLb0zOxW/w=,tag:h+HGLRnbDYLHrTd5dnMIYw==,type:str]
netcup:
customer_number: ENC[AES256_GCM,data:9+QboNg1,iv:Tg9ylJUM8L/kzqFmk2uIsD9noqnp5wIxr5GVXMsZwB8=,tag:2qRggSIkPHuCQYDWCfka5Q==,type:str]
api:
key: ENC[AES256_GCM,data:eYTKtJSSXmZfkRjlj65OHi99mpD3Iom8dPc8v34pwJIQSBbxVaqdgb7Gqzhse1c9L+U=,iv:9gmsBwlJ+NQIGY5NBA6Fi/1EQium2pcfQkF7x/fHyFU=,tag:v25eeqT6/WEMG9za7LVWAg==,type:str]
password: ENC[AES256_GCM,data:VTW4XGDg19AbE4EM6kS0u89Sz6718vHXvZZmQlkhGJe/4/LQJHmF1FetAClxkLZ9Za0=,iv:sWHvjHEsMXBbtFmkEdAOeSlQ6VTabRJ28kH3iP3GDaY=,tag:5k6NXFXwXHorUGKe+sAbbg==,type:str]
hydra:
cachix:
token: ENC[AES256_GCM,data:FqlJMfw7d1VfWhC+vI4SEMWzzADXK/np33fCsihq3wgC6nWNeTurNn1vDRLIRH+s6iT1C8Ni8iAAlndfUS5SPH6Ymswix9KuJCvYc8Jy+c8pPchYePtMQfv3dVe5a1i06b8I5c+MX8V7j2kaCijYDirnhiD0qlc8SW/mIyB5RNpAgKPTzLjLKJNSUkTGOWUnww==,iv:H2yQ5ioBVnezmhGHbJ7sAlXvUb2MUmHpQpS7f+nIph4=,tag:qvqsbgf2Y/PAd3s9ZFuxWA==,type:str]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85 - recipient: age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBleDhiRlplSndCcUhaMXV3 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3NFlTd2hOTHBtUDhuT0lF
ZUR5QXVyemQ2VlhaQ1JjampwaWV5emhnVGt3ClBWRlJJbmx4cldDWmI3cUd2M0Z5 amtLclY2ZTN0SStZQjFSNkZUd1RmMkdJZ0dJCnB2WU04dk41Qk45aGphMW9GQVJ4
YTl5ODVTbmZjM2UxQkhGZ3hvRWVqWmMKLS0tIFlDZXJTQi9wTGxRWElvcDRPVStj b2VWQVlOVFFLaGJWaU9FVU5ZUWtlRncKLS0tIGVPYW5DQnJMeW1qdWtINDNlQWFo
MGV3VDBEMWkxNkV4TGV6dTFWaDhLWXMKg2Xt5PJe7etU1yp+IgnwTnLl7AXaN1MA NmhrdXhpbVlmUFNsT1VaQjZyYkZkdzgKhL2BKXfPWNWUbFavpmtBQpnNEm/x0xH6
5RymeKYjdNipJtxSNxzTjkNpENtHyXLcjVEBTH3IjGujtyGPMpk3eg== NsjiV05AcrqPmGjj2kjvTv4ULPSoHiHiC5McUMfFTYIrCJgNvUbmMg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age13xshg5e6ucvnu3vqgn344mxpk5kcqutv2lf4gdffvwadq0ku5ewqy4cck6 lastmodified: "2024-11-07T14:40:34Z"
enc: | mac: ENC[AES256_GCM,data:uk2AeOA9pnhekuofIjXavCGy9ZaO0ObprkvnGhJg5lPr/hyT9l7YcZtMQ7wckKDLS03I1hCAcNg0w/EmSUeU2+EHLb6Z1IUj3l0HBUPtPIJwJZifkrzp9iQwGwlK+i6nfREEgPGeuNMj/rnD67MECO4NRHTzGBzH7ZImoDpu0Us=,iv:ss8Q7i75UOQDMJfw4dQCT0qxPUGwfHizX0c/TUej+vc=,tag:iufeO6sfaToNcJg6E8tuxA==,type:str]
-----BEGIN AGE ENCRYPTED FILE----- pgp: []
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArRTBLR09YS0tuM212a25G
cWV5bnR5ZytjQWIvd2txSmdEWjExeWRSbTNvClQwMjc4VnhtdnpKQmQ3Z0JOTEFW
OEtEZ0h2bDlPb3UrNTZFVFdCajdzSGcKLS0tIG16UFNqRVpWOHJNTE03TkFTUDF1
UllqSDR1YWl6aU1jSnY2WE9oczg5Q28KfN15tFxXHrJmOHySK+cyLi2bFqArg244
bNTYyuBUtBW1Y/EuNpbyLjSNQpKZWFz7grE64uxrNQHP865N3wv0gg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-04-30T16:13:29Z"
mac: ENC[AES256_GCM,data:KBJJJc30KARd79w7iTZ4DPwpgcZGTf3oE85xVO//KX8uq/rPPWuXBSwDGcIKlWGVpwiNbCqVvoH3DhKxJfKnuGKadK96xjv3KyIR2H8KMvhTQDXodt61ZyNERDEpa1HcuOemYpAe8W1cUzJkm1wxNublNYBdKz1kQKMQ43tgalk=,iv:wr+nqXKB5wW4VgIr1z61f+LXsw76mMs4kFAOYAkV+tk=,tag:m8uLg6HQhIL1oN1pWQoTAg==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.9.1

View file

@ -1,43 +0,0 @@
hello: ENC[AES256_GCM,data:Chu3BJw5FUpcyFL0pstHML2ASUFZE/vByvPOLlx7/FB+/TlY0ZOS75XvOLobuw==,iv:FVQkNRCDehby6EmNVIY+qRsHdIxTvVtNeGQrkmlTLPc=,tag:fUS0Ntsn2U3NBT0Jz7NbqQ==,type:str]
example_key: ENC[AES256_GCM,data:JzNQOxeTJW1CACce9Q==,iv:KNpw2AcMallVJRJgM045QVZ1NJhuDPGAq0GS/ffHF9Q=,tag:xe8nGrG8TJeNBRHG4XfJfQ==,type:str]
#ENC[AES256_GCM,data:hF5EESbtBCCkSEhlo7sZhw==,iv:nwEOaph9RXiDPYpFJMFe8xQLg/geF+/uZbh/7OS6pQI=,tag:2VE8ThB2AGhGfcrSv8IMEw==,type:comment]
example_array:
- ENC[AES256_GCM,data:wo1Bhh1uS2YRTUsO/o4=,iv:gexmBvW6Pzllqjy476Bz+k9QGKFwVu5A28QRJ/4kMag=,tag:PTshms817ZQ/q4AKmfShsg==,type:str]
- ENC[AES256_GCM,data:yzAukUqZvAyetJT909w=,iv:yI8DuCL+5UDg68x3DAN90u491HLBBzloRj1MXtyNmGg=,tag:18SuyRpTSKHAVUgs3yeOig==,type:str]
example_number: ENC[AES256_GCM,data:6nVMpQYOEGAyOw==,iv:GdAPLzbtX2+WGebca69WWFp/MDxpn35slcKuVV35RpA=,tag:3CpIbId/k/rkjDRb/Zb+sw==,type:float]
example_booleans:
- ENC[AES256_GCM,data:XSKOGQ==,iv:sGMyrxXDziwegrAesHClLUnUo0pI8s3zFeufTfTqB44=,tag:0AHWfkCFDAHeSZcrQUw42Q==,type:bool]
- ENC[AES256_GCM,data:6zfyErQ=,iv:2XqbeLNj1wMgiX4F0uPykiieR5HiVEsxL0DrgGd1Gao=,tag:ZiB4P71l/vrqllo8mXEp9g==,type:bool]
homeassistant:
location:
latitude: ENC[AES256_GCM,data:BWIGR74SOTQydeREhDFLMAU=,iv:oqCyFzp1ZFzvHIHm1httPgO6mYjRVi456/xw2wyDkxk=,tag:fBak58KkIXLUpBorosZ3jw==,type:float]
longitude: ENC[AES256_GCM,data:ocU0OeFeNk6UX3AT9daYnQw=,iv:nGPYr+ee3QOxX2Tq7H8Qt/ghY2ygt0ztpaAgTyMsLOs=,tag:jIvO1ZLsGCiRFRxoHKzWDA==,type:float]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlTzF0TlpYeVFkNGUwM3g1
SmRjMUJaVkhwSzN1ckE3WCthaFU0OVhFc0hzCmFjd0lhRlhYMGRKRVMvUTBiRkoy
NUc0amFTWEtkMEp6WHZ5VkM0ODVNM2sKLS0tIHRGTDdkRmtsZFNVQTd1YUhpMkxQ
U2RUUjY5cnBwcEhtRE0wRkxGMWIrYkkKtV692BxbjxbAqyssbh5Whqkytg4LN91x
ZPwVv2s5TuZl7OG0p2qt4rbKg8WCrjK2K0TF2l1Hwdcpbrswf1H1ng==
-----END AGE ENCRYPTED FILE-----
- recipient: age1ev7c7xfz0gmj6p5p8ugzz55y28lsn8fjlk0d8wc3w9drmw4e69ys6z5yg4
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMVGZudDd5VDlqZERQOVNE
S21PSC9zOFltTHQ1dW9qZ1grem1RdUlBRG5NClZzMEZvVlZ3L0d3MjVvQ1NxQXAz
VGJ1STdsdDVmNzVmbkhQWkt3V0k1QVUKLS0tIHhOTlJ5ZnYzZitEZFNoU2xGdHBx
N1hma0VrbE5HR0xNWVV2NHdMSW0yL1kKrrPaslz+pejsNy/jwopBqi3I9J1PCk+Y
hRgQt4mWfd7ua3Ja+Cq/Rm/pRZFX40g4pImaYdsWL8VNwAJid1WuKQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-03-28T12:52:52Z"
mac: ENC[AES256_GCM,data:X/noJJr/L1PfvfIdSoVULpvtH2JDIHnkQBhFqM6k3DR+x+cN+ReLXN/uBQyAKd5uSgsmtl9QjlidzByDqRQaOpqEDIk4o9qbchMLWxceAFZyj+7nFB4e50mu9pyCT2ibumuP5X8kscn4U9x5oiKfoMXB11yqioBtQES4B4mOBsw=,iv:CQcIiNKnzLz5ibGub1hqRkW5m0CjLcWVTyDA2hTJM+M=,tag:7/T1p1ouYTZjYz0+RGG6pg==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.4

View file

@ -1,13 +0,0 @@
{
pkgs,
mkShell,
...
}:
mkShell {
# Create your shell
nativeBuildInputs = with pkgs; [
jdt-language-server
zulu8
zulu21
];
}

View file

@ -1,264 +0,0 @@
{
config,
inputs,
lib,
namespace,
pkgs,
system,
...
}:
with lib.${namespace};
let
inherit (lib) mkForce;
ipAddress = "192.168.178.2";
sopsFile = lib.snowfall.fs.get-file "secrets/secrets-nixberry.yaml";
in
{
nixpkgs.hostPlatform = {
system = "aarch64-linux";
};
services.tailscale = {
enable = true;
useRoutingFeatures = "server";
};
networking = {
interfaces.end0 = {
ipv4.addresses = [
{
address = ipAddress;
prefixLength = 24;
}
];
useDHCP = true;
};
interfaces.wlan0 = {
ipv4.addresses = [
{
address = "192.168.178.3";
prefixLength = 24;
}
];
useDHCP = true;
};
defaultGateway = {
address = "192.168.178.1";
interface = "wlan0";
};
wireless = {
enable = true;
networks = {
"Slow Internet" = {
pskRaw = "521b6d766b27276c29c7b6bec5b495b1c52bf88b0682277e65b37dc649b630de";
};
};
};
firewall = {
allowedTCPPorts = [
443
53
80
];
allowedUDPPorts = [
53
];
};
};
services.adguardhome = {
enable = true;
host = ipAddress;
port = 80;
settings = {
http = {
address = "0.0.0.0:80";
};
dns = {
ratelimit = 0;
bind_hosts = [ "0.0.0.0" ];
upstream_dns = [
"1.1.1.1"
"1.0.0.1"
"8.8.8.8"
"8.8.4.4"
];
};
filtering = {
protection_enabled = true;
filtering_enabled = true;
};
filters =
map
(url: {
enabled = true;
url = url;
})
[
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt" # AdGuard Dns filter
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_59.txt" # AdGuard Dns PopupHosts filter
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt" # The Big List of Hacked Malware Web Sites
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt" # malicious url blocklist
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_18.txt" # Phishing
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_24.txt"
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_47.txt"
];
statistics = {
enabled = true;
interval = "8760h";
};
};
};
systemd.tmpfiles.rules = [
# "C+ /var/lib/hass/custom_components/tuya_vacuum_maps - - - - ${inputs.tuya-vaccum-maps}/custom_components/tuya_vacuum_maps"
# "Z /var/lib/hass/custom_components 770 hass hass - -"
"f ${config.services.home-assistant.configDir}/automations.yaml 0755 hass hass"
];
services.home-assistant = {
enable = true;
configWritable = true;
extraComponents = [
"default_config"
"analytics"
"shopping_list"
"fritzbox"
"met"
"esphome"
"rpi_power"
"tuya"
];
customComponents = with pkgs.home-assistant-custom-components; [
smartthinq-sensors
sleep_as_android
];
extraPackages =
python3Packages: with python3Packages; [
ical
];
customLovelaceModules = with pkgs.home-assistant-custom-lovelace-modules; [
mushroom
bubble-card
clock-weather-card
vacuum-card
];
config = {
homeassistant = {
latitude = 49.4;
longitude = 8.6;
temperature_unit = "C";
unit_system = "metric";
external_url = "https://ha.christophhollizeck.dev";
internal_url = "http://192.168.178.2:8123";
};
mobile_app = "";
recorder = "";
lovelace = {
# mode = "yaml";
resources = [
{
url = "/local/nixos-lovelace-modules/vacuum-card.js";
type = "module";
}
{
url = "/local/nixos-lovelace-modules/bubble-card.js";
type = "module";
}
{
url = "/local/nixos-lovelace-modules/clock-weather-card.js";
type = "module";
}
{
url = "/local/nixos-lovelace-modules/mushroom.js";
type = "module";
}
];
};
http = {
use_x_forwarded_for = true;
trusted_proxies = [
"100.86.250.97" # loptland tailscale
];
};
};
openFirewall = true;
};
# Pi specific stuff
raspberry-pi-nix = {
board = "bcm2712";
# kernel-build-system = "x86_64-linux";
};
hardware = {
raspberry-pi = {
config = {
all = {
base-dt-params = {
BOOT_UART = {
value = 1;
enable = true;
};
uart_2ndstage = {
value = 1;
enable = true;
};
};
dt-overlays = {
disable-bt = {
enable = true;
params = { };
};
};
};
};
};
};
${namespace} = {
submodules.basics = enabled;
services = {
openssh = enabled;
remotebuild = enabled;
};
apps.cli-apps.helix.pkg = pkgs.helix;
system = {
# cachemiss for webkit gtk
hardware.networking.enable = mkForce false;
# rasberry pi uses alternative boot settings
boot.enable = mkForce false;
};
user.trustedPublicKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFrDiO5+vMfD5MimkzN32iw3MnSMLZ0mHvOrHVVmLD0"
];
};
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.11"; # Did you read the comment?
}

View file

@ -11,7 +11,6 @@ let
domainName = "christophhollizeck.dev"; domainName = "christophhollizeck.dev";
forgejoPort = 3000; forgejoPort = 3000;
hydraPort = 2000;
cfg.enableAcme = true; cfg.enableAcme = true;
@ -22,19 +21,19 @@ in
environment.systemPackages = [ ]; environment.systemPackages = [ ];
services.qemuGuest.enable = true;
sops = { sops = {
secrets = { secrets = {
"forgejo/db/password" = { forgejo_db_password = {
inherit sopsFile; inherit sopsFile;
}; };
"forgejo/mail/password" = {
inherit sopsFile;
}; };
"forgejo/mail/passwordHash" = {
inherit sopsFile;
}; };
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
}; };
}; };
@ -52,44 +51,12 @@ in
}; };
}; };
"hydra.${domainName}" = mkIf config.${namespace}.services.hydra.enable { "${domainName}" = {
forceSSL = cfg.enableAcme; forceSSL = cfg.enableAcme;
useACMEHost = mkIf cfg.enableAcme domainName; useACMEHost = mkIf cfg.enableAcme domainName;
locations."/" = { locations."/" = {
proxyPass = "http://localhost:${toString hydraPort}/"; return = "404";
};
};
"ha.${domainName}" = {
forceSSL = cfg.enableAcme;
useACMEHost = mkIf cfg.enableAcme domainName;
locations."/" = {
# tailscale ip
extraConfig = ''
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
'';
proxyPass = "http://100.86.23.74:8123";
};
};
"nixcache.${domainName}" = mkIf config.${namespace}.services.hydra.enableCache {
forceSSL = cfg.enableAcme;
useACMEHost = mkIf cfg.enableAcme domainName;
locations."/" = {
proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
};
};
"_" = {
forceSSL = cfg.enableAcme;
useACMEHost = mkIf cfg.enableAcme domainName;
locations."/" = {
proxyPass = "https://${domainName}";
}; };
}; };
}; };
@ -100,86 +67,18 @@ in
database.type = "postgres"; database.type = "postgres";
lfs.enable = true; lfs.enable = true;
database = { database = {
passwordFile = config.sops.secrets."forgejo/db/password".path; passwordFile = config.sops.secrets.forgejo_db_password.path;
}; };
settings = { settings = {
server = { server = {
DOMAIN = "git.${domainName}"; DOMAIN = "git.${domainName}";
ROOT_URL = "https://git.${domainName}"; ROOT_URL = "http://git.${domainName}:${toString forgejoPort}";
HTTP_PORT = forgejoPort; HTTP_PORT = forgejoPort;
}; };
mailer = {
ENABLED = true;
PROTOCOL = "smtps";
FROM = "no-reply@${domainName}";
SMTP_ADDR = "mail.${domainName}";
USER = "forgejo@${domainName}";
};
service.DISABLE_REGISTRATION = true; service.DISABLE_REGISTRATION = true;
}; };
secrets = {
mailer.PASSWD = config.sops.secrets."forgejo/mail/password".path;
};
};
mailserver = {
enable = true;
fqdn = "mail.${domainName}";
domains = [ domainName ];
loginAccounts = {
"forgejo@${domainName}" = {
hashedPasswordFile = config.sops.secrets."forgejo/mail/passwordHash".path;
aliases = [ "no-reply@${domainName}" ];
};
};
certificateScheme = "acme-nginx";
};
nix = {
distributedBuilds = true;
extraOptions = ''
builders-use-substitutes = true
'';
buildMachines = [
{
hostName = "localhost";
protocol = null;
system = "x86_64-linux";
supportedFeatures = [
"kvm"
"nixos-test"
"big-parallel"
"benchmark"
];
}
{
hostName = "100.86.23.74";
sshUser = "remotebuild";
sshKey = "/root/.ssh/remotebuild";
systems = [ "aarch64-linux" ];
protocol = "ssh";
supportedFeatures = [
"nixos-test"
"big-parallel"
"kvm"
];
}
];
};
services.tailscale = {
enable = true;
useRoutingFeatures = "client";
}; };
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
@ -198,16 +97,6 @@ in
enable = true; enable = true;
inherit sopsFile; inherit sopsFile;
}; };
openssh = enabled;
hydra = {
enable = true;
httpPort = hydraPort;
enableCache = true;
};
gitea-runner = {
enable = true;
inherit sopsFile;
};
}; };
security = { security = {
@ -218,10 +107,16 @@ in
}; };
user.trustedPublicKeys = [ user.trustedPublicKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFrDiO5+vMfD5MimkzN32iw3MnSMLZ0mHvOrHVVmLD0" # yggdrasil "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFrDiO5+vMfD5MimkzN32iw3MnSMLZ0mHvOrHVVmLD0"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII4Pr7p0jizrvIl0UhcvrmL5SHRQQQWIcHLAnRFyUZS6" # Phone "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII4Pr7p0jizrvIl0UhcvrmL5SHRQQQWIcHLAnRFyUZS6"
]; ];
}; };
snowfallorg.users.${config.${namespace}.user.name}.home.config = {
programs.fish.shellInit = ''
eval $(op signin)
'';
};
system.stateVersion = "24.11"; system.stateVersion = "24.11";
} }

View file

@ -10,11 +10,6 @@ with lib.wyrdgard;
wsl = { wsl = {
enable = true; enable = true;
defaultUser = config.wyrdgard.user.name; defaultUser = config.wyrdgard.user.name;
usbip = {
enable = true;
autoAttach = [ "3-1" ];
};
}; };
wyrdgard = { wyrdgard = {

View file

@ -1,5 +1,4 @@
{ {
inputs,
lib, lib,
namespace, namespace,
pkgs, pkgs,
@ -9,20 +8,13 @@ let
inherit (lib.${namespace}) enabled disabled; inherit (lib.${namespace}) enabled disabled;
in in
{ {
imports = [ imports = [ ./hardware.nix ];
./hardware.nix
./hyprland_config.nix
];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
path-of-building path-of-building
teams-for-linux teams-for-linux
obsidian obsidian
zed-editor zed-editor
# eve
bottles
pyfa
]; ];
environment.pathsToLink = [ "/libexec" ]; environment.pathsToLink = [ "/libexec" ];
@ -32,29 +24,6 @@ in
programs.ssh.extraConfig = '' programs.ssh.extraConfig = ''
AddressFamily inet AddressFamily inet
''; '';
home-manager = {
backupFileExtension = ".bak";
};
nix = {
distributedBuilds = true;
settings.builders-use-substitutes = true;
buildMachines = [
{
hostName = "nixberry";
sshUser = "remotebuild";
sshKey = "/root/.ssh/remotebuild";
systems = [ "aarch64-linux" ];
protocol = "ssh-ng";
supportedFeatures = [
"nixos-test"
"big-parallel"
"kvm"
];
}
];
};
${namespace} = { ${namespace} = {
archetypes = { archetypes = {
@ -65,19 +34,58 @@ in
_1password = enabled; _1password = enabled;
obs-studio = enabled; obs-studio = enabled;
cli-apps.helix = enabled; cli-apps.helix = enabled;
starsector = enabled;
}; };
desktop.hyprland = { desktop.hyprland = {
enable = true; enable = true;
settings = {
monitor = [
#Ultrawide
"DP-2,3440x1440@144, 0x0, 1"
#Vertical
"HDMI-A-1, 1920x1080@144, auto-right, 1, transform, 1"
# nividia kernel issues
"Unknown-1, disable"
];
env = [
"LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland"
"GBM_BACKEND,nvidia-drm"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
"NVD_BACKEND,direct"
];
cursor = {
no_hardware_cursors = true;
};
exec-once = [
"xrandr --output DP-2 --primary"
"[workspace 1 silent] obsidian --disabled-gpu"
"[workspace 9 silent] git-butler"
];
workspace = [
"1, monitor:DP-2"
"2, monitor:DP-2"
"3, monitor:DP-2"
"4, monitor:DP-2"
"8, monitor:HDMI-A-1"
"9, monitor:HDMI-A-1"
];
windowrulev2 = [
"workspace 8 silent, class:^(steam)$, title:^(Friends List)"
"workspace 8 silent, class:^(discord)$, title:^(Discord)"
];
};
}; };
services = { services = {
factorio-server = disabled; factorio-server = disabled;
}; };
tools.devenv = enabled;
system = { system = {
hardware = { hardware = {
bluetooth = enabled; bluetooth = enabled;

View file

@ -1,48 +0,0 @@
{
lib,
namespace,
pkgs,
...
}:
let
in
{
${namespace}.desktop.hyprland.settings = {
monitor = [
#Ultrawide
"DP-2,3440x1440@144, 0x0, 1"
#Vertical
"HDMI-A-1, 1920x1080@144, auto-right, 1, transform, 1"
# nividia kernel issues
"Unknown-1, disable"
];
cursor = {
no_hardware_cursors = true;
};
exec-once = [
"[workspace 7 silent] obsidian"
"${lib.getExe pkgs.xorg.xrandr} --output DP-2 --primary"
];
workspace = [
"1, monitor:DP-2"
"2, monitor:DP-2"
"3, monitor:DP-2"
"4, monitor:DP-2"
"5, monitor:DP-2"
"6, monitor:DP-2"
"7, monitor:HDMI-A-1"
"8, monitor:HDMI-A-1"
"9, monitor:HDMI-A-1"
];
windowrulev2 = [
"workspace 8 silent, class:^(steam)$, title:^(Friends List)"
"workspace 8 silent, class:^(discord)$, title:^(Discord)"
"workspace 7 silent, class:^(com.obsproject.Studio)$"
];
};
}