mirror of
https://github.com/harryssecret/homelab-nix.git
synced 2025-10-01 22:44:51 +02:00
Compare commits
10 commits
0545217233
...
4d17f8d4bf
Author | SHA1 | Date | |
---|---|---|---|
4d17f8d4bf | |||
beffce096f | |||
d784f55702 | |||
6ef751f330 | |||
c8aa3bbc74 | |||
3e64801e8c | |||
e9d297b9ac | |||
76fb6a0531 | |||
b615595b14 | |||
91fa4bf48a |
13 changed files with 101 additions and 77 deletions
36
README.md
36
README.md
|
@ -1,22 +1,26 @@
|
||||||
# my nix homelab config
|
# nix dotfiles
|
||||||
|
|
||||||
**THIS CONFIG IS STILL EXPERIMENTAL !! IT MIGHT WONT WORK OR JUST BREAK YOUR CURRENT INSTALL**
|
This repo hosts all my dotfiles. It includes two desktop config, one (terrible) computer config, and some server dots. It brings my own neovim config, called [miovim](https://git.rougebordeaux.xyz/misschloe/miovim).
|
||||||
Hosted on a Proxmox VM (8Go RAM + 300Gb storage). It is not using the flake.nix because i don't see the use for it, as much than home-manager...
|
|
||||||
|
|
||||||
The goal of this config is to include :
|
| name | description |
|
||||||
|
| ----------- | ------------------------------------------------- |
|
||||||
|
| `goober` | my main desktop config. Intel 9th gen + 1660 GPU. |
|
||||||
|
| `workspace` | my config for professional workspaces. |
|
||||||
|
| `sisyphe` | proxmox server vm |
|
||||||
|
| `labouse` | ASUS X75s (laptop) nix config. Highly experimental, as this is old hardware! |
|
||||||
|
| `dadarwin` | some basic iMac 2015 config. |
|
||||||
|
|
||||||
- [x] -arr suite
|
`diva`, `strawberry` are WIP. Supposed to be two servers config.
|
||||||
- [x] Authentik
|
|
||||||
- [x] slskd
|
|
||||||
- [ ] a cloud solution, to backup family files
|
|
||||||
- [x] crafty controller\*
|
|
||||||
- [x] a matrix server
|
|
||||||
- [x] tt-rss / freshrss\*
|
|
||||||
- [x] tailscale
|
|
||||||
|
|
||||||
\*Not using the "Nix" way (i prefer using Docker atm, i currently lack time)
|
`packages` also comes with some packages bundling i made for various software i use (and too shy to put in nixpkgs).
|
||||||
|
|
||||||
## Installation
|
# Installation
|
||||||
|
!! This config is not plug and play; it comes with some encrypted secrets and files that are not included here. !!
|
||||||
|
|
||||||
You will need to do a basic NixOS install with my config files placed @ `/etc/nixos`.
|
Make sure flakes and nix command is enabled first in your configuration, then run :
|
||||||
Then, setup and adapt the config with your secrets. I am using sops-nix here.
|
|
||||||
|
```bash
|
||||||
|
git clone <repo-url>
|
||||||
|
# replace goober by whatever config interests you
|
||||||
|
sudo nixos-rebuild switch --flake .#goober
|
||||||
|
```
|
||||||
|
|
44
flake.lock
generated
44
flake.lock
generated
|
@ -381,15 +381,15 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751909859,
|
"lastModified": 1751240025,
|
||||||
"narHash": "sha256-gbpuESxl/An4GTh7QEbQRYJozVIxWkwVGbWK0/0GoRc=",
|
"narHash": "sha256-SXUAlxpjPRkArRMHy5+Hdi+PiC+ND9yzzIjiaHmTvQU=",
|
||||||
"rev": "4d4c2b8f0a801c91ce5b717c77fe3a17efa1402f",
|
"rev": "8b1094356f4723d6e89d3f8a95b333ee16d9ab02",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/4d4c2b8f0a801c91ce5b717c77fe3a17efa1402f.tar.gz?rev=4d4c2b8f0a801c91ce5b717c77fe3a17efa1402f"
|
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/8b1094356f4723d6e89d3f8a95b333ee16d9ab02.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"
|
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"miovim": {
|
"miovim": {
|
||||||
|
@ -436,7 +436,9 @@
|
||||||
},
|
},
|
||||||
"musnix": {
|
"musnix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": [
|
||||||
|
"nixpkgsUnstable"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1741303672,
|
"lastModified": 1741303672,
|
||||||
|
@ -459,7 +461,7 @@
|
||||||
"git-hooks": "git-hooks",
|
"git-hooks": "git-hooks",
|
||||||
"hercules-ci-effects": "hercules-ci-effects",
|
"hercules-ci-effects": "hercules-ci-effects",
|
||||||
"neovim-src": "neovim-src",
|
"neovim-src": "neovim-src",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -676,22 +678,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1740695751,
|
|
||||||
"narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1753151930,
|
"lastModified": 1753151930,
|
||||||
"narHash": "sha256-XSQy6wRKHhRe//iVY5lS/ZpI/Jn6crWI8fQzl647wCg=",
|
"narHash": "sha256-XSQy6wRKHhRe//iVY5lS/ZpI/Jn6crWI8fQzl647wCg=",
|
||||||
|
@ -707,7 +693,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1753115646,
|
"lastModified": 1753115646,
|
||||||
"narHash": "sha256-yLuz5cz5Z+sn8DRAfNkrd2Z1cV6DaYO9JMrEz4KZo/c=",
|
"narHash": "sha256-yLuz5cz5Z+sn8DRAfNkrd2Z1cV6DaYO9JMrEz4KZo/c=",
|
||||||
|
@ -723,7 +709,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744868846,
|
"lastModified": 1744868846,
|
||||||
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
|
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
|
||||||
|
@ -739,7 +725,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_8": {
|
"nixpkgs_7": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750605355,
|
"lastModified": 1750605355,
|
||||||
"narHash": "sha256-xT8cPLTxlktxI9vSdoBlAVK7dXgd8IK59j7ZwzkkhnI=",
|
"narHash": "sha256-xT8cPLTxlktxI9vSdoBlAVK7dXgd8IK59j7ZwzkkhnI=",
|
||||||
|
@ -817,7 +803,7 @@
|
||||||
"nix-flatpak": "nix-flatpak",
|
"nix-flatpak": "nix-flatpak",
|
||||||
"nix-secrets": "nix-secrets",
|
"nix-secrets": "nix-secrets",
|
||||||
"nixos-generators": "nixos-generators",
|
"nixos-generators": "nixos-generators",
|
||||||
"nixpkgs": "nixpkgs_6",
|
"nixpkgs": "nixpkgs_5",
|
||||||
"nixpkgsSmall": "nixpkgsSmall",
|
"nixpkgsSmall": "nixpkgsSmall",
|
||||||
"nixpkgsUnstable": "nixpkgsUnstable",
|
"nixpkgsUnstable": "nixpkgsUnstable",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
|
@ -848,7 +834,7 @@
|
||||||
},
|
},
|
||||||
"sops-nix": {
|
"sops-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_7"
|
"nixpkgs": "nixpkgs_6"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752544651,
|
"lastModified": 1752544651,
|
||||||
|
@ -867,7 +853,7 @@
|
||||||
"swww": {
|
"swww": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_3",
|
"flake-compat": "flake-compat_3",
|
||||||
"nixpkgs": "nixpkgs_8",
|
"nixpkgs": "nixpkgs_7",
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
|
@ -52,12 +52,13 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
lix-module = {
|
lix-module = {
|
||||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
|
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz";
|
||||||
inputs.nixpkgs.follows = "nixpkgsUnstable";
|
inputs.nixpkgs.follows = "nixpkgsUnstable";
|
||||||
inputs.lix.follows = "lix";
|
inputs.lix.follows = "lix";
|
||||||
};
|
};
|
||||||
musnix = {
|
musnix = {
|
||||||
url = "github:musnix/musnix";
|
url = "github:musnix/musnix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgsUnstable";
|
||||||
};
|
};
|
||||||
moonlight = {
|
moonlight = {
|
||||||
url = "github:moonlight-mod/moonlight/develop"; # Add `/develop` to the flake URL to use nightly.
|
url = "github:moonlight-mod/moonlight/develop"; # Add `/develop` to the flake URL to use nightly.
|
||||||
|
@ -119,7 +120,7 @@
|
||||||
specialArgs = specialArgs;
|
specialArgs = specialArgs;
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/goober/configuration.nix
|
./hosts/goober/configuration.nix
|
||||||
lix-module.nixosModules.default
|
# lix-module.nixosModules.default
|
||||||
nix-flatpak.nixosModules.nix-flatpak
|
nix-flatpak.nixosModules.nix-flatpak
|
||||||
musnix.nixosModules.musnix
|
musnix.nixosModules.musnix
|
||||||
catppuccin.nixosModules.catppuccin
|
catppuccin.nixosModules.catppuccin
|
||||||
|
|
|
@ -580,7 +580,7 @@ environment {
|
||||||
|
|
||||||
// apps to launch at startup
|
// apps to launch at startup
|
||||||
spawn-at-startup "qutebrowser"
|
spawn-at-startup "qutebrowser"
|
||||||
spawn-at-startup "vesktop"
|
spawn-at-startup "discord"
|
||||||
spawn-at-startup "beeper"
|
spawn-at-startup "beeper"
|
||||||
spawn-at-startup "cinny"
|
spawn-at-startup "cinny"
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,7 @@
|
||||||
obsidian
|
obsidian
|
||||||
papirus-icon-theme
|
papirus-icon-theme
|
||||||
nvimpager
|
nvimpager
|
||||||
|
mpc
|
||||||
# # You can also create simple shell scripts directly inside your
|
# # You can also create simple shell scripts directly inside your
|
||||||
# # configuration. For example, this adds a command 'my-hello' to your
|
# # configuration. For example, this adds a command 'my-hello' to your
|
||||||
# # environment:
|
# # environment:
|
||||||
|
|
|
@ -110,6 +110,7 @@
|
||||||
slurp
|
slurp
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
udiskie
|
udiskie
|
||||||
|
lutris
|
||||||
];
|
];
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
@ -132,6 +133,15 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
documentation.dev.enable = true;
|
documentation.dev.enable = true;
|
||||||
|
systemd.extraConfig = "DefaultLimitNOFILE=524288";
|
||||||
|
security.pam.loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "misschloe777";
|
||||||
|
type = "hard";
|
||||||
|
item = "nofile";
|
||||||
|
value = "524288";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
glxinfo
|
||||||
|
];
|
||||||
|
|
||||||
boot.blacklistedKernelModules = [ "nouveau" ];
|
boot.blacklistedKernelModules = [ "nouveau" ];
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
alsa.enable = true;
|
alsa.enable = true;
|
||||||
alsa.support32Bit = true;
|
alsa.support32Bit = true;
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
};
|
};
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.pwvucontrol
|
pkgs.pwvucontrol
|
||||||
|
|
|
@ -4,14 +4,15 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
discord = pkgs.discord.override {
|
||||||
|
withMoonlight = true;
|
||||||
|
moonlight = inputs.moonlight.packages.${pkgs.system}.moonlight;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = [
|
||||||
discord.override
|
discord
|
||||||
{
|
|
||||||
withMoonlight = true;
|
|
||||||
moonlight = inputs.moonlight.packages.${pkgs.system}.moonlight;
|
|
||||||
}
|
|
||||||
vesktop
|
|
||||||
];
|
];
|
||||||
# screen record support
|
# screen record support
|
||||||
xdg = {
|
xdg = {
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
musnix.rtcqs.enable = true;
|
musnix.rtcqs.enable = true;
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
zathura
|
zathura
|
||||||
|
qutebrowser
|
||||||
# music editing software
|
# music editing software
|
||||||
reaper
|
reaper
|
||||||
surge
|
surge
|
||||||
|
@ -65,7 +66,7 @@
|
||||||
kicad
|
kicad
|
||||||
ente-auth
|
ente-auth
|
||||||
ente-web
|
ente-web
|
||||||
jetbrains.rider
|
# jetbrains.rider
|
||||||
revolt-desktop
|
revolt-desktop
|
||||||
exactaudiocopy
|
exactaudiocopy
|
||||||
picard
|
picard
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
"kvm-intel"
|
"kvm-intel"
|
||||||
"wl"
|
"wl"
|
||||||
];
|
];
|
||||||
boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
|
# boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/4efbf111-4cbb-4e1e-b3ee-dc3fca1f6f4a";
|
device = "/dev/disk/by-uuid/4efbf111-4cbb-4e1e-b3ee-dc3fca1f6f4a";
|
||||||
|
|
|
@ -1,18 +1,34 @@
|
||||||
{config, pkgs, ...}:
|
|
||||||
{
|
{
|
||||||
programs.steam = {
|
config,
|
||||||
enable = true;
|
lib,
|
||||||
remotePlay.openFirewall = true;
|
pkgs,
|
||||||
dedicatedServer.openFirewall = true;
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
dedicatedServer.openFirewall = true;
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
nixpkgs.config.allowUnfreePredicate =
|
||||||
"steam"
|
pkg:
|
||||||
"steam-original"
|
builtins.elem (lib.getName pkg) [
|
||||||
"steam-run"
|
"steam"
|
||||||
];
|
"steam-original"
|
||||||
|
"steam-run"
|
||||||
|
];
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
lutris
|
lutris
|
||||||
];
|
];
|
||||||
};
|
systemd.extraConfig = "DefaultLimitNOFILE=524288";
|
||||||
|
security.pam.loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "misschloe777";
|
||||||
|
type = "hard";
|
||||||
|
item = "nofile";
|
||||||
|
value = "524288";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,10 +48,9 @@
|
||||||
pkg:
|
pkg:
|
||||||
builtins.elem (lib.getName pkg) [
|
builtins.elem (lib.getName pkg) [
|
||||||
"nvidia"
|
"nvidia"
|
||||||
"broadcom-sta"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
|
boot.extraModulePackages = [ ];
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# Add your own packages here
|
# Add your own packages here
|
||||||
neovim
|
neovim
|
||||||
|
@ -68,7 +67,7 @@
|
||||||
|
|
||||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||||
# of just the bare essentials.
|
# of just the bare essentials.
|
||||||
powerManagement.enable = false;
|
powerManagement.enable = false;
|
||||||
|
|
||||||
|
@ -78,9 +77,9 @@
|
||||||
|
|
||||||
# Use the NVidia open source kernel module (not to be confused with the
|
# Use the NVidia open source kernel module (not to be confused with the
|
||||||
# independent third-party "nouveau" open source driver).
|
# independent third-party "nouveau" open source driver).
|
||||||
# Support is limited to the Turing and later architectures. Full list of
|
# Support is limited to the Turing and later architectures. Full list of
|
||||||
# supported GPUs is at:
|
# supported GPUs is at:
|
||||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||||
# Only available from driver 515.43.04+
|
# Only available from driver 515.43.04+
|
||||||
# Currently "beta quality", so false is currently the recommended setting.
|
# Currently "beta quality", so false is currently the recommended setting.
|
||||||
open = false;
|
open = false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue