first commit
This commit is contained in:
11
.editorconfig
Normal file
11
.editorconfig
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.nix]
|
||||||
|
ident_style = space
|
||||||
|
ident_size = 2
|
||||||
13
deploy.sh
Executable file
13
deploy.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
hosts="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ -z "$hosts" ]; then
|
||||||
|
echo "No hosts to deploy"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
for host in ${hosts//,/ }; do
|
||||||
|
nixos-rebuild build-vm --flake .\#$host --use-remote-sudo --use-substitutes $@
|
||||||
|
|
||||||
|
#nixos-rebuild build-vm --flake .\#$host --target-host $host --use-remote-sudo --use-substitutes $@
|
||||||
|
done
|
||||||
118
flake.lock
generated
Normal file
118
flake.lock
generated
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767070591,
|
||||||
|
"narHash": "sha256-b0aM3221Pw6vbACFqZrVzZjMNqXVPi1dvgLr8QTbajc=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"rev": "9b3c38bf6c260d0e88154ef07fa833fa845bfd14",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767104570,
|
||||||
|
"narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766902085,
|
||||||
|
"narHash": "sha256-coBu0ONtFzlwwVBzmjacUQwj3G+lybcZ1oeNSQkgC0M=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c0b0e0fddf73fd517c3471e546c0df87a42d53f4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766885793,
|
||||||
|
"narHash": "sha256-P6RVkrM9JLCW6xBjSwHfgTOQ1JwBUma5xe5LI8xAPC0=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "9ef261221d1e72399f2036786498d78c38185c46",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-25.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"hardware": "hardware",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"sops-nix": "sops-nix",
|
||||||
|
"systems": "systems"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sops-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766894905,
|
||||||
|
"narHash": "sha256-pn8AxxfajqyR/Dmr1wnZYdUXHgM3u6z9x0Z1Ijmz2UQ=",
|
||||||
|
"owner": "mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"rev": "61b39c7b657081c2adc91b75dd3ad8a91d6f07a7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
72
flake.nix
Normal file
72
flake.nix
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
description = "Meine NixOS configuration";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||||
|
systems.url = "github:nix-systems/default-linux";
|
||||||
|
|
||||||
|
hardware.url = "github:nixos/nixos-hardware";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
sops-nix = {
|
||||||
|
url = "github:mic92/sops-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
home-manager,
|
||||||
|
systems,
|
||||||
|
...
|
||||||
|
} @ inputs : let
|
||||||
|
inherit (self) outputs;
|
||||||
|
lib = nixpkgs.lib // home-manager.lib;
|
||||||
|
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
||||||
|
pkgsFor = lib.genAttrs (import systems) (
|
||||||
|
system:
|
||||||
|
import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
in {
|
||||||
|
inherit lib;
|
||||||
|
|
||||||
|
nixosModules = import ./modules/nixos;
|
||||||
|
#homeManagerModules = import ./modules/home-manager;
|
||||||
|
|
||||||
|
#overlays = import ./overlays {inherit inputs outputs;};
|
||||||
|
hydraJobs = import ./hydra.nix {inherit inputs outputs;};
|
||||||
|
|
||||||
|
packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
|
||||||
|
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
|
||||||
|
formatter = forEachSystem (pkgs: pkgs.alejandra);
|
||||||
|
|
||||||
|
nixosConfigurations = {
|
||||||
|
raidy = lib.nixosSystem {
|
||||||
|
modules = [./hosts/raidy];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs outputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
homeConfigurations = {
|
||||||
|
"dwessels@electra" = lib.homeManagerConfiguration {
|
||||||
|
modules = [ ./home/dwessels/electra.nix ]; # ./home/dwessels/nixpkgs.nix ];
|
||||||
|
pkgs = pkgsFor.x86_64-linux;
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs outputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
12
home/dwessels/electra.nix
Normal file
12
home/dwessels/electra.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{pkgs, lib, inputs, ...}: {
|
||||||
|
imports = [
|
||||||
|
./global
|
||||||
|
];
|
||||||
|
home.persistence = lib.mkForce {};
|
||||||
|
home.username = "dwessels";
|
||||||
|
home.packages = [
|
||||||
|
pkgs.juju
|
||||||
|
pkgs.sshuttle
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
3
home/dwessels/raidy.nix
Normal file
3
home/dwessels/raidy.nix
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
|
||||||
|
}
|
||||||
7
hosts/common/global/default.nix
Normal file
7
hosts/common/global/default.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
}
|
||||||
41
hosts/common/users/dwessels/default.nix
Normal file
41
hosts/common/users/dwessels/default.nix
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
||||||
|
in {
|
||||||
|
users.mutableUsers = false;
|
||||||
|
users.users.dwessels = {
|
||||||
|
isNormalUser = true;
|
||||||
|
shell = pkgs.fish;
|
||||||
|
extraGroups = ifTheyExist [
|
||||||
|
"audio"
|
||||||
|
"deluge"
|
||||||
|
"docker"
|
||||||
|
"git"
|
||||||
|
"i2c"
|
||||||
|
"libvirtd"
|
||||||
|
"mysql"
|
||||||
|
"network"
|
||||||
|
"plugdev"
|
||||||
|
"video"
|
||||||
|
"wheel"
|
||||||
|
"wireshark"
|
||||||
|
];
|
||||||
|
hashedPasswordFile = config.sops.secrets.dwessels-password.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
sops.secrets.dwessels-password = {
|
||||||
|
sopsFile = ../../secrets.yaml;
|
||||||
|
neededForUsers = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.dwessels = import ../../../../home/dwessels/${config.networking.hostName}.nix;
|
||||||
|
|
||||||
|
security.pam.services = {
|
||||||
|
swaylock = {};
|
||||||
|
hyprlock = {};
|
||||||
|
};
|
||||||
|
}
|
||||||
17
hosts/common/users/secrets.yaml
Normal file
17
hosts/common/users/secrets.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
dwessels-password: ENC[AES256_GCM,data:5FIfaQxiCOWT/uaf,iv:KyYcbVYyzC6lj4B4SOKtAgLLDIuB1HPbszBf654USSc=,tag:ndZ6BWqMAWeGv/y+htLizw==,type:str]
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age1yubikey1qvztykl49tq9njv2qhaqs9lm43mpfjkrgjlddhyp9tu6mgngxzg8v7v9rql
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IDgwUnBpQSBBN0JXQW5Q
|
||||||
|
bzhUUjNtdmp6MUFjcG1UMlBaa2RNUDlYalJpOEdxNUhjQ3FHNQpEWE1idHp6ZFc1
|
||||||
|
VmdGUFRHNmZ5VHhyRzRHOCt0dmZMeEUyb1A4OE9yWm5nCi0tLSBhaU80aEJMZWxE
|
||||||
|
dkd5cnNYb3VNUFM0aGE3cUdsZDFORTNha2Z3UTZ6dWlFChMForXFy2Z0vq/ba0Fb
|
||||||
|
vlWRL14GHg2LinIyS1+2z8KwYfEp2mkIhg1y8/j+uraqFH2HQEM/3TOzTg9D/7Dw
|
||||||
|
JoQ=
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-12-30T23:40:22Z"
|
||||||
|
mac: ENC[AES256_GCM,data:4czv8j8VZ7WsU1cpULCgZDazoeI5f9vtrK8fuP2Y4y/H1HG1iRPq8TsEvB7Y5xIdXc8ZF9ff6r30KaNgt0IYBrPNoEZhsymiF7nsck43uPE51Utlhk/T1epJ7uvPYnLppSIGq6Gtzm2rlgiTGpM+H3KAC/0x+1bfz5WGcdSnr1w=,iv:liApOUtDkGBc3ct5A6k9EDafzODQxBzW7x1dREtGJJU=,tag:jPgQ+15821z5ENLS7ruljw==,type:str]
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.11.0
|
||||||
20
hosts/raidy/default.nix
Normal file
20
hosts/raidy/default.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../common/global
|
||||||
|
../common/users/dwessels
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "raidy";
|
||||||
|
useDHCP = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "22.11";
|
||||||
|
|
||||||
|
}
|
||||||
40
hosts/raidy/hardware-configuration.nix
Normal file
40
hosts/raidy/hardware-configuration.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci_renesas" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/3b9e8881-eaf3-4d32-955c-f8f2d1ac1a17";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/9246-7480";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp2s0f0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wwan0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Icon=text-html
|
||||||
|
Name=https://github.com/Misterio77/nix-starter-configs
|
||||||
|
Type=Link
|
||||||
|
URL[$e]=https://github.com/Misterio77/nix-starter-configs
|
||||||
20
hydra.nix
Normal file
20
hydra.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
}: let
|
||||||
|
inherit (inputs.nixpkgs) lib;
|
||||||
|
|
||||||
|
notBroken = pkg: !(pkg.meta.broken or false);
|
||||||
|
isDistributable = pkg: (pkg.meta.license or {redistributable = true;}=.redistributable;
|
||||||
|
hasPlatform = sys: pkg: lib.elem sys (pkg.meta.platforms or [sys]);
|
||||||
|
filterValidPkgs = sys: pkgs:
|
||||||
|
lib.filterAttrs(_: pkg:
|
||||||
|
lib.isDerivation pkg
|
||||||
|
&& hasPlatform sys pkg
|
||||||
|
&& notBroken pkg
|
||||||
|
&& isDistributable pkg)
|
||||||
|
pkgs;
|
||||||
|
in {
|
||||||
|
pkgs = lib.mapAttrs filterValidPkgs outputs.packages;
|
||||||
|
hosts = lib.mapAttrs (_: cfg: cfg.config.system.build.toplevel) outputs.nixosConfigurations;
|
||||||
|
homes = lib.mapAttrs (_: cfg: cfg.activationPackage) outputs.homeConfigurations;
|
||||||
3
modules/nixos/default.nix
Normal file
3
modules/nixos/default.nix
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
3
pkgs/default.nix
Normal file
3
pkgs/default.nix
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{pkgs ? import <nixpkgs> {}, ...}: rec {
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user