move user and additional module handling into flake.nix
This commit is contained in:
parent
87062e05c4
commit
8fc672bfcf
15 changed files with 275 additions and 280 deletions
101
flake.nix
101
flake.nix
|
@ -63,23 +63,66 @@
|
|||
}:
|
||||
let
|
||||
devices = {
|
||||
vinzenz-lpt2 = "x86_64-linux";
|
||||
vinzenz-pc2 = "x86_64-linux";
|
||||
ronja-pc = "x86_64-linux";
|
||||
hetzner-vpn2 = "aarch64-linux";
|
||||
forgejo-runner-1 = "aarch64-linux";
|
||||
vinzenz-lpt2 = {
|
||||
system = "x86_64-linux";
|
||||
additional-modules = [
|
||||
self.nixosModules.user-vinzenz
|
||||
|
||||
self.nixosModules.gnome
|
||||
self.nixosModules.wine-gaming
|
||||
self.nixosModules.steam
|
||||
self.nixosModules.printing
|
||||
self.nixosModules.podman
|
||||
self.nixosModules.vinzenz-desktop-settings
|
||||
self.nixosModules.intel-graphics
|
||||
];
|
||||
home-manager-users = {
|
||||
inherit (self.homeConfigurations) vinzenz;
|
||||
};
|
||||
homeDevices = [
|
||||
"vinzenz-lpt2"
|
||||
"vinzenz-pc2"
|
||||
"ronja-pc"
|
||||
};
|
||||
vinzenz-pc2 = {
|
||||
system = "x86_64-linux";
|
||||
additional-modules = [
|
||||
self.nixosModules.user-vinzenz
|
||||
self.nixosModules.user-ronja
|
||||
|
||||
self.nixosModules.gnome
|
||||
self.nixosModules.wine-gaming
|
||||
self.nixosModules.steam
|
||||
self.nixosModules.printing
|
||||
self.nixosModules.podman
|
||||
self.nixosModules.vinzenz-desktop-settings
|
||||
self.nixosModules.amd-graphics
|
||||
];
|
||||
home-manager-users = {
|
||||
inherit (self.homeConfigurations) vinzenz ronja;
|
||||
};
|
||||
};
|
||||
ronja-pc = {
|
||||
system = "x86_64-linux";
|
||||
additional-modules = [
|
||||
self.nixosModules.user-ronja
|
||||
|
||||
self.nixosModules.gnome
|
||||
self.nixosModules.steam
|
||||
self.nixosModules.wine-gaming
|
||||
self.nixosModules.vinzenz-desktop-settings
|
||||
];
|
||||
home-manager-users = {
|
||||
inherit (self.homeConfigurations) ronja;
|
||||
};
|
||||
};
|
||||
hetzner-vpn2 = {
|
||||
system = "aarch64-linux";
|
||||
};
|
||||
forgejo-runner-1 = {
|
||||
system = "aarch64-linux";
|
||||
additional-modules = [ self.nixosModules.podman ];
|
||||
};
|
||||
};
|
||||
lib = nixpkgs.lib;
|
||||
forDevice = f: lib.mapAttrs f devices;
|
||||
supported-systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
forDevice = f: lib.mapAttrs (device: value: f (value // { inherit device; })) devices;
|
||||
supported-systems = lib.attrsets.mapAttrsToList (k: v: v.system) devices;
|
||||
forAllSystems =
|
||||
f:
|
||||
lib.genAttrs supported-systems (
|
||||
|
@ -101,20 +144,21 @@
|
|||
};
|
||||
|
||||
nixosConfigurations = forDevice (
|
||||
device: system:
|
||||
{
|
||||
device,
|
||||
system,
|
||||
home-manager-users ? { },
|
||||
additional-modules ? [ ],
|
||||
}:
|
||||
let
|
||||
commonSpecialArgs = {
|
||||
specialArgs = {
|
||||
inherit device;
|
||||
vinzenzHomeModules = self.homeModules;
|
||||
vinzenzLib = self.lib;
|
||||
};
|
||||
in
|
||||
nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = commonSpecialArgs // {
|
||||
vinzenzNixosModules = self.nixosModules;
|
||||
vinzenzHomeConfigurations = self.homeConfigurations;
|
||||
};
|
||||
inherit system specialArgs;
|
||||
modules = [
|
||||
{
|
||||
networking.hostName = device;
|
||||
|
@ -134,6 +178,7 @@
|
|||
nix.settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
"repl-flake"
|
||||
];
|
||||
|
||||
documentation = {
|
||||
|
@ -144,6 +189,7 @@
|
|||
|
||||
./nixosConfigurations/${device}
|
||||
|
||||
self.nixosModules.default
|
||||
self.nixosModules.lix-is-nix
|
||||
self.nixosModules.globalinstalls
|
||||
self.nixosModules.autoupdate
|
||||
|
@ -155,10 +201,10 @@
|
|||
|
||||
zerforschen-plus.nixosModules.default
|
||||
]
|
||||
++ (nixpkgs.lib.optionals (builtins.elem device homeDevices) [
|
||||
++ (nixpkgs.lib.optionals (home-manager-users != { }) [
|
||||
{
|
||||
home-manager = {
|
||||
extraSpecialArgs = commonSpecialArgs;
|
||||
extraSpecialArgs = specialArgs;
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
};
|
||||
|
@ -174,6 +220,8 @@
|
|||
self.homeModules.nano
|
||||
self.homeModules.gnome-extensions
|
||||
];
|
||||
|
||||
home-manager.users = home-manager-users;
|
||||
}
|
||||
|
||||
self.nixosModules.pkgs-unstable
|
||||
|
@ -190,7 +238,8 @@
|
|||
home-manager.nixosModules.home-manager
|
||||
servicepoint-simulator.nixosModules.default
|
||||
servicepoint-cli.nixosModules.default
|
||||
]);
|
||||
])
|
||||
++ additional-modules;
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -214,6 +263,10 @@
|
|||
pkgs-vscode-extensions = {
|
||||
nixpkgs.overlays = [ nix-vscode-extensions.overlays.default ];
|
||||
};
|
||||
# required modules to use other modules, should not do anything on their own
|
||||
default = {
|
||||
imports = [ self.nixosModules.allowed-unfree-list ];
|
||||
};
|
||||
};
|
||||
|
||||
homeModules = self.lib.importDir ./homeModules;
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
config = {
|
||||
home.packages = with pkgs; [
|
||||
## Apps
|
||||
telegram-desktop
|
||||
kdiff3
|
||||
];
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
zsh = {
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
};
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "agnoster";
|
||||
plugins = [
|
||||
"git"
|
||||
"sudo"
|
||||
"systemadmin"
|
||||
];
|
||||
};
|
||||
shellAliases = {
|
||||
myos-update = ''echo "Enter sudo password" && sudo nixos-rebuild boot --flake git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
|
||||
myos-apply = ''echo "Enter sudo password" && sudo nixos-rebuild switch --flake .# --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
|
||||
};
|
||||
};
|
||||
|
||||
git = {
|
||||
userName = "Ronja Spiegelberg";
|
||||
userEmail = "ronja.spiegelberg@gmail.com";
|
||||
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
merge.tool = "kdiff3";
|
||||
};
|
||||
};
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
{
|
||||
# ublock origin
|
||||
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
||||
}
|
||||
{
|
||||
id = "dcpihecpambacapedldabdbpakmachpb";
|
||||
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,25 +1,61 @@
|
|||
{ pkgs, ... }:
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [ ./vscode.nix ];
|
||||
config = {
|
||||
# Define user account
|
||||
users.users.ronja = {
|
||||
isNormalUser = true;
|
||||
name = "ronja";
|
||||
description = "Ronja";
|
||||
home = "/home/ronja";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"games"
|
||||
"podman"
|
||||
"openvscode-server"
|
||||
home.packages = with pkgs; [
|
||||
## Apps
|
||||
telegram-desktop
|
||||
kdiff3
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
zsh = {
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
};
|
||||
|
||||
home-manager.users.ronja.imports = [
|
||||
./configuration.nix
|
||||
./vscode.nix
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "agnoster";
|
||||
plugins = [
|
||||
"git"
|
||||
"sudo"
|
||||
"systemadmin"
|
||||
];
|
||||
};
|
||||
shellAliases = {
|
||||
myos-update = ''echo "Enter sudo password" && sudo nixos-rebuild boot --flake git+https://git.berlin.ccc.de/vinzenz/nixos-configuration.git --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
|
||||
myos-apply = ''echo "Enter sudo password" && sudo nixos-rebuild switch --flake .# --show-trace --log-format internal-json -v |& ${pkgs.nix-output-monitor}/bin/nom --json'';
|
||||
};
|
||||
};
|
||||
|
||||
git = {
|
||||
userName = "Ronja Spiegelberg";
|
||||
userEmail = "ronja.spiegelberg@gmail.com";
|
||||
|
||||
extraConfig = {
|
||||
pull.ff = "only";
|
||||
merge.tool = "kdiff3";
|
||||
};
|
||||
};
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
{
|
||||
# ublock origin
|
||||
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
||||
}
|
||||
{
|
||||
id = "dcpihecpambacapedldabdbpakmachpb";
|
||||
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/updates.xml";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,30 +1,5 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
config = {
|
||||
users.users.vinzenz = {
|
||||
isNormalUser = true;
|
||||
name = "vinzenz";
|
||||
description = "Vinzenz";
|
||||
home = "/home/vinzenz";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"games"
|
||||
"dialout"
|
||||
"podman"
|
||||
"nginx"
|
||||
"adbusers"
|
||||
"kvm"
|
||||
"input"
|
||||
"video"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
autoSubUidGidRange = true;
|
||||
};
|
||||
|
||||
nix.settings.trusted-users = [ "vinzenz" ];
|
||||
|
||||
home-manager.users.vinzenz.imports = [
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./editorconfig.nix
|
||||
./fuzzel.nix
|
||||
|
@ -37,15 +12,4 @@
|
|||
./waybar.nix
|
||||
./zsh.nix
|
||||
];
|
||||
|
||||
allowedUnfreePackages = [
|
||||
"rider"
|
||||
"pycharm-professional"
|
||||
"jetbrains-toolbox"
|
||||
|
||||
"anydesk"
|
||||
|
||||
"vscode-extension-ms-dotnettools-csharp"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
{ vinzenzNixosModules, ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware.nix
|
||||
|
||||
vinzenzNixosModules.podman
|
||||
./forgejo-runner.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
{ vinzenzNixosModules, vinzenzHomeConfigurations, ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware.nix
|
||||
|
||||
vinzenzNixosModules.gnome
|
||||
vinzenzNixosModules.steam
|
||||
vinzenzNixosModules.wine-gaming
|
||||
vinzenzNixosModules.vinzenz-desktop-settings
|
||||
|
||||
vinzenzHomeConfigurations.ronja
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,17 +1,6 @@
|
|||
{ vinzenzNixosModules, vinzenzHomeConfigurations, ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware.nix
|
||||
|
||||
vinzenzNixosModules.gnome
|
||||
vinzenzNixosModules.wine-gaming
|
||||
vinzenzNixosModules.steam
|
||||
vinzenzNixosModules.printing
|
||||
vinzenzNixosModules.podman
|
||||
vinzenzNixosModules.vinzenz-desktop-settings
|
||||
|
||||
vinzenzHomeConfigurations.vinzenz
|
||||
vinzenzHomeConfigurations.ronja
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,12 +1,5 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
vinzenzNixosModules,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [ vinzenzNixosModules.intel-graphics ];
|
||||
config = {
|
||||
# intel cpu
|
||||
boot.kernelModules = [
|
||||
"kvm-intel"
|
||||
|
@ -60,5 +53,4 @@
|
|||
services.hardware.bolt.enable = true; # thunderbolt security
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,19 +1,8 @@
|
|||
{ vinzenzNixosModules, vinzenzHomeConfigurations, ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware.nix
|
||||
./vscode-server.nix
|
||||
./hass.nix
|
||||
|
||||
vinzenzNixosModules.gnome
|
||||
vinzenzNixosModules.wine-gaming
|
||||
vinzenzNixosModules.steam
|
||||
vinzenzNixosModules.printing
|
||||
vinzenzNixosModules.podman
|
||||
vinzenzNixosModules.vinzenz-desktop-settings
|
||||
|
||||
vinzenzHomeConfigurations.vinzenz
|
||||
vinzenzHomeConfigurations.ronja
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,12 +1,5 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
vinzenzNixosModules,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [ vinzenzNixosModules.amd-graphics ];
|
||||
config = {
|
||||
# amd cpu
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
|
||||
|
@ -34,5 +27,4 @@
|
|||
};
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
config = {
|
||||
nixpkgs.config = {
|
||||
# https://github.com/NixOS/nixpkgs/issues/197325#issuecomment-1579420085
|
||||
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) config.allowedUnfreePackages;
|
||||
allowUnfreePredicate = lib.mkDefault (
|
||||
pkg: builtins.elem (lib.getName pkg) config.allowedUnfreePackages
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
{ pkgs, vinzenzNixosModules, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ vinzenzNixosModules.allowed-unfree-list ];
|
||||
|
||||
config = {
|
||||
hardware.graphics = {
|
||||
extraPackages = with pkgs; [
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
{ vinzenzNixosModules, ... }:
|
||||
{
|
||||
imports = [ vinzenzNixosModules.allowed-unfree-list ];
|
||||
|
||||
hardware.steam-hardware.enable = true;
|
||||
|
||||
programs = {
|
||||
|
|
19
nixosModules/user-ronja.nix
Normal file
19
nixosModules/user-ronja.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
users.users.ronja = {
|
||||
isNormalUser = true;
|
||||
name = "ronja";
|
||||
description = "Ronja";
|
||||
home = "/home/ronja";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"games"
|
||||
"podman"
|
||||
"openvscode-server"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
nix.settings.trusted-users = [ "ronja" ];
|
||||
}
|
35
nixosModules/user-vinzenz.nix
Normal file
35
nixosModules/user-vinzenz.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
users.users.vinzenz = {
|
||||
isNormalUser = true;
|
||||
name = "vinzenz";
|
||||
description = "Vinzenz";
|
||||
home = "/home/vinzenz";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"games"
|
||||
"dialout"
|
||||
"podman"
|
||||
"nginx"
|
||||
"adbusers"
|
||||
"kvm"
|
||||
"input"
|
||||
"video"
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
autoSubUidGidRange = true;
|
||||
};
|
||||
|
||||
nix.settings.trusted-users = [ "vinzenz" ];
|
||||
|
||||
allowedUnfreePackages = [
|
||||
"rider"
|
||||
"pycharm-professional"
|
||||
"jetbrains-toolbox"
|
||||
|
||||
"anydesk"
|
||||
|
||||
"vscode-extension-ms-dotnettools-csharp"
|
||||
];
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue