Added: Container Switch

This commit is contained in:
2025-09-19 16:32:49 +02:00
parent 49e4f0e7ef
commit ac8850ae00
24 changed files with 361 additions and 107 deletions

View File

@@ -109,13 +109,14 @@
username, username,
system ? "x86_64-linux", system ? "x86_64-linux",
monitorSetup ? "single", monitorSetup ? "single",
containerization ? "none",
extraModules ? [ ], extraModules ? [ ],
}: }:
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
inherit system; inherit system;
specialArgs = { specialArgs = {
inherit inputs; inherit inputs;
inherit username monitorSetup; inherit username monitorSetup containerization;
}; };
modules = modules =
commonModules commonModules
@@ -124,6 +125,7 @@
./users/${username}/nixos.nix ./users/${username}/nixos.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
(commonHomeManagerConfig { inherit username monitorSetup; }) (commonHomeManagerConfig { inherit username monitorSetup; })
./modules/containerization
] ]
++ extraModules; ++ extraModules;
@@ -163,20 +165,29 @@
hostname = "qemu"; hostname = "qemu";
username = "phil"; username = "phil";
monitorSetup = "single"; monitorSetup = "single";
containerization = "none";
}; };
m920q = mkSystem { m920q = mkSystem {
hostname = "m920q"; hostname = "m920q";
username = "phil"; username = "phil";
monitorSetup = "dual"; monitorSetup = "dual";
containerization = "podman";
}; };
hp15-n028sg = mkSystem { hp15-n028sg = mkSystem {
hostname = "hp15-n028sg"; hostname = "hp15-n028sg";
username = "phil"; username = "phil";
monitorSetup = "single"; monitorSetup = "single";
containerization = "docker";
}; };
cloud = mkSystem {
hostname = "cluster.cyperpunk.de";
username = "phil";
monitorSetup = "none";
containerization = "podman";
};
}; };
}; };

View File

@@ -9,9 +9,9 @@
#./wpaperd.nix #./wpaperd.nix
./swww.nix ./swww.nix
./rofi # App Launcher ./rofi # App Launcher
#./mako.nix # Notifyer ./mako.nix # Notifyer
./cava.nix # Music Visualizer ./cava.nix # Music Visualizer
./swaync.nix #./swaync.nix
]; ];
programs.waybar = programs.waybar =

View File

@@ -88,6 +88,7 @@ in
input = { input = {
kb_layout = "de"; kb_layout = "de";
kb_variant = "mac";
repeat_rate = 50; repeat_rate = 50;
repeat_delay = 300; repeat_delay = 300;
@@ -216,6 +217,9 @@ in
# Lock Screen # Lock Screen
"${super}, M, exit, " "${super}, M, exit, "
# swaync
"${super}, Y, exec, swaync-client -t -sw"
# Rofi bindings # Rofi bindings
"${super}, F, exec, ${filebrowser}" "${super}, F, exec, ${filebrowser}"
"${super}, A, exec, ${apps}" "${super}, A, exec, ${apps}"

View File

@@ -27,8 +27,8 @@
background = [ background = [
{ {
path = "~/Pictures/Wallpapers/lucy_with_cat.png"; path = "~/Pictures/Wallpapers/lucy_with_cat.png";
blur_passes = 0; blur_passes = 1;
blur_size = 0; blur_size = 5;
} }
]; ];
@@ -37,24 +37,48 @@
{ {
monitor = ""; monitor = "";
text = "$TIME"; text = "$TIME";
color = "$text"; color = "$peach";
font_size = 90; font_size = 90;
font_family = "$font"; font_family = "$font";
position = "-30, 0"; position = "0, -100";
halign = "right"; halign = "center";
valign = "top"; valign = "top";
} }
# DATE # DATE
{ {
monitor = ""; monitor = "";
text = ''cmd[update:43200000] date +"%A, %d %B %Y"''; text = ''cmd[update:43200000] date +"%A, %d %B %Y"'';
color = "$text"; color = "$peach";
font_size = 25; font_size = 25;
font_family = "$font"; font_family = "$font";
position = "-30, -150"; position = "0, 100";
halign = "right"; halign = "center";
valign = "top"; valign = "bottom";
}
# Message
{
monitor = "";
text = "Waiting for you...";
color = "$peach";
font_size = 20;
font_family = "$font";
position = "0, 200";
halign = "center";
valign = "bottom";
}
# Weather
{
monitor = "";
text = ''cmd[update:60000] curl -s "wttr.in/52.281311,10.527029?format=1"'';
color = "$peach";
font_size = 20;
font_family = "$font";
position = "0, 50";
halign = "center";
valign = "bottom";
} }
]; ];

