reorganize for rpi

This commit is contained in:
Patrick Neff 2024-04-14 15:23:37 +02:00
parent 6227d2f202
commit 6f32e3b9a0
29 changed files with 442 additions and 189 deletions

View File

@ -25,7 +25,6 @@
];
domain = "odie.intranet";
};
overlays = [
inputs.nixvim.overlays.default
inputs.neovim-nightly-overlay.overlays.default
@ -38,6 +37,8 @@
base = import ./modules/nixos/base;
desktop = import ./modules/nixos/desktop;
wsl = import ./modules/nixos/wsl;
mediacenter = import ./modules/nixos/mediacenter;
qemu = import ./modules/nixos/qemu;
};
nixosConfigurations =
flakeLib.mkNixosConfiguration {
@ -57,59 +58,25 @@
}
// {};
homeManagerModules = {
base = import ./modules/home-manager/base.nix;
desktop = import ./modules/home-manager/desktop.nix;
shell = import ./modules/home-manager/shell.nix;
dev = import ./modules/home-manager/dev.nix;
base = import ./modules/home-manager/base;
desktop = import ./modules/home-manager/desktop;
shell = import ./modules/home-manager/shell;
development = import ./modules/home-manager/development;
games = import ./modules/home-manager/games;
mediacenter = import ./modules/home-manager/mediacenter;
};
homeConfigurations = {
"odie@wanaheim" = flakeLib.mkHomeConfiguration {
homeConfigurations =
flakeLib.mkHomeConfiguration {
inherit inputs outputs nixpkgs flakeLib vars overlays;
profile = ./profiles/home-manager/desktop-dev.nix;
profile = "odie@wanaheim";
system = "x86_64-linux";
modules = [
{
desktop = {
enable = true;
awesome = {
enable = true;
wifi_device = "'wlp3s0'";
battery_device = "'BAT0'";
};
};
services.picom.enable = false;
programs.rofi.enable = true;
}
];
}
//
flakeLib.mkHomeConfiguration {
inherit inputs outputs nixpkgs flakeLib vars overlays;
profile = "odie@asgard";
system = "x86_64-linux";
};
"odie@asgard" = flakeLib.mkHomeConfiguration {
inherit inputs outputs nixpkgs flakeLib vars overlays;
profile = ./profiles/home-manager/desktop-dev.nix;
system = "x86_64-linux";
modules = [
inputs.csleeptimer.homeManagerModules.default
{
desktop = {
enable = true;
awesome = {
enable = false;
};
};
programs = {
firefox.enable = false;
keepassxc.enable = false;
};
services = {
nixGL.enable = true;
borgmatic.enable = true;
nextcloud-client.enable = false;
};
theme.cursor.enable = false;
theme.gtk.enable = false;
}
];
};
};
}
// flake-utils.lib.eachDefaultSystem (system: {
packages = {

View File

@ -6,17 +6,20 @@
vars,
system,
profile,
modules ? [],
overlays ? [],
...
}:
import profile {
inherit inputs outputs modules;
extraSpecialArgs = {
inherit inputs outputs vars flakeLib;
inherit (inputs) nix-colors;
};
pkgs = flakeLib.mkPkgs {
inherit nixpkgs system overlays;
}: {
${profile} = inputs.home-manager.lib.homeManagerConfiguration {
extraSpecialArgs = {
inherit inputs outputs vars flakeLib;
inherit (inputs) nix-colors;
};
pkgs = flakeLib.mkPkgs {
inherit nixpkgs system overlays;
};
modules = [
../profiles/home-manager/${profile}/home.nix
];
};
}

View File

@ -3,16 +3,14 @@
outputs,
vars,
flakeLib,
imports ? [],
users ? {},
...
}: {
inherit users;
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = {
inherit inputs outputs vars flakeLib;
inherit (inputs) nix-colors;
};
users.${vars.username} = {
inherit imports;
};
}

View File

