entirely vibed refactor

This commit is contained in:
alisceon 2026-03-10 21:50:51 +01:00
parent cea12431ff
commit c343c52ab7
78 changed files with 884 additions and 1099 deletions

193
flake.nix
View file

@ -23,128 +23,133 @@
nix-minecraft.url = "github:Infinidoge/nix-minecraft"; nix-minecraft.url = "github:Infinidoge/nix-minecraft";
}; };
outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, nur, nur-unstable, home-manager, stylix, nix-minecraft, ... }: outputs = inputs @ {
self,
nixpkgs,
nixpkgs-unstable,
nur,
nur-unstable,
home-manager,
stylix,
nix-minecraft,
...
}:
let let
system = "x86_64-linux"; system = "x86_64-linux";
repoLocalPath = "/home/alisceon/.nixos_config";
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system;
config.allowUnfree = true; config.allowUnfree = true;
flake.setFlakeRegistry = true; flake.setFlakeRegistry = true;
overlays = [ nur.overlays.default ]; overlays = [ nur.overlays.default ];
}; };
pkgs-unstable = import nixpkgs-unstable { pkgs-unstable = import nixpkgs-unstable {
inherit system; inherit system;
config.allowUnfree = true; config.allowUnfree = true;
flake.setFlakeRegistry = true; flake.setFlakeRegistry = true;
overlays = [ nur-unstable.overlays.default ]; overlays = [ nur-unstable.overlays.default ];
}; };
sharedSpecialArgs = { sharedSpecialArgs = {
inherit pkgs-unstable; inherit inputs pkgs-unstable repoLocalPath;
inherit inputs; repoRoot = self;
}; };
sharedModules = [ sharedModules = [
./hosts/base.nix ./nixos/modules/base.nix
stylix.nixosModules.stylix stylix.nixosModules.stylix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
({ config, ...}: { ({ ... }: {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
inherit (config.networking) hostName; inherit pkgs pkgs-unstable repoLocalPath;
inherit pkgs pkgs-unstable; repoRoot = self;
}; # end extraSpecialArgs };
home-manager.backupFileExtension = "backup"; home-manager.backupFileExtension = "backup";
}) # end home manager })
]; # end sharedModules ];
mkHost = {
hostName,
nixosModules ? [ ],
hmModules ? [ ],
extraModules ? [ ],
}:
nixpkgs.lib.nixosSystem {
inherit system pkgs;
specialArgs = sharedSpecialArgs;
modules =
sharedModules
++ [ (./nixos/hosts + "/${hostName}/configuration.nix") ]
++ nixosModules
++ extraModules
++ [
{
home-manager.users.alisceon.imports =
[ ./home/profiles/base.nix ]
++ hmModules;
home-manager.users.root.imports = [
./home/users/root/default.nix
];
}
];
};
workstationModules = [
./nixos/modules/profiles/workstation.nix
./nixos/modules/wm/sway.nix
./nixos/modules/theme/stylix.nix
];
workstationHomeModules = [
./home/profiles/workstation.nix
./home/modules/wm/sway/default.nix
];
serverModules = [
./nixos/modules/profiles/server.nix
];
serverHomeModules = [
./home/profiles/server.nix
];
in in
{ {
nixosConfigurations = { nixosConfigurations = {
electra = nixpkgs.lib.nixosSystem { electra = mkHost {
inherit system; hostName = "electra";
inherit pkgs; nixosModules = workstationModules;
specialArgs = sharedSpecialArgs // {}; hmModules = workstationHomeModules ++ [
modules = sharedModules ++ [ ./home/hosts/alisceon/electra.nix
./hosts/hosts/electra.nix
./hosts/workstation.nix
./hosts/modules/wm/sway/default.nix
./hosts/modules/stylix.nix
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.users.alisceon.imports = [
./home/alisceon/base.nix
./home/alisceon/workstation.nix
./home/wm/sway.nix
./home/alisceon/hosts/electra.nix
]; ];
home-manager.users.root.imports = [ };
./home/root/base.nix
tower = mkHost {
hostName = "tower";
nixosModules = workstationModules;
hmModules = workstationHomeModules ++ [
./home/hosts/alisceon/tower.nix
]; ];
}) # end home-manager };
]; # end modules
}; # end electra tesla-nixos = mkHost {
tower = nixpkgs.lib.nixosSystem { hostName = "tesla-nixos";
inherit system; nixosModules = serverModules;
inherit pkgs; hmModules = serverHomeModules;
specialArgs = sharedSpecialArgs // {}; extraModules = [
modules = sharedModules ++ [
./hosts/hosts/tower.nix
./hosts/workstation.nix
./hosts/modules/wm/sway/default.nix
./hosts/modules/stylix.nix
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.users.alisceon.imports = [
./home/alisceon/base.nix
./home/alisceon/workstation.nix
./home/wm/sway.nix
./home/alisceon/hosts/tower.nix
];
home-manager.users.root.imports = [
./home/root/base.nix
];
}) # end home-manager
]; # end modules
}; # end tower
tesla-nixos = nixpkgs.lib.nixosSystem {
inherit system;
inherit pkgs;
specialArgs = sharedSpecialArgs // {};
modules = sharedModules ++ [
./hosts/server.nix
./hosts/hosts/tesla-nixos.nix
nix-minecraft.nixosModules.minecraft-servers nix-minecraft.nixosModules.minecraft-servers
{ nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; } { nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; }
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.users.alisceon.imports = [
./home/alisceon/base.nix
./home/alisceon/server.nix
]; ];
home-manager.users.root.imports = [ };
./home/root/base.nix
]; nuc = mkHost {
}) # end home-manager hostName = "nuc";
]; # end modules nixosModules = serverModules;
}; # end tesla-nixos hmModules = serverHomeModules;
nuc = nixpkgs.lib.nixosSystem { };
inherit system; };
inherit pkgs; };
specialArgs = sharedSpecialArgs // {}; }
modules = sharedModules ++ [
./hosts/server.nix
./hosts/hosts/nuc.nix
home-manager.nixosModules.home-manager
({ config, ...}: {
home-manager.users.alisceon.imports = [
./home/alisceon/base.nix
./home/alisceon/server.nix
];
home-manager.users.root.imports = [
./home/root/base.nix
];
}) # end home-manager
]; # end modules
}; # end tesla-nixos
}; # end nixos conf
}; # end "in"
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./default.nix
];
} # end file

View file

@ -1,21 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
imports = [
./modules/programs/direnv.nix
./modules/programs/git.nix
./modules/programs/ssh.nix
];
home.username = "alisceon";
home.homeDirectory = "/home/alisceon";
home.stateVersion = "24.05";
manual.manpages.enable = true;
# nixpkgs config
xdg.configFile."nixpkgs/config.nix".source = ../conf/config.nix;
# xonsh extras
xdg.configFile."xonsh/theo.py".source = ../conf/xonsh/theo.py;
xdg.configFile."xonsh/kittycatsay.py".source = ../conf/xonsh/kittycatsay.py;
# Ensure fish exists for the completer backend
home.packages = [ pkgs.fish ];
} # end file

View file

@ -1,17 +0,0 @@
{ pkgs, config, hostName, lib, ... }: {
programs.chromium = {
enable = true;
commandLineArgs = [
"--enable-features=TouchpadOverscrollHistoryNavigation,VaapiVideoDecoder"
];
extensions = [
{ id = "ddkjiahejlhfcafbddmgiahcphecmpfh"; } # ublock origin lite
{ id = "nngceckbapebfimnlniiiahkandclblb"; } # bitwarden
{ id = "mdjildafknihdffpkfmmpnpoiajfjnjd"; } # consent-o-matic
{ id = "mnjggcdmjocbbbhaepdhchncahnbgone"; } # sponsorblock
{ id = "ijcpiojgefnkmcadacmacogglhjdjphj"; } # shinigami eyes
{ id = "kbmfpngjjgdllneeigpgjifpgocmfgmb"; } # reddit enhancement suite
{ id = "einpaelgookohagofgnnkcfjbkkgepnp"; } # Random User-Agent
];
}; # end programs.chromium
} # end file

View file

@ -1,8 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
programs.direnv = {
enable = true;
silent = true;
nix-direnv.enable = true;
}; # end programs.direnv
} # end file

View file

@ -1,6 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
programs.discord = {
enable = true;
}; # end programs.discord
} # end file

View file

@ -1,21 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
programs = {
foot = {
enable = true;
server.enable = true;
settings = {
main = {
app-id = "footclient";
workers = 32;
};
bell = {
system = "no";
};
scrollback = {
lines = 100000;
};
};
}; # end foot
}; # end programs
} # end file

View file

@ -1,7 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
programs.nushell = {
enable = false;
configFile.source = ../conf/config.nu;
}; # end programs.nushell
} # end file

View file

@ -1,12 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
let
commands = import ../../lib/commands.nix { inherit pkgs; };
inherit (commands) term;
in
{
programs.rofi = {
enable = true;
package = pkgs.rofi-unwrapped;
terminal = term;
}; # end programs.rofi
} # end file

View file

