Refactor home manager profile
This commit is contained in:
parent
63386512a8
commit
6c452c6649
@ -1,98 +1,9 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
home.stateVersion = "24.11";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
libreoffice-still
|
||||
remmina
|
||||
thunderbird
|
||||
signal-desktop
|
||||
prusa-slicer
|
||||
freecad-wayland
|
||||
inkscape
|
||||
ente-auth
|
||||
bitwarden
|
||||
carla
|
||||
winbox
|
||||
whatsapp-for-linux
|
||||
discord
|
||||
steam
|
||||
spotify
|
||||
# feishin # TODO: Fix or replace as insecure
|
||||
eduvpn-client
|
||||
river # TODO: Move
|
||||
firefox # TODO: Move to dediated module
|
||||
ryubing
|
||||
dconf-editor
|
||||
bottles
|
||||
];
|
||||
|
||||
modules = {
|
||||
# Desktop environment
|
||||
desktop.gnome.enable = true;
|
||||
# desktop.tiling.enable = true;
|
||||
|
||||
# Browser
|
||||
# firefox = {
|
||||
# enable = true;
|
||||
# default = false;
|
||||
# };
|
||||
# qutebrowser = {
|
||||
# enable = true;
|
||||
# default = true;
|
||||
# };
|
||||
|
||||
# Gaming
|
||||
# retroarch.enable = true;
|
||||
# ryujinx.enable = true;
|
||||
|
||||
# Tools
|
||||
git = {
|
||||
enable = true;
|
||||
user = "Jan-Bulthuis";
|
||||
email = "git@bulthuis.dev";
|
||||
# TODO: Move
|
||||
ignores = [
|
||||
".envrc"
|
||||
".direnv"
|
||||
"flake.nix"
|
||||
"flake.lock"
|
||||
];
|
||||
};
|
||||
# btop.enable = true;
|
||||
direnv.enable = true;
|
||||
fish.enable = true;
|
||||
# bluetuith.enable = false;
|
||||
# obsidian.enable = true;
|
||||
# zathura.enable = true;
|
||||
# keyring.enable = true;
|
||||
# scripts.enable = true;
|
||||
xpra = {
|
||||
enable = true;
|
||||
hosts = [
|
||||
"mixer@10.20.60.251"
|
||||
];
|
||||
};
|
||||
|
||||
# Development
|
||||
# neovim.enable = true;
|
||||
vscode.enable = true;
|
||||
# docker.enable = true;
|
||||
# matlab.enable = true;
|
||||
# mathematica.enable = true;
|
||||
|
||||
# Languages
|
||||
haskell.enable = false;
|
||||
js.enable = true;
|
||||
nix.enable = true;
|
||||
rust.enable = true;
|
||||
python.enable = true;
|
||||
cpp.enable = true;
|
||||
tex.enable = true;
|
||||
jupyter.enable = false;
|
||||
};
|
||||
modules.profiles.jan.enable = true;
|
||||
}
|
||||
|
7
hosts/20212060/users/root.nix
Normal file
7
hosts/20212060/users/root.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
home.stateVersion = "24.11";
|
||||
|
||||
modules.profiles.gnome.enable = true;
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
home.stateVersion = "24.11";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
];
|
||||
|
||||
modules = {
|
||||
# Desktop environment
|
||||
# desktop.gnome.enable = true;
|
||||
# desktop.tiling.enable = true;
|
||||
};
|
||||
}
|
240
hosts/vm-audio/configuration.nix
Normal file
240
hosts/vm-audio/configuration.nix
Normal file
@ -0,0 +1,240 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
# State version
|
||||
system.stateVersion = "24.11";
|
||||
|
||||
# Machine hostname
|
||||
networking.hostName = "vm-audio";
|
||||
|
||||
# Enabled modules
|
||||
modules = {
|
||||
pipewire.enable = true;
|
||||
spotifyd.enable = true;
|
||||
};
|
||||
|
||||
# Install system packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
carla
|
||||
xpra
|
||||
alsa-utils
|
||||
pulsemixer
|
||||
adwaita-icon-theme
|
||||
open-stage-control
|
||||
carla_osc_bridge
|
||||
|
||||
# Add LV2 plugins
|
||||
lsp-plugins
|
||||
airwindows-lv2
|
||||
distrho-ports
|
||||
cardinal
|
||||
calf
|
||||
];
|
||||
|
||||
# Setup firewall
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
8080
|
||||
10402
|
||||
15151
|
||||
22752
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
8080
|
||||
10402
|
||||
15151
|
||||
22752
|
||||
];
|
||||
};
|
||||
|
||||
# Setup dependencies
|
||||
environment.variables.LD_LIBRARY_PATH = lib.mkForce "${lib.makeLibraryPath (
|
||||
with pkgs;
|
||||
[
|
||||
cairo
|
||||
pipewire.jack
|
||||
]
|
||||
)}";
|
||||
qt = {
|
||||
enable = true;
|
||||
style = "adwaita";
|
||||
};
|
||||
xdg.icons = {
|
||||
enable = true;
|
||||
fallbackCursorThemes = [ "Adwaita" ];
|
||||
};
|
||||
hardware.graphics.enable = true;
|
||||
|
||||
# User for audio mixing
|
||||
users.users.mixer = {
|
||||
isNormalUser = true;
|
||||
group = "mixer";
|
||||
extraGroups = [ "systemd-journal" ];
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKKxoQSxfYqf9ITN8Fhckk8WbY4dwtBAXOhC9jxihJvq jan@bulthuis.dev"
|
||||
];
|
||||
};
|
||||
users.groups.mixer = { };
|
||||
users.groups.audio = {
|
||||
members = [
|
||||
"mixer"
|
||||
];
|
||||
};
|
||||
users.groups.bluetooth = {
|
||||
members = [
|
||||
"mixer"
|
||||
];
|
||||
};
|
||||
|
||||
# Xpra service
|
||||
systemd.user.services.xpra = {
|
||||
description = "Xpra Service";
|
||||
wantedBy = [ "default.target" ];
|
||||
after = [
|
||||
"network.target"
|
||||
];
|
||||
unitConfig = {
|
||||
ConditionUser = "mixer";
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.xpra}/bin/xpra start :7 --bind-tcp=0.0.0.0:15151 --daemon=no";
|
||||
Restart = "always";
|
||||
RestartSec = 5;
|
||||
};
|
||||
};
|
||||
|
||||
# Carla service
|
||||
systemd.user.services.carla = {
|
||||
description = "Carla Service";
|
||||
wantedBy = [ "default.target" ];
|
||||
after = [
|
||||
"network.target"
|
||||
"sound.target"
|
||||
];
|
||||
requires = [
|
||||
"xpra.service"
|
||||
];
|
||||
unitConfig = {
|
||||
ConditionUser = "mixer";
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.carla}/bin/carla /home/mixer/Default.carxp -platform xcb";
|
||||
Environment = "\"DISPLAY=:7\"";
|
||||
Restart = "always";
|
||||
RestartSec = 5;
|
||||
};
|
||||
};
|
||||
|
||||
# Carla service
|
||||
systemd.user.services.carla-bridge = {
|
||||
description = "Carla OSC Bridge";
|
||||
wantedBy = [ "default.target" ];
|
||||
after = [
|
||||
"network.target"
|
||||
"sound.target"
|
||||
];
|
||||
requires = [
|
||||
"carla.service"
|
||||
];
|
||||
unitConfig = {
|
||||
ConditionUser = "mixer";
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.carla_osc_bridge}/bin/carla_osc_bridge --clients \"127.0.0.1:8080\"";
|
||||
Restart = "always";
|
||||
RestartSec = 5;
|
||||
};
|
||||
};
|
||||
|
||||
# Open stage control service
|
||||
systemd.user.services.osc = {
|
||||
description = "OSC Service";
|
||||
wantedBy = [ "default.target" ];
|
||||
after = [
|
||||
"network.target"
|
||||
];
|
||||
requires = [
|
||||
"carla.service"
|
||||
];
|
||||
unitConfig = {
|
||||
ConditionUser = "mixer";
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.open-stage-control}/bin/open-stage-control --no-gui --send 127.0.0.1:10402 --load /home/mixer/open-stage-control/session.json --theme /home/mixer/open-stage-control/theme.css";
|
||||
Environment = "\"ELECTRON_RUN_AS_NODE=1\"";
|
||||
Restart = "always";
|
||||
RestartSec = 5;
|
||||
};
|
||||
};
|
||||
|
||||
# Create bluetooth A2DP source
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
disabledPlugins = [ "hostname" ];
|
||||
settings.General = {
|
||||
Name = "Linox";
|
||||
Class = "0x240414";
|
||||
DiscoverableTimeout = 0;
|
||||
AlwaysPairable = true;
|
||||
PairableTimeout = 0;
|
||||
FastConnectable = true;
|
||||
JustWorksRepairing = "always";
|
||||
};
|
||||
};
|
||||
services.pipewire.wireplumber.extraConfig."50-bluetooth-a2dp" = {
|
||||
"monitor.bluez.properties" = {
|
||||
"bluez5.roles" = [ "a2dp_source" ];
|
||||
};
|
||||
};
|
||||
|
||||
# Create null sinks
|
||||
services.pipewire.extraConfig.pipewire."91-null-sinks" = {
|
||||
"context.objects" = [
|
||||
{
|
||||
factory = "adapter";
|
||||
args = {
|
||||
"factory.name" = "support.null-audio-sink";
|
||||
"node.name" = "Speaker-Proxy";
|
||||
"node.description" = "Proxy for Speaker Output";
|
||||
"media.class" = "Audio/Sink";
|
||||
"audio.position" = "L,R";
|
||||
};
|
||||
}
|
||||
{
|
||||
factory = "adapter";
|
||||
args = {
|
||||
"factory.name" = "support.null-audio-sink";
|
||||
"node.name" = "Headphone-Proxy";
|
||||
"node.description" = "Proxy for Headphone Output";
|
||||
"media.class" = "Audio/Sink";
|
||||
"audio.position" = "L,R";
|
||||
};
|
||||
}
|
||||
{
|
||||
factory = "adapter";
|
||||
args = {
|
||||
"factory.name" = "support.null-audio-sink";
|
||||
"node.name" = "SpotifyD-Proxy";
|
||||
"node.description" = "Proxy for SpotifyD";
|
||||
"media.class" = "Audio/Sink";
|
||||
"audio.position" = "L,R";
|
||||
};
|
||||
}
|
||||
{
|
||||
factory = "adapter";
|
||||
args = {
|
||||
"factory.name" = "support.null-audio-sink";
|
||||
"node.name" = "AnalogIn-Proxy";
|
||||
"node.description" = "Proxy for the analog input";
|
||||
"media.class" = "Audio/Source/Virtual";
|
||||
"audio.position" = "L,R";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
7
hosts/vm-audio/users/local.nix
Normal file
7
hosts/vm-audio/users/local.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
home.stateVersion = "24.11";
|
||||
|
||||
modules.profiles.local.enable = true;
|
||||
}
|
@ -48,6 +48,8 @@ in
|
||||
gnome-text-editor
|
||||
showtime
|
||||
file-roller
|
||||
mission-center
|
||||
dconf-editor
|
||||
|
||||
# For theming gtk3
|
||||
adw-gtk3
|
||||
@ -56,6 +58,7 @@ in
|
||||
gsconnect
|
||||
disable-workspace-animation
|
||||
wallpaper-slideshow
|
||||
media-progress
|
||||
]);
|
||||
|
||||
# Enable and set the gtk themes
|
||||
|
31
modules/home/profiles/base.nix
Normal file
31
modules/home/profiles/base.nix
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.modules.profiles.base;
|
||||
in
|
||||
{
|
||||
options.modules.profiles.base = {
|
||||
enable = mkEnableOption "Base home-manager profile";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
modules = {
|
||||
# btop.enable = true;
|
||||
direnv.enable = true;
|
||||
fish.enable = true;
|
||||
# scripts.enable = true;
|
||||
|
||||
# Development
|
||||
# neovim.enable = true;
|
||||
|
||||
# Languages
|
||||
nix.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
48
modules/home/profiles/gnome.nix
Normal file
48
modules/home/profiles/gnome.nix
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.modules.profiles.gnome;
|
||||
in
|
||||
{
|
||||
options.modules.profiles.gnome = {
|
||||
enable = mkEnableOption "Graphical GNOME environment";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
firefox # TODO: Move to dediated module
|
||||
];
|
||||
|
||||
modules = {
|
||||
profiles.base.enable = true;
|
||||
|
||||
# Desktop environment
|
||||
desktop.gnome.enable = true;
|
||||
# desktop.tiling.enable = true;
|
||||
|
||||
# Browser
|
||||
# firefox = {
|
||||
# enable = true;
|
||||
# default = false;
|
||||
# };
|
||||
# qutebrowser = {
|
||||
# enable = true;
|
||||
# default = true;
|
||||
# };
|
||||
|
||||
# Tools
|
||||
# obsidian.enable = true;
|
||||
# zathura.enable = true;
|
||||
|
||||
# Development
|
||||
# neovim.enable = true;
|
||||
vscode.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
86
modules/home/profiles/jan.nix
Normal file
86
modules/home/profiles/jan.nix
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.modules.profiles.jan;
|
||||
in
|
||||
{
|
||||
options.modules.profiles.jan = {
|
||||
enable = mkEnableOption "Jan's personal profile";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
libreoffice-still
|
||||
remmina
|
||||
thunderbird
|
||||
signal-desktop
|
||||
prusa-slicer
|
||||
freecad-wayland
|
||||
inkscape
|
||||
ente-auth
|
||||
bitwarden
|
||||
carla
|
||||
winbox
|
||||
whatsapp-for-linux
|
||||
discord
|
||||
steam
|
||||
spotify
|
||||
# feishin # TODO: Fix or replace as insecure
|
||||
eduvpn-client
|
||||
river # TODO: Move
|
||||
ryubing
|
||||
bottles
|
||||
prismlauncher
|
||||
foliate
|
||||
];
|
||||
|
||||
modules = {
|
||||
profiles.gnome.enable = true;
|
||||
|
||||
# Gaming
|
||||
# retroarch.enable = true;
|
||||
# ryujinx.enable = true;
|
||||
|
||||
# Tools
|
||||
git = {
|
||||
enable = true;
|
||||
user = "Jan-Bulthuis";
|
||||
email = "git@bulthuis.dev";
|
||||
# TODO: Move
|
||||
ignores = [
|
||||
".envrc"
|
||||
".direnv"
|
||||
"flake.nix"
|
||||
"flake.lock"
|
||||
];
|
||||
};
|
||||
xpra = {
|
||||
enable = true;
|
||||
hosts = [
|
||||
"mixer@10.20.60.251"
|
||||
];
|
||||
};
|
||||
|
||||
# Development
|
||||
# docker.enable = true;
|
||||
# matlab.enable = true;
|
||||
mathematica.enable = true;
|
||||
|
||||
# Languages
|
||||
haskell.enable = false;
|
||||
js.enable = true;
|
||||
nix.enable = true;
|
||||
rust.enable = true;
|
||||
python.enable = true;
|
||||
cpp.enable = true;
|
||||
tex.enable = true;
|
||||
jupyter.enable = false;
|
||||
};
|
||||
};
|
||||
}
|
70
modules/nixos/profiles/vm.nix
Normal file
70
modules/nixos/profiles/vm.nix
Normal file
@ -0,0 +1,70 @@
|
||||
{
|
||||
mkModule,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.modules.profiles.vm;
|
||||
in
|
||||
{
|
||||
options.modules.profiles.vm = {
|
||||
enable = mkEnableOption "Base VM profile";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# Machine hostname
|
||||
networking.hostName = lib.mkDefault "vm-base";
|
||||
|
||||
# Enabled modules
|
||||
modules = {
|
||||
profiles.base.enable = true;
|
||||
base.enable = true;
|
||||
ssh.enable = true;
|
||||
};
|
||||
|
||||
# Enable qemu guest agent
|
||||
services.qemuGuest.enable = true;
|
||||
|
||||
# Hardware configuration
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
boot.initrd.availableKernelModules = [
|
||||
"ata_piix"
|
||||
"uhci_hcd"
|
||||
"virtio_pci"
|
||||
"virtio_scsi"
|
||||
"sd_mod"
|
||||
"sr_mod"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
|
||||
# Filesystems
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-partlabel/root";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-partlabel/EFI";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0077"
|
||||
"dmask=0077"
|
||||
];
|
||||
};
|
||||
|
||||
# Swapfile
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/var/lib/swapfile";
|
||||
size = 6 * 1024;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user