@ -1,17 +1,14 @@
{ lib, vars, ... }: with lib; {
{vars, ...}: {
home = {
inherit (vars) username homeDirectory;
language.base = vars.locale;
stateVersion = "23.05";
};
imports = [
./news.nix
./nixpkgs.nix
];
programs.home-manager.enable = true;
news = {
display = "silent";
json = mkForce { };
entries = mkForce [ ];
};
nixpkgs.config.allowUnfree = true;
}

View File

@ -0,0 +1,7 @@
{ lib, ... }: with lib; {
news = {
display = "silent";
json = mkForce { };
entries = mkForce [ ];
};
}

View File

@ -0,0 +1,3 @@
{
nixpkgs.config.allowUnfree = true;
}

View File

@ -1,14 +0,0 @@
{ lib, ... }: with lib; {
imports = [
./desktop
./mpd
];
desktop.enable = mkDefault true;
news = {
display = "silent";
json = mkForce { };
entries = mkForce [ ];
};
}

View File

@ -0,0 +1,13 @@
{lib, ...}:
with lib; {
imports = [
./doom
./steam
./unnethack
];
config = {
games.unnethack.enable = mkDefault true;
games.dsda-doom.enable = mkDefault true;
};
}

View File

@ -0,0 +1,5 @@
{
imports = [
./dsda-doom.nix
];
}

View File

@ -0,0 +1,18 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.games.dsda-doom;
in
with lib; {
options = {
games.dsda-doom.enable = mkEnableOption "dsda-doom";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
dsda-doom
];
};
}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1,16 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.games.unnethack;
in
with lib; {
options = {
games.unnethack.enable = mkEnableOption "unnethack";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [unnethack];
};
}

View File

@ -1,5 +1,5 @@
_: {
{
imports = [
./shell
./kodi
];
}

View File

@ -0,0 +1,20 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.mediacenter.kodi;
in with lib; {
options = {
mediacenter.kodi = {
enable = mkEnableOption "kodi";
};
};
config = mkIf cfg.enable {
programs.kodi = {
enable = true;
package = pkgs.kodi-standalone;
};
};
}

View File

@ -1,5 +1,5 @@
_: {
{
imports = [
./development
./kodi
];
}

View File

@ -0,0 +1,66 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.mediacenter.kodi;
in
with lib; {
options = {
mediacenter.kodi = {
enable = mkEnableOption "kodi";
};
};
config = let
user = "kodi";
kodi-standalone =
pkgs.kodi-wayland.passthru.withPackages
(kodiPkgs:
with pkgs.kodiPackages; [
youtube
pvr-iptvsimple
keymap
inputstream-adaptive
inputstream-ffmpegdirect
requests-cache
inputstreamhelper
advanced-emulator-launcher
]);
in
lib.mkIf cfg.enable {
services.cage = {
inherit user;
enable = true;
program = "${kodi-standalone}/bin/kodi-standalone";
};
users.users.kodi = {
name = user;
isNormalUser = true;
extraGroups = [
"audio"
"video"
"disk"
"plugdev"
"i2c"
"spi"
"power"
];
};
networking.firewall.allowedTCPPorts = [8080 9090];
environment.systemPackages = with pkgs; [
kodi-standalone
alsa-utils
(retroarch.override {
cores = with libretro; [
snes9x
pcsx-rearmed
nestopia
];
})
];
};
}

View File

@ -1,18 +0,0 @@
{
inputs,
pkgs,
extraSpecialArgs,
modules ? [],
...
}:
inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs extraSpecialArgs;
modules =
[
../../modules/home-manager/base.nix
../../modules/home-manager/shell.nix
../../modules/home-manager/desktop.nix
../../modules/home-manager/dev.nix
]
++ modules;
}

View File

@ -1,17 +0,0 @@
{
inputs,
pkgs,
extraSpecialArgs,
modules ? [],
...
}:
inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs extraSpecialArgs;
modules =
[
../../modules/home-manager/base.nix
../../modules/home-manager/shell.nix
../../modules/home-manager/desktop.nix
]
++ modules;
}

View File

@ -0,0 +1,127 @@
{
description = "My Nix Configs";
outputs = {
self,
nixpkgs,
flake-utils,
...
}: let
inherit (self) inputs outputs;
flakeLib = import ./lib;
vars = rec {
name = "Patrick Neff";
username = "odie";
homeDirectory = "/home/${username}";
locale = "de_DE.UTF-8";
email = "odie86@gmail.com";
timeZone = "Europe/Berlin";
sshKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIByWNNmKhjVk5VEjk3aSKosOXzglCbiq7q8IQ8mA0qQe odie"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA1QZO6fF2RLcmjMKdG1eZi0RLw3joa+VBXaKvfmA7Tg odie"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINs89u4Kvwlmq67eV+H/n+x9M8gsKDxQU+dCPSEb2vJe odie"
];
domain = "odie.intranet";
};
overlays = [
inputs.nixvim.overlays.default
inputs.neovim-nightly-overlay.overlays.default
inputs.nur.overlay
inputs.nixgl.overlay
];
in
{
nixosModules = {
base = import ./modules/nixos/base;
desktop = import ./modules/nixos/desktop;
wsl = import ./modules/nixos/wsl;
mediacenter = import ./modules/nixos/mediacenter;
qemu = import ./modules/nixos/qemu;
};
nixosConfigurations =
flakeLib.mkNixosConfiguration {
inherit inputs nixpkgs outputs vars flakeLib overlays;
system = "x86_64-linux";
hostName = "vm";
}
// flakeLib.mkNixosConfiguration {
inherit inputs nixpkgs outputs vars flakeLib overlays;
system = "x86_64-linux";
hostName = "wsl-dev";
}
// flakeLib.mkNixosConfiguration {
inherit inputs outputs nixpkgs vars flakeLib overlays;
system = "aarch64-linux";
hostName = "pi1";
}
// {};
homeManagerModules = {
base = import ./modules/home-manager/base;
desktop = import ./modules/home-manager/desktop;
shell = import ./modules/home-manager/shell;
development = import ./modules/home-manager/development;
games = import ./modules/home-manager/games;
};
homeConfigurations =
flakeLib.mkHomeConfiguration {
inherit inputs outputs nixpkgs flakeLib vars overlays;
profile = "odie@wanaheim";
system = "x86_64-linux";
}
//
flakeLib.mkHomeConfiguration {
inherit inputs outputs nixpkgs flakeLib vars overlays;
profile = "odie@asgard";
system = "x86_64-linux";
};
}
// flake-utils.lib.eachDefaultSystem (system: {
packages = {
neovim-ide = import ./pkgs/nixvim {inherit inputs system flakeLib nixpkgs;};
};
});
inputs = {
#nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
#nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nur.url = "github:nix-community/NUR";
nix-colors.url = "github:misterio77/nix-colors";
systems.url = "github:nix-systems/default";
flake-parts.url = "github:hercules-ci/flake-parts";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nixgl = {
url = "github:nix-community/nixGL/9b4887dbf16933bdc124296434b3898d810b3608";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
neovim-nightly-overlay = {
url = "github:nix-community/neovim-nightly-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
nixos-wsl = {
url = "github:nix-community/NixOS-WSL";
inputs.nixpkgs.follows = "nixpkgs";
};
csleeptimer = {
url = "git+ssh://gitea@pi1.odie.intranet/odie/csleeptimer.git";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
systems.follows = "systems";
};
};
};
}

View File

@ -0,0 +1,21 @@
{
inputs,
vars,
...
}: let
username = "kodi";
homeDirectory = "/home/${username}";
in {
imports = [
inputs.home-manager-flake.homeModules.base
inputs.home-manager-flake.homeModules.shell
inputs.home-manager-flake.homeModules.mediacenter
{
home = {
inherit username homeDirectory;
language.base = vars.locale;
stateVersion = "23.05";
};
}
];
}

View File