@ -1,48 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
programs.vscode = {
enable = true;
package = pkgs.vscodium.fhsWithPackages (
ps: with ps; [
git
]
);
profiles = {
"default" = {
userSettings = {
"python.languageServer" = "None";
"python.pyrefly.displayTypeErrors" = "force-on";
"explorer.confirmDelete" = false;
"explorer.confirmDragAndDrop" = false;
"explorer.confirmPasteNative" = false;
"git.confirmSync" = false;
};
extensions = [
pkgs.vscode-extensions.ms-python.python
pkgs.vscode-extensions.ms-python.debugpy
pkgs.vscode-extensions.ms-vscode.cpptools
pkgs.vscode-extensions.jnoortheen.nix-ide
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "xonsh";
publisher = "jnoortheen";
version = "0.3.3";
hash = "sha256-EdAjVzqvbiSm/hL/SeJIlfY1QocpQPyzv4RV84t4bbg=";
}
{
name = "pyrefly";
publisher = "meta";
version = "0.52.0";
hash = "sha256-vheW8D2jy3aTpAR/jsgw8Khj1z08GGmRaeYvL+UOXSI=";
}
{
name = "chatgpt";
publisher = "openai";
version = "0.5.74";
hash = "sha256-yR9oR3w4AkoWaQDPwSaQtrKL6IcXANaMfFiw6K/b5o0=";
}
]; # end extensions
}; # end default
}; # end profiles
}; # end programs.vscode
} # end file

View file

@ -1,112 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
let
commands = import ../../lib/commands.nix { inherit pkgs; };
inherit (commands) uwsm term;
in
{
programs.waybar = {
enable = true;
systemd = {
enable = true;
target = "graphical-session.target";
};
settings = {
mainBar = {
layer = "bottom";
position = "top";
height = 28;
spacing = 0;
modules-left = [
"sway/workspaces"
];
modules-center = [
"sway/window"
];
modules-right = [
"tray"
"idle_inhibitor"
"network"
"bluetooth"
"pulseaudio"
"battery"
"sway/language"
"clock"
];
"sway/workspaces" = {
on-click = "activate";
sort-by-number = true;
format = "{value}";
};
"sway/window" = {
max-length = 64;
};
"tray" = {
icon-size = 24;
spacing = 8;
};
"idle_inhibitor" = {
format = "| {icon}";
start-activated = true;
format-icons = {
activated = "🫨";
deactivated = "😴";
};
};
"sway/language" = {
format = "| {flag}";
tooltip-format = "{long}";
};
"clock" = {
interval = 60;
tooltip = true;
format = "| {:%H:%M} ";
tooltip-format = "{:%Y-%m-%d}";
};
"battery" = {
interval = 60;
format = "| {icon}{capacity}%";
format-charging = "| {icon}{capacity}%";
format-plugged = "| {icon}🔌{capacity}%";
states = {
critical = 10;
warning = 20;
good = 100;
full = 100;
over = 101;
};
format-icons = [ "🪫" "🪫" "🔋" "🔋" "🔋"];
};
"network" = {
tooltip-format = "{ifname} = {ipaddr}/{cidr}";
format-wifi = "| ";
format-ethernet = "| ";
format-linked = "| 🔗";
format-disconnected = "| 💥";
interval = 15;
on-click = "${uwsm} ${term} -e nmtui";
};
"bluetooth" = {
format-connected = "| ";
format-on = "| ";
format-disabled = "";
format-no-controller = "";
interval = 15;
on-click = "${uwsm} ${term} -e bluetui";
};
"pulseaudio" = {
format = "| 🔊{volume}%";
format-muted = "| 🔈0%";
format-bluetooth = "| 🎧{volume}%";
on-click = "${uwsm} pavucontrol";
};
}; # end mainbar
}; # end settings
style = ''
button {
box-shadow: inset 0 -8px transparent;
border: none;
border-radius: 0;
}
''; # end style
}; # end programs.waybar
} # end file

View file

@ -1,66 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
services.espanso = {
enable = true;
waylandSupport = true;
configs = {
default = {
toggle_key = "OFF";
preserve_clipboard = true;
show_notifications = true;
keyboard_layout = { layout = "se"; };
};
};
matches = {
base = {
matches = [
{
trigger = ":ip ";
replace = "{{pubip}} ";
}
{
trigger = ":gw2hs ";
replace = "Full Homestead ^w^ ";
}
{
regex = ":format (?P<alphabet>\\S+) (?P<text>\\S+) ";
replace = "{{format_text}} ";
vars = [
{
name = "format_text";
type = "shell";
params = {
cmd = "${pkgs.python3}/bin/python3 /home/alisceon/.nixos_config/util/format_text.py $ESPANSO_ALPHABET $ESPANSO_TEXT";
};
}
];
}
{
regex = ";;(?P<emname>\\S+) ";
replace = "{{emoji}} ";
vars = [
{
name = "emoji";
type = "shell";
params = {
cmd = "${pkgs.python3}/bin/python3 /home/alisceon/.nixos_config/util/get_emoji.py $ESPANSO_EMNAME";
};
}
];
}
];
};
global_vars = {
global_vars = [
{
name = "pubip";
type = "shell";
params = {
cmd = "curl -s https://ifconfig.me";
};
}
];
};
}; # end matches
}; # end services.espanso
} # end file

View file

@ -1,6 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
services.syncthing = {
enable = true;
};
} # end file

View file

@ -1,5 +0,0 @@
{ pkgs, config, hostName, lib, ... }: {
imports = [
"./dconf.nix"
]
} # end file

View file

@ -1,3 +0,0 @@
{ ... }:
{
} # end file

View file

@ -1,9 +1,5 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
imports = [
../modules/services/swayidle.nix
];
wayland.windowManager.sway.config = { wayland.windowManager.sway.config = {
output = { output = {
eDP-1 = { eDP-1 = {
@ -16,7 +12,7 @@
}; };
}; };
workspaceOutputAssign = []; workspaceOutputAssign = [ ];
input."*" = { input."*" = {
xkb_layout = "se,us"; xkb_layout = "se,us";
@ -25,4 +21,4 @@
}; };
services.espanso.configs.default.keyboard_layout.layout = "se"; services.espanso.configs.default.keyboard_layout.layout = "se";
} # end file }

View file

@ -1,4 +1,4 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
wayland.windowManager.sway.config = { wayland.windowManager.sway.config = {
output = { output = {
@ -36,4 +36,4 @@
}; };
services.espanso.configs.default.keyboard_layout.layout = "us"; services.espanso.configs.default.keyboard_layout.layout = "us";
} # end file }

View file

@ -0,0 +1,18 @@
{ ... }:
{
programs.chromium = {
enable = true;
commandLineArgs = [
"--enable-features=TouchpadOverscrollHistoryNavigation,VaapiVideoDecoder"
];
extensions = [
{ id = "ddkjiahejlhfcafbddmgiahcphecmpfh"; }
{ id = "nngceckbapebfimnlniiiahkandclblb"; }
{ id = "mdjildafknihdffpkfmmpnpoiajfjnjd"; }
{ id = "mnjggcdmjocbbbhaepdhchncahnbgone"; }
{ id = "ijcpiojgefnkmcadacmacogglhjdjphj"; }
{ id = "kbmfpngjjgdllneeigpgjifpgocmfgmb"; }
{ id = "einpaelgookohagofgnnkcfjbkkgepnp"; }
];
};
}

View file

@ -0,0 +1,8 @@
{ ... }:
{
programs.direnv = {
enable = true;
silent = true;
nix-direnv.enable = true;
};
}

View file

@ -0,0 +1,4 @@
{ ... }:
{
programs.discord.enable = true;
}

View file

@ -1,11 +1,10 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
programs.fish = { programs.fish = {
enable = false; enable = false;
# Disable greeting
interactiveShellInit = '' interactiveShellInit = ''
set fish_greeting set fish_greeting
''; '';
preferAbbrs = true; preferAbbrs = true;
}; # end programs.fish };
} # end file }

View file

@ -0,0 +1,15 @@
{ ... }:
{
programs.foot = {
enable = true;
server.enable = true;
settings = {
main = {
app-id = "footclient";
workers = 32;
};
bell.system = "no";
scrollback.lines = 100000;
};
};
}

View file

@ -1,4 +1,4 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
programs.git = { programs.git = {
enable = true; enable = true;
@ -7,8 +7,8 @@
name = "alisceon"; name = "alisceon";
email = "alisceon@protonmail.com"; email = "alisceon@protonmail.com";
}; };
push = { autoSetupRemote = true; }; push.autoSetupRemote = true;
init.defaultBranch = "main"; init.defaultBranch = "main";
}; };
}; # end programs.git };
} # end file }

View file

@ -1,4 +1,4 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
programs.kitty = { programs.kitty = {
enable = true; enable = true;
@ -7,5 +7,5 @@
enable_audio_bell = false; enable_audio_bell = false;
window_padding_width = 2; window_padding_width = 2;
}; };
}; # end programs.kitty };
} # end file }

View file

@ -0,0 +1,7 @@
{ ... }:
{
programs.nushell = {
enable = false;
configFile.source = ../../conf/config.nu;
};
}

View file

@ -0,0 +1,12 @@
{ pkgs, ... }:
let
commands = import ../../../lib/commands.nix { inherit pkgs; };
inherit (commands) term;
in
{
programs.rofi = {
enable = true;
package = pkgs.rofi-unwrapped;
terminal = term;
};
}

View file

