Added: Container Switch
This commit is contained in:
13
flake.nix
13
flake.nix
@@ -109,13 +109,14 @@
|
||||
username,
|
||||
system ? "x86_64-linux",
|
||||
monitorSetup ? "single",
|
||||
containerization ? "none",
|
||||
extraModules ? [ ],
|
||||
}:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
inherit username monitorSetup;
|
||||
inherit username monitorSetup containerization;
|
||||
};
|
||||
modules =
|
||||
commonModules
|
||||
@@ -124,6 +125,7 @@
|
||||
./users/${username}/nixos.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
(commonHomeManagerConfig { inherit username monitorSetup; })
|
||||
./modules/containerization
|
||||
]
|
||||
++ extraModules;
|
||||
|
||||
@@ -163,20 +165,29 @@
|
||||
hostname = "qemu";
|
||||
username = "phil";
|
||||
monitorSetup = "single";
|
||||
containerization = "none";
|
||||
};
|
||||
|
||||
m920q = mkSystem {
|
||||
hostname = "m920q";
|
||||
username = "phil";
|
||||
monitorSetup = "dual";
|
||||
containerization = "podman";
|
||||
};
|
||||
|
||||
hp15-n028sg = mkSystem {
|
||||
hostname = "hp15-n028sg";
|
||||
username = "phil";
|
||||
monitorSetup = "single";
|
||||
containerization = "docker";
|
||||
};
|
||||
|
||||
cloud = mkSystem {
|
||||
hostname = "cluster.cyperpunk.de";
|
||||
username = "phil";
|
||||
monitorSetup = "none";
|
||||
containerization = "podman";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
@@ -9,9 +9,9 @@
|
||||
#./wpaperd.nix
|
||||
./swww.nix
|
||||
./rofi # App Launcher
|
||||
#./mako.nix # Notifyer
|
||||
./mako.nix # Notifyer
|
||||
./cava.nix # Music Visualizer
|
||||
./swaync.nix
|
||||
#./swaync.nix
|
||||
];
|
||||
|
||||
programs.waybar =
|
||||
|
@@ -88,6 +88,7 @@ in
|
||||
|
||||
input = {
|
||||
kb_layout = "de";
|
||||
kb_variant = "mac";
|
||||
repeat_rate = 50;
|
||||
repeat_delay = 300;
|
||||
|
||||
@@ -216,6 +217,9 @@ in
|
||||
# Lock Screen
|
||||
"${super}, M, exit, "
|
||||
|
||||
# swaync
|
||||
"${super}, Y, exec, swaync-client -t -sw"
|
||||
|
||||
# Rofi bindings
|
||||
"${super}, F, exec, ${filebrowser}"
|
||||
"${super}, A, exec, ${apps}"
|
||||
|
@@ -27,8 +27,8 @@
|
||||
background = [
|
||||
{
|
||||
path = "~/Pictures/Wallpapers/lucy_with_cat.png";
|
||||
blur_passes = 0;
|
||||
blur_size = 0;
|
||||
blur_passes = 1;
|
||||
blur_size = 5;
|
||||
}
|
||||
];
|
||||
|
||||
@@ -37,11 +37,11 @@
|
||||
{
|
||||
monitor = "";
|
||||
text = "$TIME";
|
||||
color = "$text";
|
||||
color = "$peach";
|
||||
font_size = 90;
|
||||
font_family = "$font";
|
||||
position = "-30, 0";
|
||||
halign = "right";
|
||||
position = "0, -100";
|
||||
halign = "center";
|
||||
valign = "top";
|
||||
}
|
||||
|
||||
@@ -49,12 +49,36 @@
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:43200000] date +"%A, %d %B %Y"'';
|
||||
color = "$text";
|
||||
color = "$peach";
|
||||
font_size = 25;
|
||||
font_family = "$font";
|
||||
position = "-30, -150";
|
||||
halign = "right";
|
||||
valign = "top";
|
||||
position = "0, 100";
|
||||
halign = "center";
|
||||
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";
|
||||
}
|
||||
];
|
||||
|
||||
|
@@ -42,4 +42,71 @@
|
||||
(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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
{ pkgs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
services.mako = {
|
||||
enable = true;
|
||||
@@ -10,6 +10,9 @@
|
||||
extraConfig = ''
|
||||
[app-name=Spotify]
|
||||
border-color=#a6e3a1
|
||||
|
||||
[app-name=Thunderbird]
|
||||
border-color=#94e2d5
|
||||
'';
|
||||
|
||||
};
|
||||
|
@@ -28,7 +28,7 @@
|
||||
}
|
||||
|
||||
configuration {
|
||||
font: "Icomoon-Feather 12";
|
||||
font: "Fira Code Bold 20px";
|
||||
show-icons: true;
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ textbox-prompt-colon {
|
||||
padding: 15px;
|
||||
border: 0px 0px 0px 10px;
|
||||
border-radius: 100% 100% 0px 100%;
|
||||
border-color: @peach;
|
||||
border-color: @blue;
|
||||
background-color: @crust;
|
||||
text-color: @text;
|
||||
}
|
||||
@@ -117,7 +117,7 @@ listview {
|
||||
fixed-columns: true;
|
||||
|
||||
spacing: 30px;
|
||||
margin: 30px;
|
||||
margin: 10px;
|
||||
background-color: transparent;
|
||||
cursor: "default";
|
||||
}
|
||||
@@ -125,11 +125,12 @@ listview {
|
||||
/*****----- Elements -----*****/
|
||||
element {
|
||||
enabled: true;
|
||||
padding: 35px 10px;
|
||||
border-radius: 5%;
|
||||
padding: 10px;
|
||||
border-radius: 1%;
|
||||
background-color: @crust;
|
||||
text-color: @text;
|
||||
cursor: pointer;
|
||||
children: [ element-text ];
|
||||
}
|
||||
element-text {
|
||||
background-color: transparent;
|
||||
@@ -140,7 +141,7 @@ element-text {
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: @crust;
|
||||
text-color: @sapphire;
|
||||
text-color: @yellow;
|
||||
}
|
||||
|
||||
/*****----- Message -----*****/
|
||||
|
@@ -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;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@@ -159,6 +159,27 @@
|
||||
interval = 60;
|
||||
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;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
@@ -149,3 +149,12 @@ window#waybar.hidden {
|
||||
margin: 5px 20px;
|
||||
padding: 0px 10px;
|
||||
}
|
||||
|
||||
/* SwayNC */
|
||||
#custom-notification {
|
||||
font-family: "NotoSansMono Nerd Font";
|
||||
background: @green;
|
||||
border-radius: 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ in
|
||||
modules-center = [
|
||||
"hyprland/workspaces"
|
||||
"niri/workspaces"
|
||||
"custom/notification"
|
||||
];
|
||||
modules-right = [
|
||||
"group/hardware"
|
||||
|
@@ -7,5 +7,6 @@
|
||||
./sqllite_browser.nix
|
||||
./compilers.nix
|
||||
./beekeeper-studio.nix
|
||||
#./newelle.nix
|
||||
];
|
||||
}
|
||||
|
8
home/programs/dev/newelle.nix
Normal file
8
home/programs/dev/newelle.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
# Install fstl
|
||||
home.packages = with pkgs; [
|
||||
newelle
|
||||
];
|
||||
}
|
@@ -14,11 +14,9 @@
|
||||
../../modules/localisation.nix
|
||||
../../modules/openssh.nix
|
||||
../../modules/pipewire.nix
|
||||
../../modules/podman.nix
|
||||
../../modules/services.nix
|
||||
../../modules/regreet/regreet.nix
|
||||
../../modules/plymouth.nix
|
||||
../../modules/file_managers/spacefm.nix
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
@@ -16,8 +16,6 @@
|
||||
../../modules/localisation.nix
|
||||
../../modules/openssh.nix
|
||||
../../modules/pipewire.nix
|
||||
#../../modules/podman.nix
|
||||
../../modules/docker.nix
|
||||
../../modules/services.nix
|
||||
../../modules/regreet/regreet.nix
|
||||
../../modules/plymouth.nix
|
||||
|
@@ -4,7 +4,6 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
@@ -14,11 +14,9 @@
|
||||
../../modules/localisation.nix
|
||||
../../modules/openssh.nix
|
||||
../../modules/pipewire.nix
|
||||
../../modules/podman.nix
|
||||
../../modules/services.nix
|
||||
../../modules/regreet/regreet.nix
|
||||
../../modules/plymouth.nix
|
||||
../../modules/file_managers/spacefm.nix
|
||||
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
|
41
modules/containerization/default.nix
Normal file
41
modules/containerization/default.nix
Normal 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" ];
|
||||
};
|
||||
*/
|
||||
};
|
||||
}
|
18
modules/containerization/docker.nix
Normal file
18
modules/containerization/docker.nix
Normal 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";
|
||||
}
|
17
modules/containerization/podman.nix
Normal file
17
modules/containerization/podman.nix
Normal 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";
|
||||
}
|
@@ -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" ];
|
||||
};
|
||||
*/
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
@@ -4,7 +4,7 @@
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.defaultLocale = "de_DE.UTF-8";
|
||||
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_DE.UTF-8";
|
||||
|
@@ -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" ];
|
||||
};
|
||||
*/
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
@@ -31,6 +31,7 @@
|
||||
enable = true;
|
||||
interactiveShellInit = ''
|
||||
fish_config prompt choose disco
|
||||
starship init fish | source
|
||||
function fish_greeting
|
||||
fastfetch
|
||||
end
|
||||
|
Reference in New Issue
Block a user