@ -0,0 +1,33 @@
{
inputs,
outputs,
...
}: {
imports = [
inputs.csleeptimer.homeManagerModules.default
outputs.homeManagerModules.base
outputs.homeManagerModules.shell
outputs.homeManagerModules.desktop
outputs.homeManagerModules.development
outputs.homeManagerModules.games
{
desktop = {
enable = true;
awesome = {
enable = false;
};
};
programs = {
firefox.enable = false;
keepassxc.enable = false;
};
services = {
nixGL.enable = true;
borgmatic.enable = true;
nextcloud-client.enable = false;
};
theme.cursor.enable = false;
theme.gtk.enable = false;
}
];
}

View File

@ -0,0 +1,6 @@
{ inputs, ... }: {
imports = [
inputs.home-manager-flake.homeModules.base
inputs.home-manager-flake.homeModules.shell
];
}

View File

@ -0,0 +1,26 @@
{
inputs,
outputs,
...
}: {
modules = [
inputs.csleeptimer.homeManagerModules.default
outputs.homeManagerModules.base
outputs.homeManagerModules.shell
outputs.homeManagerModules.desktop
outputs.homeManagerModules.development
outputs.homeManagerModules.games
{
desktop = {
enable = true;
awesome = {
enable = true;
wifi_device = "'wlp3s0'";
battery_device = "'BAT0'";
};
};
services.picom.enable = false;
programs.rofi.enable = true;
}
];
}

View File

@ -1,17 +0,0 @@
{
inputs,
pkgs,
extraSpecialArgs,
modules ? [],
...
}:
inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs extraSpecialArgs;
modules =
[
../../modules/home-manager/base.nix
../../modules/home-manager/shell.nix
../../modules/home-manager/dev.nix
]
++ modules;
}

View File

@ -1,16 +0,0 @@
{
inputs,
pkgs,
extraSpecialArgs,
modules ? [],
...
}:
inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs extraSpecialArgs;
modules =
[
../../modules/home-manager/base.nix
../../modules/home-manager/shell.nix
]
++ modules;
}

View File

@ -4,10 +4,13 @@
flakeLib,
vars,
...
}: {
}: let
inherit (vars) username hostName;
profile = "${username}@${hostName}";
in {
imports = [
outputs.nixosModules.base
./hardware-configuration.nix
../../../modules/nixos/base
];
networking = {
@ -16,12 +19,10 @@
home-manager = flakeLib.mkHomeNixosModule {
inherit inputs outputs vars flakeLib;
modules = [
../../../modules/home-manager/base.nix
../../../modules/home-manager/shell.nix
{
services.picom.enable = false;
}
];
users.${vars.username} = {
imports = [
../../home-manager/${profile}/home.nix
];
};
};
}

View File

@ -4,26 +4,34 @@
inputs,
flakeLib,
...
}: {
}: let
inherit (vars) username hostName;
profile = "${username}@${hostName}";
in {
imports = [
inputs.home-manager.nixosModules.home-manager
outputs.nixosModules.base
outputs.nixosModules.desktop
outputs.nixosModules.wsl
./hardware-configuration.nix
../../../modules/nixos/base
../../../modules/nixos/desktop
../../../modules/nixos/wsl
];
home-manager = flakeLib.mkHomeNixosModule {
inherit inputs outputs vars flakeLib;
imports = [
../../../modules/home-manager/base.nix
../../../modules/home-manager/desktop.nix
../../../modules/home-manager/dev.nix
../../../modules/home-manager/shell.nix
{
services.picom.enable = false;
}
];
users.${vars.username} = let
profile = "${username}@${hostName}";
in {
imports = [
../../home-manager/${profile}/home.nix
];
};
users.kodi = let
profile = "kodi@${hostName}";
in {
imports = [
../../home-manager/${profile}/home.nix
];
};
};
system.stateVersion = "23.11";

View File

@ -20,14 +20,13 @@
home-manager = flakeLib.mkHomeNixosModule {
inherit inputs outputs vars flakeLib;
imports = [
../../../modules/home-manager/base.nix
../../../modules/home-manager/dev.nix
../../../modules/home-manager/shell.nix
{
services.picom.enable = false;
}
];
users.${vars.username} = {
imports = [
../../../modules/home-manager/base
../../../modules/home-manager/development
../../../modules/home-manager/shell
];
};
};
system.stateVersion = "23.11";