@ -1,4 +1,4 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
programs.ssh = { programs.ssh = {
enable = true; enable = true;
@ -38,9 +38,7 @@
hostname = "10.40.0.2"; hostname = "10.40.0.2";
user = "pi"; user = "pi";
}; };
"nuc" = { "nuc".hostname = "nuc.home.the.malice.zone";
hostname = "nuc.home.the.malice.zone";
};
"tsla-exporter-bridge" = { "tsla-exporter-bridge" = {
hostname = "alma02.lab.the.malice.zone"; hostname = "alma02.lab.the.malice.zone";
user = "root"; user = "root";
@ -49,9 +47,7 @@
hostname = "alma03.lab.the.malice.zone"; hostname = "alma03.lab.the.malice.zone";
user = "root"; user = "root";
}; };
"tsla-nixos" = { "tsla-nixos".hostname = "tesla-nixos.lab.the.malice.zone";
hostname = "tesla-nixos.lab.the.malice.zone";
};
"tsla-backups" = { "tsla-backups" = {
hostname = "backups.lab.the.malice.zone"; hostname = "backups.lab.the.malice.zone";
user = "root"; user = "root";
@ -70,6 +66,6 @@
addKeysToAgent = "yes"; addKeysToAgent = "yes";
hostname = "electra.home.the.malice.zone"; hostname = "electra.home.the.malice.zone";
}; };
}; # end matchBlocks };
}; # end programs.ssh };
} # end file }

View file

@ -1,10 +1,10 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
programs.swaylock = { programs.swaylock = {
enable = true; enable = true;
settings = { settings = {
ignore-empty-password = true; ignore-empty-password = true;
indicator-caps-lock = true; indicator-caps-lock = true;
}; # end settings };
}; # end programs.swaylock };
} # end file }

View file

@ -0,0 +1,44 @@
{ pkgs, ... }:
{
programs.vscode = {
enable = true;
package = pkgs.vscodium.fhsWithPackages (
ps: with ps; [ git ]
);
profiles.default = {
userSettings = {
"python.languageServer" = "None";
"python.pyrefly.displayTypeErrors" = "force-on";
"explorer.confirmDelete" = false;
"explorer.confirmDragAndDrop" = false;
"explorer.confirmPasteNative" = false;
"git.confirmSync" = false;
};
extensions = [
pkgs.vscode-extensions.ms-python.python
pkgs.vscode-extensions.ms-python.debugpy
pkgs.vscode-extensions.ms-vscode.cpptools
pkgs.vscode-extensions.jnoortheen.nix-ide
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "xonsh";
publisher = "jnoortheen";
version = "0.3.3";
hash = "sha256-EdAjVzqvbiSm/hL/SeJIlfY1QocpQPyzv4RV84t4bbg=";
}
{
name = "pyrefly";
publisher = "meta";
version = "0.52.0";
hash = "sha256-vheW8D2jy3aTpAR/jsgw8Khj1z08GGmRaeYvL+UOXSI=";
}
{
name = "chatgpt";
publisher = "openai";
version = "0.5.74";
hash = "sha256-yR9oR3w4AkoWaQDPwSaQtrKL6IcXANaMfFiw6K/b5o0=";
}
];
};
};
}

View file

@ -0,0 +1,104 @@
{ pkgs, ... }:
let
commands = import ../../../lib/commands.nix { inherit pkgs; };
inherit (commands) uwsm term;
in
{
programs.waybar = {
enable = true;
systemd = {
enable = true;
target = "graphical-session.target";
};
settings.mainBar = {
layer = "bottom";
position = "top";
height = 28;
spacing = 0;
modules-left = [ "sway/workspaces" ];
modules-center = [ "sway/window" ];
modules-right = [
"tray"
"idle_inhibitor"
"network"
"bluetooth"
"pulseaudio"
"battery"
"sway/language"
"clock"
];
"sway/workspaces" = {
on-click = "activate";
sort-by-number = true;
format = "{value}";
};
"sway/window".max-length = 64;
tray = {
icon-size = 24;
spacing = 8;
};
idle_inhibitor = {
format = "| {icon}";
start-activated = true;
format-icons = {
activated = "🫨";
deactivated = "😴";
};
};
"sway/language" = {
format = "| {flag}";
tooltip-format = "{long}";
};
clock = {
interval = 60;
tooltip = true;
format = "| {:%H:%M} ";
tooltip-format = "{:%Y-%m-%d}";
};
battery = {
interval = 60;
format = "| {icon}{capacity}%";
format-charging = "| {icon}{capacity}%";
format-plugged = "| {icon}🔌{capacity}%";
states = {
critical = 10;
warning = 20;
good = 100;
full = 100;
over = 101;
};
format-icons = [ "🪫" "🪫" "🔋" "🔋" "🔋" ];
};
network = {
tooltip-format = "{ifname} = {ipaddr}/{cidr}";
format-wifi = "| ";
format-ethernet = "| ";
format-linked = "| 🔗";
format-disconnected = "| 💥";
interval = 15;
on-click = "${uwsm} ${term} -e nmtui";
};
bluetooth = {
format-connected = "| ";
format-on = "| ";
format-disabled = "";
format-no-controller = "";
interval = 15;
on-click = "${uwsm} ${term} -e bluetui";
};
pulseaudio = {
format = "| 🔊{volume}%";
format-muted = "| 🔈0%";
format-bluetooth = "| 🎧{volume}%";
on-click = "${uwsm} pavucontrol";
};
};
style = ''
button {
box-shadow: inset 0 -8px transparent;
border: none;
border-radius: 0;
}
'';
};
}

View file

@ -0,0 +1,54 @@
{ pkgs, repoRoot, ... }:
{
services.espanso = {
enable = true;
waylandSupport = true;
configs.default = {
toggle_key = "OFF";
preserve_clipboard = true;
show_notifications = true;
keyboard_layout.layout = "se";
};
matches = {
base.matches = [
{
trigger = ":ip ";
replace = "{{pubip}} ";
}
{
trigger = ":gw2hs ";
replace = "Full Homestead ^w^ ";
}
{
regex = ":format (?P<alphabet>\\S+) (?P<text>\\S+) ";
replace = "{{format_text}} ";
vars = [
{
name = "format_text";
type = "shell";
params.cmd = "${pkgs.python3}/bin/python3 ${repoRoot}/util/format_text.py $ESPANSO_ALPHABET $ESPANSO_TEXT";
}
];
}
{
regex = ";;(?P<emname>\\S+) ";
replace = "{{emoji}} ";
vars = [
{
name = "emoji";
type = "shell";
params.cmd = "${pkgs.python3}/bin/python3 ${repoRoot}/util/get_emoji.py $ESPANSO_EMNAME";
}
];
}
];
global_vars.global_vars = [
{
name = "pubip";
type = "shell";
params.cmd = "curl -s https://ifconfig.me";
}
];
};
};
}

View file

@ -1,4 +1,4 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
services.gnome-keyring = { services.gnome-keyring = {
enable = true; enable = true;
@ -8,4 +8,4 @@
"secrets" "secrets"
]; ];
}; };
} # end file }

View file

@ -1,4 +1,4 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
services.mako = { services.mako = {
enable = true; enable = true;
@ -14,6 +14,6 @@
layer = "overlay"; layer = "overlay";
margin = 10; margin = 10;
markup = true; markup = true;
}; #end settings };
}; # end services.mako };
} # end file }

View file

@ -1,6 +1,6 @@
{ pkgs, config, hostName, lib, ... }: { pkgs, ... }:
let let
commands = import ../../lib/commands.nix { inherit pkgs; }; commands = import ../../../lib/commands.nix { inherit pkgs; };
inherit (commands) notify lock display; inherit (commands) notify lock display;
in in
{ {
@ -24,7 +24,7 @@ in
timeout = 600; timeout = 600;
command = "${pkgs.systemd}/bin/systemctl suspend"; command = "${pkgs.systemd}/bin/systemctl suspend";
} }
]; # end timeouts ];
events = [ events = [
{ {
event = "before-sleep"; event = "before-sleep";
@ -42,6 +42,6 @@ in
event = "unlock"; event = "unlock";
command = display "on"; command = display "on";
} }
]; # end events ];
}; # end services.swayidle };
} # end file }

View file

@ -0,0 +1,4 @@
{ ... }:
{
services.syncthing.enable = true;
}

View file

@ -1,4 +1,5 @@
{ pkgs, config, hostName, lib, ... }: { { pkgs, ... }:
{
dconf = { dconf = {
enable = true; enable = true;
settings = { settings = {
@ -10,9 +11,7 @@
picture-uri = "file:///home/alisceon/Pictures/system/bg.png"; picture-uri = "file:///home/alisceon/Pictures/system/bg.png";
picture-uri-dark = "file:///home/alisceon/Pictures/system/bg.png"; picture-uri-dark = "file:///home/alisceon/Pictures/system/bg.png";
}; };
"org/gnome/mutter" = { "org/gnome/mutter".auto-maximize = true;
auto-maximize = true;
};
"org/gnome/desktop/interface" = { "org/gnome/desktop/interface" = {
accent-color = "red"; accent-color = "red";
color-scheme = "prefer-dark"; color-scheme = "prefer-dark";
@ -31,7 +30,6 @@
}; };
"org/gnome/shell/keybindings" = { "org/gnome/shell/keybindings" = {
show-screenshot-ui = [ "<Shift><Super>s" ]; show-screenshot-ui = [ "<Shift><Super>s" ];
}; };
"org/gnome/desktop/wm/keybindings" = { "org/gnome/desktop/wm/keybindings" = {
switch-to-workspace-1 = [ "<Super>1" ]; switch-to-workspace-1 = [ "<Super>1" ];
@ -82,6 +80,6 @@
use-system-font = false; use-system-font = false;
use-theme-colors = true; use-theme-colors = true;
}; };
}; # end settings };
}; # end dconf };
} # end file }

View file

@ -0,0 +1,6 @@
{ ... }:
{
imports = [
./dconf.nix
];
}

View file

@ -1,39 +1,37 @@
{ pkgs, config, hostName, lib, ... }: { pkgs, repoRoot, ... }:
let let
# shared command aliases commands = import ../../../../lib/commands.nix { inherit pkgs; };
commands = import ../../../lib/commands.nix { inherit pkgs; };
inherit (commands) uwsm lock term notify nag dmenu espanso; inherit (commands) uwsm lock term notify nag dmenu espanso;
# keybinds
key_mod = "Mod4"; key_mod = "Mod4";
key_mod_misc = "Alt"; key_mod_misc = "Alt";
key_left = "Left"; key_left = "Left";
key_right = "Right"; key_right = "Right";
key_up = "Up"; key_up = "Up";
key_down = "Down"; key_down = "Down";
in
in
{ {
imports = [ imports = [
"./gtk.nix" ./gtk.nix
"./xdg.nix" ./xdg.nix
"../../modules/programs/foot.nix" ../../programs/foot.nix
"../../modules/programs/rofi.nix" ../../programs/rofi.nix
"../../modules/programs/swaylock.nix" ../../programs/swaylock.nix
"../../modules/programs/waybar.nix" ../../programs/waybar.nix
"../../modules/services/espanso.nix" ../../services/espanso.nix
"../../modules/services/gnome-keyring.nix" ../../services/gnome-keyring.nix
"../../modules/services/mako.nix" ../../services/mako.nix
"../../modules/services/swayidle.nix" ../../services/swayidle.nix
]; ];
wayland.windowManager.sway = { wayland.windowManager.sway = {
enable = true; enable = true;
wrapperFeatures.gtk = true; wrapperFeatures.gtk = true;
config = { config = {
modifier = "${key_mod}"; modifier = key_mod;
startup = [ startup = [
{ command = "systemctl --user start libinput-gestures"; } { command = "systemctl --user start libinput-gestures"; }
{ command = ''${uwsm} swaybg -m fill -i /home/alisceon/Pictures/system/bg.png'';} { command = "${uwsm} swaybg -m fill -i /home/alisceon/Pictures/system/bg.png"; }
]; ];
bars = [ ]; bars = [ ];
input = { input = {
@ -58,12 +56,10 @@
xkb_layout = "se,us"; xkb_layout = "se,us";
xkb_options = "grp:win_space_toggle"; xkb_options = "grp:win_space_toggle";
}; };
}; # end input };
keybindings = { keybindings = {
# Outputs "F13" = "exec ${notify} -t 2000 \"$(${pkgs.xonsh}/bin/xonsh ${repoRoot}/util/toggle_mon.xsh)\"";
"F13" = ''exec ${notify} -t 2000 "$(xonsh ~/.nixos_config/util/toggle_mon.xsh)"'';
# Workspaces
"${key_mod}+f" = "fullscreen"; "${key_mod}+f" = "fullscreen";
"${key_mod}+Shift+f" = "floating toggle"; "${key_mod}+Shift+f" = "floating toggle";
@ -100,7 +96,6 @@
"${key_mod}+Ctrl+9" = "move container to workspace number 9"; "${key_mod}+Ctrl+9" = "move container to workspace number 9";
"${key_mod}+Ctrl+0" = "move container to scratchpad"; "${key_mod}+Ctrl+0" = "move container to scratchpad";
# Layout
"${key_mod}+b" = "splith"; "${key_mod}+b" = "splith";
"${key_mod}+v" = "splitv"; "${key_mod}+v" = "splitv";
@ -108,19 +103,16 @@
"${key_mod}+w" = "layout tabbed"; "${key_mod}+w" = "layout tabbed";
"${key_mod}+e" = "layout toggle split"; "${key_mod}+e" = "layout toggle split";
# Focus
"${key_mod}+Ctrl+${key_left}" = "focus left"; "${key_mod}+Ctrl+${key_left}" = "focus left";
"${key_mod}+Ctrl+${key_right}" = "focus right"; "${key_mod}+Ctrl+${key_right}" = "focus right";
"${key_mod}+Ctrl+${key_down}" = "focus down"; "${key_mod}+Ctrl+${key_down}" = "focus down";
"${key_mod}+Ctrl+${key_up}" = "focus up"; "${key_mod}+Ctrl+${key_up}" = "focus up";
# Move
"${key_mod}+Shift+${key_left}" = "move left"; "${key_mod}+Shift+${key_left}" = "move left";
"${key_mod}+Shift+${key_down}" = "move down"; "${key_mod}+Shift+${key_down}" = "move down";
"${key_mod}+Shift+${key_up}" = "move up"; "${key_mod}+Shift+${key_up}" = "move up";
"${key_mod}+Shift+${key_right}" = "move right"; "${key_mod}+Shift+${key_right}" = "move right";
# Sparkly alt-tab
"${key_mod}+Tab" = "focus right"; "${key_mod}+Tab" = "focus right";
"${key_mod}+Shift+Tab" = "focus left"; "${key_mod}+Shift+Tab" = "focus left";
"${key_mod}+Ctrl+Tab" = "move right"; "${key_mod}+Ctrl+Tab" = "move right";
@ -128,55 +120,49 @@
"${key_mod}+${key_mod_misc}+Tab" = "workspace next"; "${key_mod}+${key_mod_misc}+Tab" = "workspace next";
"${key_mod}+${key_mod_misc}+Shift+Tab" = "workspace prev"; "${key_mod}+${key_mod_misc}+Shift+Tab" = "workspace prev";
# System "Mod4+space" = "exec ${notify} -t 2000 \"$(${pkgs.xonsh}/bin/xonsh ${repoRoot}/util/get_xkb.xsh)\"";
"Mod4+space" = ''exec ${notify} -t 2000 "$(xonsh ~/.nixos_config/util/get_xkb.xsh)"'';
"${key_mod}+Shift+r" = "reload"; "${key_mod}+Shift+r" = "reload";
"${key_mod}+Ctrl+r" = "restart"; "${key_mod}+Ctrl+r" = "restart";
"${key_mod}+Shift+Backspace" = "exec ${nag} -m 'TuneD profiles:' -Z 'Performance' 'tuned-adm profile accelerator-performance' -Z 'Balanced' 'tuned-adm profile balanced' -Z 'Power Save' 'tuned-adm profile powersave'"; "${key_mod}+Shift+Backspace" = "exec ${nag} -m 'TuneD profiles:' -Z 'Performance' 'tuned-adm profile accelerator-performance' -Z 'Balanced' 'tuned-adm profile balanced' -Z 'Power Save' 'tuned-adm profile powersave'";
"${key_mod}+Shift+q" = "kill"; "${key_mod}+Shift+q" = "kill";
"Alt+F4" = "kill"; "Alt+F4" = "kill";
# Locking and idle
"${key_mod}+L" = "exec ${lock}"; "${key_mod}+L" = "exec ${lock}";
"${key_mod}+Escape" = "exec ${nag} -m 'Shutdown options:' -Z 'Power Off' 'systemctl poweroff' -Z 'Reboot' 'systemctl reboot' -Z 'Logout' 'swaymsg exit'"; "${key_mod}+Escape" = "exec ${nag} -m 'Shutdown options:' -Z 'Power Off' 'systemctl poweroff' -Z 'Reboot' 'systemctl reboot' -Z 'Logout' 'swaymsg exit'";
# Apps "${key_mod}+Return" = "exec ${uwsm} ${term}";
"${key_mod}+Return" = ''exec "${uwsm} ${term}"''; "${key_mod}+d" = "exec ${uwsm} ${dmenu} -show drun";
"${key_mod}+d" = ''exec "${uwsm} ${dmenu} -show drun"''; "${key_mod}+s" = "exec ${uwsm} ${espanso} search";
"${key_mod}+s" = ''exec "${uwsm} ${espanso} search"''; "${key_mod}+Shift+e" = "exec ${uwsm} ${espanso} toggle";
"${key_mod}+Shift+e" = ''exec "${uwsm} ${espanso} toggle"'';
# Screenshot region
"${key_mod}+Shift+s" = "exec grimshot savecopy area"; "${key_mod}+Shift+s" = "exec grimshot savecopy area";
"${key_mod}+Ctrl+s" = "exec grimshot savecopy output"; "${key_mod}+Ctrl+s" = "exec grimshot savecopy output";
# media keys "XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +3%";
"XF86AudioRaiseVolume" = "exec 'pactl set-sink-volume @DEFAULT_SINK@ +3%'"; "XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -3%";
"XF86AudioLowerVolume" = "exec 'pactl set-sink-volume @DEFAULT_SINK@ -3%'"; "XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle";
"XF86AudioMute" = "exec 'pactl set-sink-mute @DEFAULT_SINK@ toggle'"; "XF86AudioPlay" = "exec playerctl play-pause";
"XF86AudioPlay" = "exec 'playerctl play-pause'"; "${key_mod}+XF86AudioPlay" = "exec ${notify} -t 2000 \"$(${pkgs.xonsh}/bin/xonsh ${repoRoot}/util/swap_sound_device.xsh)\"";
"${key_mod}+XF86AudioPlay" = ''exec ${notify} -t 2000 "$(xonsh ~/.nixos_config/util/swap_sound_device.xsh)"'';
"XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 9"; "XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 9";
"XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 3"; "XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 3";
}; # end keybindings };
window = { window = {
titlebar = false; titlebar = false;
commands = [ commands = [
{ criteria = { all = true; }; command = "inhibit_idle fullscreen"; } { criteria = { all = true; }; command = "inhibit_idle fullscreen"; }
]; ];
}; # end window
assigns = {
"1" = [{app_id = "chromium";}];
"2" = [{class = "steam";}];
"3" = [];
"4" = [{class = "VSCodium";}];
"5" = [{app_id = "obsidian";}];
"6" = [];
"7" = [];
"8" = [{app_id = "discord";}];
"9" = [{app_id = "signal";}];
}; };
}; # end config assigns = {
}; # end wayland.windowManager.sway "1" = [ { app_id = "chromium"; } ];
} # end file "2" = [ { class = "steam"; } ];
"3" = [ ];
"4" = [ { class = "VSCodium"; } ];
"5" = [ { app_id = "obsidian"; } ];
"6" = [ ];
"7" = [ ];
"8" = [ { app_id = "discord"; } ];
"9" = [ { app_id = "signal"; } ];
};
};
};
}

View file

@ -1,4 +1,4 @@
{ pkgs, config, hostName, lib, ... }: { ... }:
{ {
gtk = { gtk = {
enable = true; enable = true;
@ -6,4 +6,4 @@
gtk3.enable = true; gtk3.enable = true;
gtk4.enable = true; gtk4.enable = true;
}; };
} # end file }

View file

@ -1,6 +1,6 @@
{ pkgs, config, hostName, lib, ... }: { pkgs, ... }:
let let
commands = import ../../../lib/commands.nix { inherit pkgs; }; commands = import ../../../../lib/commands.nix { inherit pkgs; };
inherit (commands) swaymsg lock; inherit (commands) swaymsg lock;
in in
{ {
@ -44,7 +44,7 @@ in
"application/x-web-app-manifest+json" = [ "${pkgs.chromium}/share/applications/chromium.desktop" ]; "application/x-web-app-manifest+json" = [ "${pkgs.chromium}/share/applications/chromium.desktop" ];
"application/xml-dtd" = [ "${pkgs.chromium}/share/applications/chromium.desktop" ]; "application/xml-dtd" = [ "${pkgs.chromium}/share/applications/chromium.desktop" ];
"image/*" = [ "${pkgs.loupe}/share/applications/org.gnome.Loupe.desktop.desktop" ]; "image/*" = [ "${pkgs.loupe}/share/applications/org.gnome.Loupe.desktop" ];
}; };
}; };
}; };
@ -53,4 +53,4 @@ in
GNOME_DESKTOP_SESSION_ID = "999"; GNOME_DESKTOP_SESSION_ID = "999";
SHELL_THICCNESS = "LOW"; SHELL_THICCNESS = "LOW";
}; };
} # end file }

6
home/profiles/base.nix Normal file
View file

@ -0,0 +1,6 @@
{ ... }:
{
imports = [
../users/alisceon/default.nix
];
}

3
home/profiles/server.nix Normal file
View file

@ -0,0 +1,3 @@
{ ... }:
{
}

View file

@ -1,18 +1,15 @@
{ pkgs, config, hostName, lib, ... }: { { pkgs, lib, repoRoot, ... }:
{
imports = [ imports = [
./modules/programs/chromium.nix ../modules/programs/chromium.nix
./modules/programs/discord.nix ../modules/programs/discord.nix
./modules/programs/vscode.nix ../modules/programs/vscode.nix
./modules/services/syncthing.nix ../modules/services/syncthing.nix
]; ];
stylix.enableReleaseChecks = false; stylix.enableReleaseChecks = false;
# obsidian special case
# programs.obsidian.enable = true;
# overide broken config
xdg.configFile."obsidian/obsidian.json".source = lib.mkForce ../conf/obsidian.json;
# nixpkgs config xdg.configFile."obsidian/obsidian.json".source = lib.mkForce ../conf/obsidian.json;
xdg.configFile."nixpkgs/config.nix".source = ../conf/config.nix; xdg.configFile."nixpkgs/config.nix".source = ../conf/config.nix;
xdg = { xdg = {
@ -33,9 +30,9 @@
chromium-dailies = { chromium-dailies = {
name = "Chromium Dailies"; name = "Chromium Dailies";
genericName = "Web Browser (with dailies)"; genericName = "Web Browser (with dailies)";
exec = "xonsh /home/alisceon/.nixos_config/util/open_dailies.xsh"; exec = "${pkgs.xonsh}/bin/xonsh ${repoRoot}/util/open_dailies.xsh";
terminal = false; terminal = false;
}; };
}; };
}; };
} # end file }

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./default.nix
];
} # end file

View file

@ -1,12 +0,0 @@
{ pkgs, config, hostName, lib, ... }:
{
home.username = "root";
home.homeDirectory = "/root";
home.stateVersion = "24.05";
programs = {
git = {
enable = true;
extraConfig.safe.directory = "/home/alisceon/.nixos_config";
}; # end git
}; # end programs
} # end file

View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
imports = [
../../modules/programs/direnv.nix
../../modules/programs/git.nix
../../modules/programs/ssh.nix
];
home.username = "alisceon";
home.homeDirectory = "/home/alisceon";
home.stateVersion = "24.05";
manual.manpages.enable = true;
xdg.configFile."nixpkgs/config.nix".source = ../../conf/config.nix;
xdg.configFile."xonsh/theo.py".source = ../../conf/xonsh/theo.py;
xdg.configFile."xonsh/kittycatsay.py".source = ../../conf/xonsh/kittycatsay.py;
# Ensure fish exists for the completer backend.
home.packages = [ pkgs.fish ];
}

View file

@ -0,0 +1,11 @@
{ repoLocalPath, ... }:
{
home.username = "root";
home.homeDirectory = "/root";
home.stateVersion = "24.05";
programs.git = {
enable = true;
extraConfig.safe.directory = repoLocalPath;
};
}

View file

@ -1,18 +0,0 @@
{ ... }:
{
imports = [
../alisceon/modules/wm/sway/default.nix
../alisceon/modules/wm/sway/gtk.nix
../alisceon/modules/wm/sway/xdg.nix
../alisceon/modules/programs/foot.nix
../alisceon/modules/programs/kitty.nix
../alisceon/modules/programs/rofi.nix
../alisceon/modules/programs/swaylock.nix
../alisceon/modules/programs/waybar.nix
../alisceon/modules/services/espanso.nix
../alisceon/modules/services/gnome-keyring.nix
../alisceon/modules/services/mako.nix
];
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./default.nix
];
} # end file

View file

@ -1,20 +0,0 @@
{ config, pkgs, ... }:
{
system.autoUpgrade = {
allowReboot = true;
}; # end system.autoUpgrade
services = {
openssh = {
enable = true;
permitRootLogin = "no";
}; # end openssh
}; # end services
environment = {
systemPackages = with pkgs; [
devenv
direnv
]; # end systemPackages
}; # end environment
} # end file

View file

@ -1,108 +0,0 @@
{ config, pkgs, lib, hostName, ... }:
{
environment.systemPackages = with pkgs; [
pavucontrol
libinput
libinput-gestures
libnotify
wmctrl
playerctl
# MIME utilities
xdg-utils
shared-mime-info
# GNOME utilities
libsecret # Keyring backend
gnome-text-editor
loupe
evince
seahorse
nautilus
];
# enable Sway window manager
programs = {
sway = {
enable = true;
wrapperFeatures.base = true;
wrapperFeatures.gtk = true;
extraOptions = [
"--unsupported-gpu"
];
extraPackages = with pkgs; [
swayidle # idle management
swaylock # screen locker
swaybg # wallpaper setting tool
grim # screenshot tool
slurp # selection tool for screenshots
wl-clipboard # clipboard support (mostly for grim/slurp)
pulseaudio # pulseaudio support
sway-contrib.grimshot # screenshot tool
foot # fast and lightweight terminal emulator
kitty # sparkly terminal emulator
dotool # tool to send keyboard/mouse input to wayland apps
mako # notification system developed by swaywm maintainer
espanso-wayland # text expander
];
}; # end sway
uwsm = { # responsible for creating xdg-portal and systemd insteraction for sway
enable = true;
waylandCompositors = {
sway = {
prettyName = "Sway";
comment = "Sway compositor managed by UWSM";
binPath = "${pkgs.sway}/bin/sway";
extraArgs = [ "--unsupported-gpu" ];
};
};
}; # end uwsm
light = {
enable = true;
}; # end light
dconf.enable = true;
seahorse.enable = true;
}; # end programs
security = {
polkit.enable = true;
pam.services = {
greetd.enableGnomeKeyring = true;
#greetd-password.enableGnomeKeyring = true;
login.enableGnomeKeyring = true;
swaylock = {
text = ''
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth sufficient pam_fprintd.so
auth include login
'';
}; # end swaylock
}; # end pam.services
}; # end security
services = {
greetd = {
enable = true;
settings = {
initial_session = {
command = "uwsm start -- sway-uwsm.desktop";
user = "alisceon";
}; # end initial_session
default_session = {
command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd 'uwsm start -- sway-uwsm.desktop' --remember --asterisks''";
user = "greeter";
}; # end initial_session
}; # end settings
}; # end greetd
logind = {
settings = {
Login = {
HandleLidSwitch = "suspend";
HandleLidSwitchExternalPower = "suspend";
};
};
}; # end logind
dbus.packages = [ pkgs.seahorse pkgs.gnome-keyring pkgs.gcr ];
gnome.gcr-ssh-agent.enable = true; # SSH key management via gnome keyring
gvfs.enable = true; # some support for nautilus operations
}; # end services
users.users.alisceon.extraGroups = [ "video" "input" ]; # input group required for libinput-gestures
}

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./common/default.nix
];
} # end file

View file