View File

@@ -42,4 +42,71 @@
(builtins.concatStringsSep "," mappings) + " Symbols Nerd Font"; (builtins.concatStringsSep "," mappings) + " Symbols Nerd Font";
}; };
}; };
programs.starship = {
enable = true;
settings = {
add_newline = true;
command_timeout = 500;
format = "$username$hostname $directory $git_branch$git_status\n$character ";
right_format = "$cmd_duration";
username = {
style_user = "bold #cba6f7";
style_root = "bold #f38ba8";
format = "[](bold #a6e3a1)[$user]($style)";
show_always = true;
};
hostname = {
style = "bold #74c7ec";
format = "[@](bold #fab387)[$hostname]($style)";
ssh_only = false;
};
directory = {
style = "bold #a6e3a1";
truncation_length = 0;
truncation_symbol = "";
format = "[ ](bold #f38ba8)[$path]($style)";
};
git_branch = {
format = "[$branch]($style)";
style = "bold #f9e2af";
};
# Git status module settings
git_status = {
format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](red) ($ahead_behind$stashed)]($style)";
style = "bold #a6e3a1";
conflicted = "";
untracked = "";
modified = "";
staged = "";
renamed = "";
deleted = "";
};
# Command duration module
cmd_duration = {
format = "[$duration]($style)";
style = "bold #cdd6f4";
min_time = 5000; # Only show if command takes longer than 5 seconds
};
# Character module (prompt symbol)
character = {
success_symbol = "[ ](bold #a6e3a1)";
error_symbol = "[ ](bold #f38ba8)";
};
nix_shell = {
format = "[$symbol$state( \($name\))]($style)";
symbol = "U+02744";
style = "bold #89dceb";
};
};
};
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { ... }:
{ {
services.mako = { services.mako = {
enable = true; enable = true;
@@ -8,8 +8,11 @@
defaultTimeout = 5000; defaultTimeout = 5000;
extraConfig = '' extraConfig = ''
[app-name=Spotify] [app-name=Spotify]
border-color=#a6e3a1 border-color=#a6e3a1
[app-name=Thunderbird]
border-color=#94e2d5
''; '';
}; };

View File

@@ -28,7 +28,7 @@
} }
configuration { configuration {
font: "Icomoon-Feather 12"; font: "Fira Code Bold 20px";
show-icons: true; show-icons: true;
} }
@@ -85,11 +85,11 @@ dummy {
textbox-prompt-colon { textbox-prompt-colon {
enabled: true; enabled: true;
expand: false; expand: false;
str: " System"; str: " System";
padding: 15px; padding: 15px;
border: 0px 0px 0px 10px; border: 0px 0px 0px 10px;
border-radius: 100% 100% 0px 100%; border-radius: 100% 100% 0px 100%;
border-color: @peach; border-color: @blue;
background-color: @crust; background-color: @crust;
text-color: @text; text-color: @text;
} }
@@ -117,7 +117,7 @@ listview {
fixed-columns: true; fixed-columns: true;
spacing: 30px; spacing: 30px;
margin: 30px; margin: 10px;
background-color: transparent; background-color: transparent;
cursor: "default"; cursor: "default";
} }
@@ -125,11 +125,12 @@ listview {
/*****----- Elements -----*****/ /*****----- Elements -----*****/
element { element {
enabled: true; enabled: true;
padding: 35px 10px; padding: 10px;
border-radius: 5%; border-radius: 1%;
background-color: @crust; background-color: @crust;
text-color: @text; text-color: @text;
cursor: pointer; cursor: pointer;
children: [ element-text ];
} }
element-text { element-text {
background-color: transparent; background-color: transparent;
@@ -140,7 +141,7 @@ element-text {
} }
element selected.normal { element selected.normal {
background-color: @crust; background-color: @crust;
text-color: @sapphire; text-color: @yellow;
} }
/*****----- Message -----*****/ /*****----- Message -----*****/

View File

@@ -1,4 +1,110 @@
{ pkgs, ... }: { ... }:
{ {
home.packages = [ pkgs.swaynotificationcenter ]; services.swaync = {
enable = true;
settings = {
positionX = "center";
positionY = "center";
layer = "overlay";
control-center-layer = "top";
layer-shell = true;
cssPriority = "user";
control-center-margin-top = 100;
control-center-margin-bottom = 200;
control-center-margin-right = 0;
control-center-margin-left = 0;
notification-2fa-action = true;
notification-inline-replies = false;
notification-icon-size = 64;
notification-body-image-height = 100;
notification-body-image-width = 200;
widgets = [
"mpris"
"volume"
"inhibitors"
"title"
"dnd"
"notifications"
];
widget-config = {
mpris = {
blacklist = [ ];
autohide = false;
show-album-art = "always";
loop-carousel = false;
image-size = 96;
image-radius = 12;
};
volume = {
label = "gain";
show-per-app = false;
empty-list-label = "Nothin' is playin'";
expand-button-label = "";
collaps-button-label = "";
};
title = {
text = "Hollerin'";
clear-all-button = true;
button-text = "Sheriff's Pardon";
};
dnd = {
text = "Let'er rest";
};
menubar = {
"menu#power" = {
label = "Power";
position = "right";
animation-type = "slide_down";
animation-duration = 250;
actions = [
{
label = "Bolt It";
command = "hyprlock";
}
{
label = "Ride Out";
command = "hyprctl dispatch exit";
}
{
label = "Circle Back";
command = "systemctl reboot";
}
{
label = "Bet Down the Horses";
command = "systemctl poweroff";
}
];
};
"buttons#media" = {
position = "left";
actions = [
{
label = "Play/Pause";
command = "playerctl play-pause";
}
{
label = "Next";
command = "playerctl next";
}
{
label = "Previous";
command = "playerctl previous";
}
];
};
};
notifications = {
vexpand = true;
};
};
};
};
} }

View File

@@ -159,6 +159,27 @@
interval = 60; interval = 60;
tooltip = false; tooltip = false;
}; };
"custom/notification" = {
tooltip = false;
format = "{icon}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = " ";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = " ";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = " ";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
dnd-inhibited-none = " ";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
};
}; };
} }

View File

@@ -149,3 +149,12 @@ window#waybar.hidden {
margin: 5px 20px; margin: 5px 20px;
padding: 0px 10px; padding: 0px 10px;
} }
/* SwayNC */
#custom-notification {
font-family: "NotoSansMono Nerd Font";
background: @green;
border-radius: 10px;
padding-left: 10px;
padding-right: 5px;
}

View File

@@ -18,6 +18,7 @@ in
modules-center = [ modules-center = [
"hyprland/workspaces" "hyprland/workspaces"
"niri/workspaces" "niri/workspaces"
"custom/notification"
]; ];
modules-right = [ modules-right = [
"group/hardware" "group/hardware"

View File

@@ -7,5 +7,6 @@
./sqllite_browser.nix ./sqllite_browser.nix
./compilers.nix ./compilers.nix
./beekeeper-studio.nix ./beekeeper-studio.nix
#./newelle.nix
]; ];
} }

View File

@@ -0,0 +1,8 @@
{ pkgs, ... }:
{
# Install fstl
home.packages = with pkgs; [
newelle
];
}

View File

@@ -14,11 +14,9 @@
../../modules/localisation.nix ../../modules/localisation.nix
../../modules/openssh.nix ../../modules/openssh.nix
../../modules/pipewire.nix ../../modules/pipewire.nix
../../modules/podman.nix
../../modules/services.nix ../../modules/services.nix
../../modules/regreet/regreet.nix ../../modules/regreet/regreet.nix
../../modules/plymouth.nix ../../modules/plymouth.nix
../../modules/file_managers/spacefm.nix
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
]; ];

View File

@@ -16,8 +16,6 @@
../../modules/localisation.nix ../../modules/localisation.nix
../../modules/openssh.nix ../../modules/openssh.nix
../../modules/pipewire.nix ../../modules/pipewire.nix
#../../modules/podman.nix
../../modules/docker.nix
../../modules/services.nix ../../modules/services.nix
../../modules/regreet/regreet.nix ../../modules/regreet/regreet.nix
../../modules/plymouth.nix ../../modules/plymouth.nix

View File

@@ -4,7 +4,6 @@
{ {
config, config,
lib, lib,
pkgs,
modulesPath, modulesPath,
... ...
}: }:

View File

@@ -14,11 +14,9 @@
../../modules/localisation.nix ../../modules/localisation.nix
../../modules/openssh.nix ../../modules/openssh.nix
../../modules/pipewire.nix ../../modules/pipewire.nix
../../modules/podman.nix
../../modules/services.nix ../../modules/services.nix
../../modules/regreet/regreet.nix ../../modules/regreet/regreet.nix
../../modules/plymouth.nix ../../modules/plymouth.nix
../../modules/file_managers/spacefm.nix
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix

View File

@@ -0,0 +1,41 @@
{
lib,
pkgs,
containerization ? "none",
...
}:
let
# Import the appropriate containerization module based on the parameter
containerModule =
if containerization == "podman" then
import ./podman.nix
else if containerization == "docker" then
import ./docker.nix
else if containerization == "none" then
{ }
else
throw "Unknown containerization type: ${containerization}. Valid options are: podman, docker, none";
in
{
imports = [ containerModule ];
# Common packages and configuration for all systems
environment.systemPackages = with pkgs; [
# Remove the curly braces {}
dive # docker layer viewer
tailscale # VPN
];
virtualisation.containers.enable = true;
virtualisation.oci-containers.containers = {
/*
container-name = {
image = "image";
autoStart = true;
ports = [ "127.0.0.1:1234:1234" ];
};
*/
};
}

View File

@@ -0,0 +1,18 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
docker-compose
lazydocker
];
virtualisation.docker = {
enable = true;
rootless = {
enable = true;
setSocketVariable = true;
};
};
virtualisation.oci-containers.backend = "docker";
}

View File

@@ -0,0 +1,17 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
podman-compose # docker-compose alternative
podman-tui # status of containers in terminal
podman-desktop # Desktop client
];
virtualisation.podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
virtualisation.oci-containers.backend = "podman";
}

View File

@@ -1,36 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
# Virtualisation
docker-compose # docker-compose alternative
dive # docker layer viewer
tailscale # Vpn
];
# Virtualisation
virtualisation = {
containers.enable = true;
docker = {
enable = true;
rootless = {
enable = true;
setSocketVariable = true;
};
};
oci-containers = {
backend = "docker";
containers = {
/*
container-name = {
image = "image";
autoStart = true;
ports = [ "127.0.0.1:1234:1234" ];
};
*/
};
};
};
}

View File

@@ -4,7 +4,7 @@
time.timeZone = "Europe/Berlin"; time.timeZone = "Europe/Berlin";
# Select internationalisation properties. # Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "de_DE.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8"; LC_ADDRESS = "de_DE.UTF-8";

View File

@@ -1,36 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
# Virtualisation
podman-compose # docker-compose alternative
dive # docker layer viewer
podman-tui # status of containers in terminal
podman-desktop # Desktop client
tailscale # Vpn
];
# Virtualisation
virtualisation = {
containers.enable = true;
podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
oci-containers = {
backend = "podman";
containers = {
/*
container-name = {
image = "image";
autoStart = true;
ports = [ "127.0.0.1:1234:1234" ];
};
*/
};
};
};
}

View File

@@ -31,8 +31,9 @@
enable = true; enable = true;
interactiveShellInit = '' interactiveShellInit = ''
fish_config prompt choose disco fish_config prompt choose disco
starship init fish | source
function fish_greeting function fish_greeting
fastfetch fastfetch
end end
''; '';
}; };