@ -1,43 +0,0 @@
{ config, pkgs, ... }:
{
imports =
[ ./hardware-configuration.nix ];
networking.hostName = "electra";
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
initrd = {
enable = true;
luks.devices."luks-654125f4-7b26-408d-b1b5-d31648ec8770".device = "/dev/disk/by-uuid/654125f4-7b26-408d-b1b5-d31648ec8770";
verbose = false;
};
#resumeDevice = "/dev/disk/by-uuid/c49249b9-0d68-44af-97e0-e399c8409408";
}; # end boot
environment.systemPackages = [
pkgs.bluetui
pkgs.wakeonlan
];
systemd.services = {
fprintd = {
wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "simple";
};
}; # end systemd.services
services = {
fprintd = {
enable = true;
tod.enable = true;
tod.driver = pkgs.libfprint-2-tod1-goodix;
}; # end fprintd
tuned = {
enable = true;
}; # end tuned
}; # end services
hardware = {
bluetooth = {
enable = true;
powerOnBoot = true;
}; # end bluetooth
}; # end hardware
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
../electra/configuration.nix
];
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
../nuc/configuration.nix
];
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
../tesla-nixos/configuration.nix
];
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
../tower/configuration.nix
];
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
../common/stylix.nix
];
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
../../../common/wm/gnome.nix
];
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
../../../common/wm/sway.nix
];
} # end file

View file

@ -1,65 +0,0 @@
{ config, pkgs, lib, ... }:
{
environment.systemPackages = with pkgs; [
wakeonlan
];
security.sudo.wheelNeedsPassword = false;
imports =
[ ./hardware-configuration.nix ];
networking.hostName = "nuc";
boot.initrd.enable = true;
boot.loader = {
systemd-boot = {
enable = true;
}; # end loader.systemd-boot
}; # end boot
virtualisation = {
oci-containers = {
containers = {
}; # end containers
}; # end oci-containers
}; # end virtualisation
networking.firewall.allowedTCPPorts = [
53
80
443
];
networking.firewall.allowedUDPPorts = [
53
];
systemd = {
timers = {
"autowin" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "Wed *-*-21..28 02:00:00";
Unit = "autowin.service";
};
};
}; # end timers
services = {
"autowin" = {
script = ''
${pkgs.python3Packages.python}/bin/python /home/alisceon/.nixos_config/util/wol_man.py autowin
'';
serviceConfig = {
Type = "oneshot";
TimeoutStartSec = "3600";
User = "alisceon";
};
}; # end "hello-world"
}; # end services
}; # end systemd
virtualisation.oci-containers.containers = {
isponsorblocktv = {
image = "ghcr.io/dmunozv04/isponsorblocktv:latest";
autoStart = true;
volumes = [
"/home/alisceon/isponsorblocktv:/app/data"
];
}; # end isponsorblocktv
};
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./common/server.nix
];
} # end file

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./common/workstation.nix
];
} # end file

View file

@ -0,0 +1,40 @@
{ pkgs, ... }:
{
imports = [ ./hardware-configuration.nix ];
networking.hostName = "electra";
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
initrd = {
enable = true;
luks.devices."luks-654125f4-7b26-408d-b1b5-d31648ec8770".device = "/dev/disk/by-uuid/654125f4-7b26-408d-b1b5-d31648ec8770";
verbose = false;
};
};
environment.systemPackages = [
pkgs.bluetui
pkgs.wakeonlan
];
systemd.services.fprintd = {
wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "simple";
};
services = {
fprintd = {
enable = true;
tod.enable = true;
tod.driver = pkgs.libfprint-2-tod1-goodix;
};
tuned.enable = true;
};
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
};
}

View file

@ -0,0 +1,48 @@
{ pkgs, repoRoot, ... }:
{
imports = [ ./hardware-configuration.nix ];
environment.systemPackages = with pkgs; [
wakeonlan
];
security.sudo.wheelNeedsPassword = false;
networking.hostName = "nuc";
boot.initrd.enable = true;
boot.loader.systemd-boot.enable = true;
networking.firewall.allowedTCPPorts = [
53
80
443
];
networking.firewall.allowedUDPPorts = [ 53 ];
systemd.timers.autowin = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "Wed *-*-21..28 02:00:00";
Unit = "autowin.service";
};
};
systemd.services.autowin = {
script = ''
${pkgs.python3Packages.python}/bin/python ${repoRoot}/util/wol_man.py autowin
'';
serviceConfig = {
Type = "oneshot";
TimeoutStartSec = "3600";
User = "alisceon";
};
};
virtualisation.oci-containers.containers.isponsorblocktv = {
image = "ghcr.io/dmunozv04/isponsorblocktv:latest";
autoStart = true;
volumes = [
"/home/alisceon/isponsorblocktv:/app/data"
];
};
}

View file

@ -1,5 +1,4 @@
{ config, pkgs, lib, ... }: { pkgs, ... }:
let let
modpack = pkgs.fetchPackwizModpack { modpack = pkgs.fetchPackwizModpack {
url = "https://git.malice.zone/alisceon/tfcpack/-/raw/main/pack.toml"; url = "https://git.malice.zone/alisceon/tfcpack/-/raw/main/pack.toml";
@ -7,19 +6,18 @@ let
}; };
in in
{ {
imports = [ ./hardware-configuration.nix ];
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
imports =
[ ./hardware-configuration.nix ];
networking.hostName = "tesla-nixos"; networking.hostName = "tesla-nixos";
boot.initrd.enable = true;
boot.loader = { boot = {
systemd-boot = { initrd.enable = true;
enable = true; loader.systemd-boot.enable = true;
}; # end loader.systemd-boot };
}; # end boot
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [ tmux ];
tmux
]; # end environment.systemPackages
virtualisation.podman.dockerCompat = false; virtualisation.podman.dockerCompat = false;
virtualisation.docker = { virtualisation.docker = {
enable = true; enable = true;
@ -28,19 +26,17 @@ in
dates = "daily"; dates = "daily";
}; };
daemon.settings = { daemon.settings = {
"runtimes" = { runtimes.crun.path = "${pkgs.crun}/bin/crun";
crun = { path = "${pkgs.crun}/bin/crun"; }; default-runtime = "crun";
};
"default-runtime" = "crun";
}; };
}; };
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
8100 #bluemap 8100
]; ];
services.minecraft-servers = { services.minecraft-servers = {
enable = true; enable = true;
#managementSystem.systemd-socket.enable = true;
eula = true; eula = true;
openFirewall = true; openFirewall = true;
servers.tfcpack = { servers.tfcpack = {
@ -48,12 +44,12 @@ in
package = pkgs.neoforgeServers.neoforge-1_21_1-21_1_219; package = pkgs.neoforgeServers.neoforge-1_21_1-21_1_219;
autoStart = true; autoStart = true;
serverProperties = { serverProperties = {
"motd" = "TFC Pack - Tesla Nixos"; motd = "TFC Pack - Tesla Nixos";
"max-players" = "20"; max-players = "20";
"view-distance" = "32"; view-distance = "32";
"level-type" = "tfc\:overworld"; level-type = "tfc\\:overworld";
"spawn-protection" = "0"; spawn-protection = "0";
"max-tick-time" = "-1"; max-tick-time = "-1";
}; };
jvmOpts = [ jvmOpts = [
"-Xmx24G" "-Xmx24G"
@ -61,14 +57,10 @@ in
"-XX:+UseZGC" "-XX:+UseZGC"
"-XX:+ZGenerational" "-XX:+ZGenerational"
]; ];
symlinks = { symlinks.mods = "${modpack}/mods";
"mods" = "${modpack}/mods"; files."config/bluemap/core.conf" = "${modpack}/config/bluemap/core.conf";
}; # end symlinks };
files = { };
"config/bluemap/core.conf" = "${modpack}/config/bluemap/core.conf";
};# end symlinks
}; # end servers.tfcpack
}; # end services.minecraft-servers
users.users.gitlab-runner = { users.users.gitlab-runner = {
isNormalUser = true; isNormalUser = true;
@ -78,9 +70,11 @@ in
extraGroups = [ "docker" "wheel" ]; extraGroups = [ "docker" "wheel" ];
group = "gitlab-runner"; group = "gitlab-runner";
}; };
users.groups.gitlab-runner = { }; users.groups.gitlab-runner = { };
users.groups.docker = { }; users.groups.docker = { };
systemd.services."enable-linger-gitlab-runner" = {
systemd.services.enable-linger-gitlab-runner = {
description = "Enable linger for gitlab-runner"; description = "Enable linger for gitlab-runner";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
@ -90,11 +84,9 @@ in
}; };
}; };
# GitLab Runner configured to use the local Docker daemon
services.gitlab-runner = { services.gitlab-runner = {
enable = true; enable = true;
services = { services.ci-nspawn-docker = {
ci-nspawn-docker = {
authenticationTokenConfigFile = "/var/lib/gitlab-runner/token-env"; authenticationTokenConfigFile = "/var/lib/gitlab-runner/token-env";
executor = "docker"; executor = "docker";
dockerImage = "alpine:3"; dockerImage = "alpine:3";
@ -104,6 +96,4 @@ in
]; ];
}; };
}; };
}; }
} # end file

View file

@ -1,18 +1,15 @@
{ config, pkgs, pkgs-unstable, ... }: { config, pkgs, ... }:
{ {
imports = imports = [ ./hardware-configuration.nix ];
[ ./hardware-configuration.nix ];
networking = { networking = {
hostName = "tower"; hostName = "tower";
interfaces.enp10s0.wakeOnLan = { interfaces.enp10s0.wakeOnLan.enable = true;
enable = true; firewall.allowedUDPPorts = [ 9 ];
};
firewall = {
allowedUDPPorts = [ 9 ];
};
}; };
time.hardwareClockInLocalTime = true; time.hardwareClockInLocalTime = true;
boot = { boot = {
initrd.enable = true; initrd.enable = true;
loader = { loader = {
@ -25,20 +22,21 @@
efiDeviceHandle = "FS0"; efiDeviceHandle = "FS0";
sortKey = "1"; sortKey = "1";
}; };
}; #end windows };
edk2-uefi-shell = { edk2-uefi-shell = {
enable = true; enable = true;
sortKey = "0"; sortKey = "0";
}; # end edk2-uefi-shell };
}; # end systemd-boot };
}; # end loader };
kernelPackages = pkgs.linuxPackages_6_18; kernelPackages = pkgs.linuxPackages_6_18;
}; # end boot };
hardware = { hardware = {
graphics.enable = true; graphics = {
graphics.extraPackages = with pkgs; [ enable = true;
nvidia-vaapi-driver extraPackages = with pkgs; [ nvidia-vaapi-driver ];
]; # end graphics.extraPackages };
nvidia = { nvidia = {
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = false; powerManagement.enable = false;
@ -46,17 +44,19 @@
open = true; open = true;
nvidiaSettings = true; nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
}; # end nvidia };
}; # end hardware };
services = { services = {
xserver.videoDrivers = [ "nvidia" ]; xserver.videoDrivers = [ "nvidia" ];
openssh.enable = true; openssh.enable = true;
}; # end services };
environment = { environment = {
variables = { variables = {
GBM_BACKEND = "nvidia-drm"; GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia"; __GLX_VENDOR_LIBRARY_NAME = "nvidia";
MOZ_DISABLE_RDD_SANDBOX= "1" ; MOZ_DISABLE_RDD_SANDBOX = "1";
LIBVA_DRIVER_NAME = "nvidia"; LIBVA_DRIVER_NAME = "nvidia";
}; };
systemPackages = [ systemPackages = [
@ -66,6 +66,7 @@
pkgs.gamescope pkgs.gamescope
]; ];
}; };
programs = { programs = {
gamemode.enable = true; gamemode.enable = true;
steam = { steam = {
@ -73,10 +74,8 @@
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
extraCompatPackages = [ pkgs.proton-ge-bin ]; extraCompatPackages = [ pkgs.proton-ge-bin ];
package = pkgs.steam.override { package = pkgs.steam.override {
extraPkgs = (pkgs: [ extraPkgs = _pkgs: [ pkgs.gamemode ];
pkgs.gamemode
]);
}; };
}; };
}; };
} # end file }

View file

@ -1,59 +1,62 @@
{ config, pkgs, pkgs-unstable, lib, ... }: { { config, pkgs, lib, repoLocalPath, ... }:
{
boot = { boot = {
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
kernel.sysctl = { kernel.sysctl = {
"net.ipv4.ip_unprivileged_port_start" = 0; "net.ipv4.ip_unprivileged_port_start" = 0;
}; };
initrd = { initrd = {
network ={ network = {
ssh.shell = pkgs.bash; ssh.shell = pkgs.bash;
}; };
}; };
}; };
security.sudo-rs.enable = true; security.sudo-rs.enable = true;
system.stateVersion = "24.05"; system.stateVersion = "24.05";
system.autoUpgrade = { system.autoUpgrade = {
enable = true; enable = true;
persistent = true; persistent = true;
flake = "/home/alisceon/.nixos_config"; flake = repoLocalPath;
flags = [ flags = [
"--print-build-logs" "--print-build-logs"
"--no-write-lock-file" "--no-write-lock-file"
]; ];
dates = "daily"; dates = "daily";
}; # end system.autoUpgrade };
nix = { nix = {
settings = { settings = {
experimental-features = [ "nix-command" "flakes" ]; experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true; auto-optimise-store = true;
trusted-users = [ "root" "alisceon" ]; trusted-users = [ "root" "alisceon" ];
}; # end settings };
gc = { gc = {
automatic = true; automatic = true;
persistent = true; persistent = true;
dates = "daily"; dates = "daily";
options = "--delete-older-than 7d"; options = "--delete-older-than 7d";
}; # end gc };
registry = { registry = {
templates.to = { templates.to = {
type = "git"; type = "git";
url = "git+ssh://git@git.malice.zone/alisceon/devenv_templates.git"; url = "git+ssh://git@git.malice.zone/alisceon/devenv_templates.git";
}; # end templates.to };
nixpkgs.to = { nixpkgs.to = {
type = "github"; type = "github";
owner = "NixOS"; owner = "NixOS";
repo = "nixpkgs"; repo = "nixpkgs";
ref = "nixos-unstable"; ref = "nixos-unstable";
}; # end nixpkgs.to };
nixpkgs-stable.to = { nixpkgs-stable.to = {
type = "github"; type = "github";
owner = "NixOS"; owner = "NixOS";
repo = "nixpkgs"; repo = "nixpkgs";
ref = "nixos-25.05"; ref = "nixos-25.05";
}; # end nixpkgs.to };
}; #end registry };
}; #end nix };
console.keyMap = "sv-latin1"; console.keyMap = "sv-latin1";
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
@ -73,43 +76,34 @@
environment = { environment = {
systemPackages = with pkgs; [ systemPackages = with pkgs; [
# Libraries
libressl libressl
# CLI tools
git git
wget wget
curl curl
btop # system monitor btop
ripgrep # grep replacement ripgrep
fd # find replacement fd
nh # nix helper nh
jq # JSON processor jq
ncdu ncdu
pciutils pciutils
usbutils usbutils
tree tree
fzf # fuzzy finder fzf
psmisc psmisc
pv pv
file file
nix-tree nix-tree
unzip unzip
lsd lsd
# Shells
bash bash
nushell nushell
fish fish
powershell powershell
# Languages
python3 python3
python3Packages.python-lsp-server python3Packages.python-lsp-server
# Virtualization
podman podman
]; # end systemPackages ];
shells = with pkgs; [ shells = with pkgs; [
bash bash
@ -118,48 +112,43 @@
powershell powershell
xonsh xonsh
]; ];
etc."current-system-packages".text = etc."current-system-packages".text =
let let
packages = builtins.map (p: "${p.name}:\t${p}") config.environment.systemPackages; packages = builtins.map (p: "${p.name}:\t${p}") config.environment.systemPackages;
sortedUnique = builtins.sort builtins.lessThan (pkgs.lib.lists.unique packages); sortedUnique = builtins.sort builtins.lessThan (pkgs.lib.lists.unique packages);
formatted = pkgs.lib.strings.concatLines sortedUnique;
in in
formatted; pkgs.lib.strings.concatLines sortedUnique;
}; # end environment };
virtualisation = { virtualisation = {
#spiceUSBRedirection.enable = true;
libvirtd = { libvirtd = {
enable = true; enable = true;
qemu = { qemu.swtpm.enable = true;
swtpm.enable = true;
};
}; };
containers.enable = true; containers.enable = true;
docker = { docker.enable = true;
enable = true;
};
podman = { podman = {
enable = true; enable = true;
dockerCompat = false; dockerCompat = false;
defaultNetwork.settings.dns_enabled = true; defaultNetwork.settings.dns_enabled = true;
}; # end podman };
oci-containers.backend = "podman"; oci-containers.backend = "podman";
}; # end virtualisation };
users = { users = {
defaultUserShell = pkgs.bash; defaultUserShell = pkgs.bash;
groups.docker = {}; groups.docker = { };
users.alisceon = { users.alisceon = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "podman" "docker" "libvirtd"]; extraGroups = [ "wheel" "networkmanager" "podman" "docker" "libvirtd" ];
shell = pkgs.xonsh; shell = pkgs.xonsh;
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPN1Cd2UlHo03Jqgi5Yb4io/3gh/X4wCb8LcmKlpAovQa271CKDBtYOUKn+Fts03g6dBMfaWMty6VGPMGDMONmc= alisceon@electra" "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPN1Cd2UlHo03Jqgi5Yb4io/3gh/X4wCb8LcmKlpAovQa271CKDBtYOUKn+Fts03g6dBMfaWMty6VGPMGDMONmc= alisceon@electra"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCvRYyYjN8z0yoPrHtaTQXY0iEtPl79K6/uXVceuS+31JGjRnqJjuDYg6KxAykGSfhercNdAJ2BTYJRGpMsW0Xn7+iq07TItcjJjERm7rjQZko4vauS62NdnV6BEG+6ktasb9CcepzwoRkLEXQOad3XbLbo0V2sj6uI5Rgq2Cfh6f9x1E1DJ87o6Ngkm+vQzdv4NYeya/O4vuoAw6BNhp4vyr9k+0K+TRLjflYPUwtb8U/agoYI5RoLZMa6eBKdPbLVYyahpMlYjHwr90H4c9veHliILcDSA8h6upcXSDwZiCPyu6cI4zRbzGQVg84iLmIs5ocMWsnuDQbqn5iM3BTV37atnTPI3O2C9WBxuOaGpk4C338V0CAfTo6GG/OSaFzfLBFE29nY6uXcCPH7KiDpig0naVWlpHZhED5OQRoSXBeyu4BgadV6eZ43HOcdbOAqbLcB1nvkKPi52Vj+JqwS8zIjQpipX22Trx2u4ike99ijeK6/XeoTnEAcUS0fcYQ0FDqqfLmr/HuxkEQ2NZF0sFFqVGUlpVJMFblNOH4L8A2kApnsrmlxnlVE+r0tTnnnK5tfCpyou/LPDM+4TzGw2nV2cwsZKbGaHvMM/qIvVva90mTcYfuDvGB10eQ2P9tN1TIjseONVLDVKNjNGzDBFY4RMeMJOWWQy0aBh0FP5Q== user@hannah.afk" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCvRYyYjN8z0yoPrHtaTQXY0iEtPl79K6/uXVceuS+31JGjRnqJjuDYg6KxAykGSfhercNdAJ2BTYJRGpMsW0Xn7+iq07TItcjJjERm7rjQZko4vauS62NdnV6BEG+6ktasb9CcepzwoRkLEXQOad3XbLbo0V2sj6uI5Rgq2Cfh6f9x1E1DJ87o6Ngkm+vQzdv4NYeya/O4vuoAw6BNhp4vyr9k+0K+TRLjflYPUwtb8U/agoYI5RoLZMa6eBKdPbLVYyahpMlYjHwr90H4c9veHliILcDSA8h6upcXSDwZiCPyu6cI4zRbzGQVg84iLmIs5ocMWsnuDQbqn5iM3BTV37atnTPI3O2C9WBxuOaGpk4C338V0CAfTo6GG/OSaFzfLBFE29nY6uXcCPH7KiDpig0naVWlpHZhED5OQRoSXBeyu4BgadV6eZ43HOcdbOAqbLcB1nvkKPi52Vj+JqwS8zIjQpipX22Trx2u4ike99ijeK6/XeoTnEAcUS0fcYQ0FDqqfLmr/HuxkEQ2NZF0sFFqVGUlpVJMFblNOH4L8A2kApnsrmlxnlVE+r0tTnnnK5tfCpyou/LPDM+4TzGw2nV2cwsZKbGaHvMM/qIvVva90mTcYfuDvGB10eQ2P9tN1TIjseONVLDVKNjNGzDBFY4RMeMJOWWQy0aBh0FP5Q== user@hannah.afk"
]; ];
}; };
}; # end users };
programs = { programs = {
command-not-found.enable = true; command-not-found.enable = true;
@ -192,11 +181,11 @@
description = "fuzzy completions for xonsh"; description = "fuzzy completions for xonsh";
license = pkgs.lib.licenses.mit; license = pkgs.lib.licenses.mit;
maintainers = [ ]; maintainers = [ ];
}; # end meta };
} # end buildPythonPackage }
) )
]; # end extraPackages ];
config = (builtins.readFile ../../home/conf/xonsh/xonshrc); config = builtins.readFile ../../home/conf/xonsh/xonshrc;
}; # end xonsh };
}; # end programs };
} #end file }

View file

@ -0,0 +1,14 @@
{ pkgs, ... }:
{
system.autoUpgrade.allowReboot = true;
services.openssh = {
enable = true;
permitRootLogin = "no";
};
environment.systemPackages = with pkgs; [
devenv
direnv
];
}

View file

@ -1,5 +1,4 @@
{ config, pkgs, pkgs-unstable, ... }: { pkgs, pkgs-unstable, ... }:
{ {
boot = { boot = {
plymouth.enable = true; plymouth.enable = true;
@ -9,6 +8,7 @@
"systemd.show_status=auto" "systemd.show_status=auto"
]; ];
}; };
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
services = { services = {
@ -25,7 +25,6 @@
gnome-keyring.enable = true; gnome-keyring.enable = true;
gnome-initial-setup.enable = false; gnome-initial-setup.enable = false;
}; };
# For keychron
udev.packages = [ udev.packages = [
pkgs.via pkgs.via
pkgs.qmk pkgs.qmk
@ -34,11 +33,9 @@
]; ];
fwupd.enable = true; fwupd.enable = true;
openssh.settings.PasswordAuthentication = false; openssh.settings.PasswordAuthentication = false;
}; # end services };
programs = { programs.dconf.enable = true;
dconf.enable = true;
}; # end programs
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
1312 1312
@ -49,22 +46,15 @@
environment = { environment = {
systemPackages = [ systemPackages = [
# Chat
pkgs.discord pkgs.discord
pkgs.signal-desktop pkgs.signal-desktop
pkgs.mumble pkgs.mumble
# Browser
(pkgs.chromium.override { enableWideVine = true; }) (pkgs.chromium.override { enableWideVine = true; })
pkgs.google-chrome pkgs.google-chrome
# Development
pkgs.vscodium pkgs.vscodium
pkgs.codex pkgs.codex
pkgs.devenv pkgs.devenv
pkgs.direnv pkgs.direnv
# Other
pkgs.syncthing pkgs.syncthing
pkgs.steam pkgs.steam
pkgs.krita pkgs.krita
@ -75,8 +65,8 @@
pkgs.via pkgs.via
pkgs.plymouth pkgs.plymouth
pkgs.xorg.xhost pkgs.xorg.xhost
(pkgs.bottles.override { removeWarningPopup = true;}) (pkgs.bottles.override { removeWarningPopup = true; })
]; # end systemPackages ];
sessionVariables.NIXOS_OZONE_WL = "1"; sessionVariables.NIXOS_OZONE_WL = "1";
}; # end environment };
} #end file }

View file

@ -1,10 +1,10 @@
{ config, pkgs, lib, ... }: { pkgs, ... }:
{ {
stylix = { stylix = {
enable = true; enable = true;
autoEnable = true; autoEnable = true;
enableReleaseChecks = false; enableReleaseChecks = false;
base16Scheme = { # based on https://github.com/tinted-theming/schemes/blob/spec-0.11/base16/selenized-black.yaml base16Scheme = {
base00 = "#181818"; base00 = "#181818";
base01 = "#252525"; base01 = "#252525";
base02 = "#3b3b3b"; base02 = "#3b3b3b";
@ -48,16 +48,18 @@ stylix = {
popups = 14; popups = 14;
}; };
}; };
cursor = { cursor = {
package = pkgs.whitesur-cursors; package = pkgs.whitesur-cursors;
name = "WhiteSur-cursors"; name = "WhiteSur-cursors";
size = 20; size = 20;
}; };
icons = { icons = {
enable = true; enable = true;
package = pkgs.whitesur-icon-theme; package = pkgs.whitesur-icon-theme;
light = "WhiteSur-light"; light = "WhiteSur-light";
dark = "WhiteSur-dark"; dark = "WhiteSur-dark";
}; };
}; # end stylix };
} }

View file

@ -1,10 +1,8 @@
{ config, pkgs, ... }: { pkgs, ... }:
{ {
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
services = { services = {
# Remove xserver. when the patch comes
xserver.displayManager = { xserver.displayManager = {
gdm.enable = true; gdm.enable = true;
gdm.wayland = true; gdm.wayland = true;
@ -14,7 +12,7 @@
gnome-keyring.enable = true; gnome-keyring.enable = true;
gnome-initial-setup.enable = false; gnome-initial-setup.enable = false;
}; };
}; # end services };
environment = { environment = {
gnome.excludePackages = with pkgs; [ gnome.excludePackages = with pkgs; [
@ -29,13 +27,12 @@
gnome-calendar gnome-calendar
gnome-initial-setup gnome-initial-setup
gnome-clocks gnome-clocks
]; # end gnome.excludePackages ];
systemPackages = [ systemPackages = [
# GNOME tweaks and extensions
pkgs.gnome-tweaks pkgs.gnome-tweaks
pkgs.dconf-editor pkgs.dconf-editor
pkgs.gnomeExtensions.ddterm pkgs.gnomeExtensions.ddterm
]; # end systemPackages ];
}; # end environment };
} #end file }

99
nixos/modules/wm/sway.nix Normal file
View file

@ -0,0 +1,99 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
pavucontrol
libinput
libinput-gestures
libnotify
wmctrl
playerctl
xdg-utils
shared-mime-info
libsecret
gnome-text-editor
loupe
evince
seahorse
nautilus
];
programs = {
sway = {
enable = true;
wrapperFeatures.base = true;
wrapperFeatures.gtk = true;
extraOptions = [ "--unsupported-gpu" ];
extraPackages = with pkgs; [
swayidle
swaylock
swaybg
grim
slurp
wl-clipboard
pulseaudio
sway-contrib.grimshot
foot
kitty
dotool
mako
espanso-wayland
];
};
uwsm = {
enable = true;
waylandCompositors = {
sway = {
prettyName = "Sway";
comment = "Sway compositor managed by UWSM";
binPath = "${pkgs.sway}/bin/sway";
extraArgs = [ "--unsupported-gpu" ];
};
};
};
light.enable = true;
dconf.enable = true;
seahorse.enable = true;
};
security = {
polkit.enable = true;
pam.services = {
greetd.enableGnomeKeyring = true;
login.enableGnomeKeyring = true;
swaylock.text = ''
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth sufficient pam_fprintd.so
auth include login
'';
};
};
services = {
greetd = {
enable = true;
settings = {
initial_session = {
command = "uwsm start -- sway-uwsm.desktop";
user = "alisceon";
};
default_session = {
command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd 'uwsm start -- sway-uwsm.desktop' --remember --asterisks''";
user = "greeter";
};
};
};
logind.settings.Login = {
HandleLidSwitch = "suspend";
HandleLidSwitchExternalPower = "suspend";
};
dbus.packages = [ pkgs.seahorse pkgs.gnome-keyring pkgs.gcr ];
gnome.gcr-ssh-agent.enable = true;
gvfs.enable = true;
};
users.users.alisceon.extraGroups = [ "video" "input" ];
}