begin to modularise
This commit is contained in:
parent
bbd26675f8
commit
a1175ba492
10 changed files with 311 additions and 93 deletions
|
|
@ -30,6 +30,8 @@
|
||||||
};
|
};
|
||||||
FCS-Tristan-Nixbook = mkConf "work" {
|
FCS-Tristan-Nixbook = mkConf "work" {
|
||||||
inherit pkgs nixpkgs system user home-manager hyprland;
|
inherit pkgs nixpkgs system user home-manager hyprland;
|
||||||
|
laptop = true;
|
||||||
|
work = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,14 @@
|
||||||
name: { nixpkgs, home-manager, system, user, hyprland, ... }:
|
name:
|
||||||
|
{ nixpkgs
|
||||||
|
, home-manager
|
||||||
|
, system
|
||||||
|
, user
|
||||||
|
, hyprland
|
||||||
|
, laptop ? false
|
||||||
|
, work ? false
|
||||||
|
, displays ? []
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
nixpkgs.lib.nixosSystem rec {
|
nixpkgs.lib.nixosSystem rec {
|
||||||
inherit system;
|
inherit system;
|
||||||
|
|
@ -11,10 +21,29 @@ nixpkgs.lib.nixosSystem rec {
|
||||||
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
|
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(import ./modules/scripts.nix { inherit user; })
|
||||||
|
(import ./modules/editor.nix { inherit user; })
|
||||||
|
(import ./modules/keyboard.nix { inherit user; })
|
||||||
|
(import ./modules/display.nix { inherit user; })
|
||||||
|
(import ./modules/work.nix { inherit user; })
|
||||||
|
];
|
||||||
|
keyboard.dvorak.enable = laptop;
|
||||||
|
displays = if laptop then {
|
||||||
|
enable = true;
|
||||||
|
displays = [{
|
||||||
|
name = "eDP-1";
|
||||||
|
scaling = 1.2;
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
else displays;
|
||||||
|
roles.work.enable = work;
|
||||||
|
}
|
||||||
../system/global/system.nix
|
../system/global/system.nix
|
||||||
../system/${name}/system.nix
|
../system/${name}/system.nix
|
||||||
../system/${name}/hardware.nix
|
../system/${name}/hardware.nix
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
|
|
|
||||||
82
lib/modules/display.nix
Normal file
82
lib/modules/display.nix
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
{ user }: { lib, pkgs, config, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.displays;
|
||||||
|
|
||||||
|
renderDisplaysForHyprland = displays:
|
||||||
|
"# === DISPLAY MODULE ===\n"
|
||||||
|
+ concatStringsSep "\n" (map displayHyprlandSetting displays);
|
||||||
|
|
||||||
|
displayHyprlandSetting = display:
|
||||||
|
"monitor = " + display.name +
|
||||||
|
", " + resToString display.resolution +
|
||||||
|
", " + display.position +
|
||||||
|
", " + toString display.scaling;
|
||||||
|
|
||||||
|
resolutionType = types.submodule ({ x, y, freq, ... }:
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
x = mkOption {
|
||||||
|
description = "x";
|
||||||
|
type = types.int;
|
||||||
|
default = 0;
|
||||||
|
};
|
||||||
|
y = mkOption {
|
||||||
|
description = "y";
|
||||||
|
type = types.int;
|
||||||
|
default = 0;
|
||||||
|
};
|
||||||
|
freq = mkOption {
|
||||||
|
description = "frequency";
|
||||||
|
type = types.int;
|
||||||
|
default = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
displayType = types.submodule
|
||||||
|
({ ... }: {
|
||||||
|
options = {
|
||||||
|
name = mkOption {
|
||||||
|
description = "name of the display";
|
||||||
|
};
|
||||||
|
scaling = mkOption {
|
||||||
|
type = types.float;
|
||||||
|
default = 1.0;
|
||||||
|
};
|
||||||
|
resolution = mkOption {
|
||||||
|
description = "res";
|
||||||
|
type = resolutionType;
|
||||||
|
default = { };
|
||||||
|
};
|
||||||
|
position = mkOption {
|
||||||
|
description = "XxY";
|
||||||
|
default = "auto";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
resToString = res:
|
||||||
|
if res.x == 0 || res.y == 0 || res.freq == 0
|
||||||
|
then "preferred"
|
||||||
|
else "${toString res.x}x${toString res.y}@${toString res.freq}";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.displays =
|
||||||
|
{
|
||||||
|
enable = mkEnableOption "manage displays";
|
||||||
|
displays = mkOption {
|
||||||
|
type = types.listOf displayType;
|
||||||
|
default = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.extraConfig = mkIf (cfg.displays != [ ])
|
||||||
|
(renderDisplaysForHyprland cfg.displays);
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
49
lib/modules/editor.nix
Normal file
49
lib/modules/editor.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
{ user }: { lib, pkgs, config, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
editor = config.programs.editor;
|
||||||
|
terminal = "foot";
|
||||||
|
menu = "wofi --show dmenu";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.programs = {
|
||||||
|
editor = {
|
||||||
|
enable = mkEnableOption "editor";
|
||||||
|
package = mkPackageOption pkgs "vscodium" {
|
||||||
|
default = pkgs.vscodium;
|
||||||
|
example = "pkgs.vscode";
|
||||||
|
};
|
||||||
|
command = mkOption {
|
||||||
|
default = "/bin/codium";
|
||||||
|
};
|
||||||
|
neovim = mkEnableOption "neovim mode";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf editor.enable {
|
||||||
|
home-manager.users.${user}.imports = [{
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
package = editor.package;
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
|
||||||
|
programs.scripts = [{
|
||||||
|
name = "open-code";
|
||||||
|
text = ''
|
||||||
|
code_dir=~/Documents/code
|
||||||
|
cd $code_dir
|
||||||
|
repo=$({ ls && echo clone-repo; } | ${menu})
|
||||||
|
case $repo in
|
||||||
|
clone-repo)
|
||||||
|
url=$(wl-paste)
|
||||||
|
${terminal} -e -- git clone "$url" ;;
|
||||||
|
*) [ -e "$repo" ] && ${editor.package}${editor.command} $repo ;;
|
||||||
|
esac
|
||||||
|
'';
|
||||||
|
install = false;
|
||||||
|
hotkey = "C";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
24
lib/modules/keyboard.nix
Normal file
24
lib/modules/keyboard.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{ user }: { lib, pkgs, config, ... }:
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options.keyboard = {
|
||||||
|
dvorak = {
|
||||||
|
enable = mkEnableOption "use a good keyboard layout on a qwerty keyboard";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf config.keyboard.dvorak.enable {
|
||||||
|
home-manager.users.${user}.imports = [
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.extraConfig = ''
|
||||||
|
# === KEYBOARD MODULE ===
|
||||||
|
input {
|
||||||
|
kb_variant = dvorak
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
services.xserver.xkbVariant = "dvorak";
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
52
lib/modules/scripts.nix
Normal file
52
lib/modules/scripts.nix
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
{ user }: { lib, pkgs, config, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
scripts = config.programs.scripts;
|
||||||
|
|
||||||
|
scriptType = types.submodule ({...}: {
|
||||||
|
options = {
|
||||||
|
name = mkOption {
|
||||||
|
description = "name of the executable";
|
||||||
|
};
|
||||||
|
text = mkOption {
|
||||||
|
description = "the text of the script";
|
||||||
|
};
|
||||||
|
hotkey = mkOption {
|
||||||
|
description = "the key that run this script";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
install = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
scriptToPackage = script: pkgs.writeShellScriptBin script.name script.text;
|
||||||
|
installScripts = scripts: (map scriptToPackage (filter ( s: s.install ) scripts));
|
||||||
|
|
||||||
|
bindScript = script: if script.hotkey != "" then ''
|
||||||
|
bind = SUPER, ${script.hotkey}, exec, ${scriptToPackage script}/bin/${script.name}
|
||||||
|
'' else "";
|
||||||
|
|
||||||
|
bindScripts = scripts:
|
||||||
|
"# === USER SCRIPTS MODULE ===\n"
|
||||||
|
+ concatStringsSep "\n" (map bindScript scripts);
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.programs = {
|
||||||
|
scripts = mkOption {
|
||||||
|
type = types.listOf scriptType;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
home-manager.users.${user}.imports = [{
|
||||||
|
home.packages = installScripts scripts;
|
||||||
|
wayland.windowManager.hyprland.extraConfig = bindScripts scripts;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
71
lib/modules/work.nix
Normal file
71
lib/modules/work.nix
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
{ user }: { lib, pkgs, config, ... }:
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options.roles.work = {
|
||||||
|
enable = mkEnableOption "work packages";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf config.roles.work.enable {
|
||||||
|
|
||||||
|
home-manager.users.${user}.imports = [{
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
onedrive
|
||||||
|
kubectl
|
||||||
|
awscli2
|
||||||
|
docker-compose
|
||||||
|
minikube
|
||||||
|
kubernetes-helm
|
||||||
|
ansible
|
||||||
|
thunderbird
|
||||||
|
(import ../mkapp.nix "slack" {
|
||||||
|
inherit pkgs;
|
||||||
|
desktopName = "Slack";
|
||||||
|
app-id = "mpagibdhafmlkgpemeicgogjnhclenoc";
|
||||||
|
browser = "${brave}/opt/brave.com/brave/brave-browser";
|
||||||
|
})
|
||||||
|
(import ../mkapp.nix "teams" {
|
||||||
|
inherit pkgs;
|
||||||
|
browser = "${brave}/opt/brave.com/brave/brave-browser";
|
||||||
|
app-id = "cifhbcnohmdccbgoicgdjpfamggdegmo";
|
||||||
|
desktopName = "Microsoft Teams";
|
||||||
|
})
|
||||||
|
(pkgs.writeShellScriptBin "my-editor" ''
|
||||||
|
${pkgs.vscode}/bin/code --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations $@
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
|
||||||
|
gtk.gtk3.bookmarks = [
|
||||||
|
"file:///home/tristan/OneDrive/Documents/ OneDrive"
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.vscode = {
|
||||||
|
extensions = with pkgs; [
|
||||||
|
vscode-extensions.ms-azuretools.vscode-docker
|
||||||
|
];
|
||||||
|
userSettings = {
|
||||||
|
"aws.telemetry" = false;
|
||||||
|
"gitlens.telemetry.enabled" = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
programs.editor = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.vscode;
|
||||||
|
command = "/bin/code";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||||
|
# nonfree vscode required for dev containers
|
||||||
|
"vscode"
|
||||||
|
];
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
networkmanager = {
|
||||||
|
plugins = [ pkgs.networkmanager-openvpn ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -62,18 +62,6 @@ let
|
||||||
${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-up -t 1000
|
${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-up -t 1000
|
||||||
'');
|
'');
|
||||||
|
|
||||||
open-code = (pkgs.writeShellScriptBin "open-code" ''
|
|
||||||
code_dir=~/Documents/code
|
|
||||||
cd $code_dir
|
|
||||||
repo=$({ ls && echo clone-repo; } | ${my-deps.menu})
|
|
||||||
case $repo in
|
|
||||||
clone-repo)
|
|
||||||
url=$(wl-paste)
|
|
||||||
${my-deps.terminal} -e -- git clone "$url" ;;
|
|
||||||
*) [ -e "$repo" ] && my-editor $repo ;;
|
|
||||||
esac
|
|
||||||
'');
|
|
||||||
|
|
||||||
switch-window = (pkgs.writeShellScriptBin "switch-window" ''
|
switch-window = (pkgs.writeShellScriptBin "switch-window" ''
|
||||||
${my-deps.hyprctl} clients -j | \
|
${my-deps.hyprctl} clients -j | \
|
||||||
${my-deps.jq} '.[] | .title' -r | \
|
${my-deps.jq} '.[] | .title' -r | \
|
||||||
|
|
@ -187,7 +175,6 @@ in
|
||||||
bind = SUPER, Z, exec, ${pkgs.wlogout}/bin/wlogout
|
bind = SUPER, Z, exec, ${pkgs.wlogout}/bin/wlogout
|
||||||
bind = SUPER, M, exec, ${ my-deps.terminal } -e ncmpcpp
|
bind = SUPER, M, exec, ${ my-deps.terminal } -e ncmpcpp
|
||||||
bind = SUPER, O, exec, pcmanfm
|
bind = SUPER, O, exec, pcmanfm
|
||||||
bind = SUPER, C, exec, ${ my-scripts.open-code }/bin/open-code
|
|
||||||
bind = SUPER, TAB, exec, ${ my-scripts.switch-window }/bin/switch-window
|
bind = SUPER, TAB, exec, ${ my-scripts.switch-window }/bin/switch-window
|
||||||
bind = SUPER, G, exec, ${ pkgs.hyprpicker }/bin/hyprpicker | wl-copy && notify-send "Copied Colour" "$(wl-paste)"
|
bind = SUPER, G, exec, ${ pkgs.hyprpicker }/bin/hyprpicker | wl-copy && notify-send "Copied Colour" "$(wl-paste)"
|
||||||
bind = SUPER, EQUAL, exec, hyprctl keyword misc:cursor_zoom_factor 2
|
bind = SUPER, EQUAL, exec, hyprctl keyword misc:cursor_zoom_factor 2
|
||||||
|
|
@ -441,8 +428,6 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
enable = true;
|
|
||||||
package = pkgs.vscodium;
|
|
||||||
extensions = with pkgs; [
|
extensions = with pkgs; [
|
||||||
vscode-extensions.asvetliakov.vscode-neovim
|
vscode-extensions.asvetliakov.vscode-neovim
|
||||||
vscode-extensions.jnoortheen.nix-ide
|
vscode-extensions.jnoortheen.nix-ide
|
||||||
|
|
@ -915,7 +900,6 @@ color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-
|
||||||
"${modifier}+SHIFT+P" = "exec ${ my-scripts.bwotpmenu }/bin/bwotpmenu";
|
"${modifier}+SHIFT+P" = "exec ${ my-scripts.bwotpmenu }/bin/bwotpmenu";
|
||||||
"${modifier}+SHIFT+S" = "exec ${ my-scripts.screenshot }/bin/screenshot";
|
"${modifier}+SHIFT+S" = "exec ${ my-scripts.screenshot }/bin/screenshot";
|
||||||
"${modifier}+M" = "exec ${ my-deps.terminal } -e ncmpcpp";
|
"${modifier}+M" = "exec ${ my-deps.terminal } -e ncmpcpp";
|
||||||
"${modifier}+C" = "exec ${ my-scripts.open-code }/bin/open-code";
|
|
||||||
"${modifier}+Z" = "exec ${pkgs.swaylock-effects}/bin/swaylock -f";
|
"${modifier}+Z" = "exec ${pkgs.swaylock-effects}/bin/swaylock -f";
|
||||||
};
|
};
|
||||||
bars = [ ];
|
bars = [ ];
|
||||||
|
|
|
||||||
|
|
@ -6,36 +6,13 @@
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
sbctl
|
sbctl
|
||||||
onedrive
|
|
||||||
kubectl
|
|
||||||
awscli2
|
|
||||||
docker-compose
|
|
||||||
minikube
|
|
||||||
kubernetes-helm
|
|
||||||
gimp
|
gimp
|
||||||
libreoffice
|
libreoffice
|
||||||
ansible
|
|
||||||
thunderbird
|
|
||||||
(pkgs.writeShellScriptBin "my-editor" ''
|
|
||||||
${pkgs.vscode}/bin/code --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations $@
|
|
||||||
'')
|
|
||||||
(import ../../lib/mkapp.nix "slack" {
|
|
||||||
inherit pkgs;
|
|
||||||
desktopName = "Slack";
|
|
||||||
app-id = "mpagibdhafmlkgpemeicgogjnhclenoc";
|
|
||||||
browser = "${brave}/opt/brave.com/brave/brave-browser";
|
|
||||||
})
|
|
||||||
(pkgs.makeDesktopItem {
|
(pkgs.makeDesktopItem {
|
||||||
name = "logseq";
|
name = "logseq";
|
||||||
desktopName = "Logseq";
|
desktopName = "Logseq";
|
||||||
exec = "${logseq}/bin/logseq --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --disable-gpu";
|
exec = "${logseq}/bin/logseq --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --disable-gpu";
|
||||||
})
|
})
|
||||||
(import ../../lib/mkapp.nix "teams" {
|
|
||||||
inherit pkgs;
|
|
||||||
browser = "${brave}/opt/brave.com/brave/brave-browser";
|
|
||||||
app-id = "cifhbcnohmdccbgoicgdjpfamggdegmo";
|
|
||||||
desktopName = "Microsoft Teams";
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.git = {
|
programs.git = {
|
||||||
|
|
@ -48,13 +25,6 @@
|
||||||
## work laptop configuration
|
## work laptop configuration
|
||||||
exec-once = ${pkgs.swaybg}/bin/swaybg -o eDP-1 -i ~/Pictures/backgrounds/nix-soft.png &
|
exec-once = ${pkgs.swaybg}/bin/swaybg -o eDP-1 -i ~/Pictures/backgrounds/nix-soft.png &
|
||||||
|
|
||||||
monitor = eDP-1, preferred, 0x0, 1.2
|
|
||||||
monitor = HDMI-A-1, 1920x1080@144, auto, 1
|
|
||||||
|
|
||||||
input {
|
|
||||||
kb_variant = dvorak
|
|
||||||
}
|
|
||||||
|
|
||||||
general {
|
general {
|
||||||
gaps_out = 10
|
gaps_out = 10
|
||||||
border_size = 3
|
border_size = 3
|
||||||
|
|
@ -64,25 +34,8 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk = {
|
|
||||||
gtk3.bookmarks = [
|
|
||||||
"file:///home/tristan/OneDrive/Documents/ OneDrive"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.firefox.enable = true;
|
programs.firefox.enable = true;
|
||||||
|
|
||||||
programs.vscode = {
|
|
||||||
package = lib.mkForce pkgs.vscode;
|
|
||||||
extensions = with pkgs; [
|
|
||||||
vscode-extensions.ms-azuretools.vscode-docker
|
|
||||||
];
|
|
||||||
userSettings = {
|
|
||||||
"aws.telemetry" = false;
|
|
||||||
"gitlens.telemetry.enabled" = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# wayland.windowManager.hyprland.enable = lib.mkForce false;
|
# wayland.windowManager.hyprland.enable = lib.mkForce false;
|
||||||
# wayland.windowManager.sway.enable = true;
|
# wayland.windowManager.sway.enable = true;
|
||||||
# wayland.windowManager.sway.package = pkgs.swayfx;
|
# wayland.windowManager.sway.package = pkgs.swayfx;
|
||||||
|
|
|
||||||
|
|
@ -5,28 +5,6 @@
|
||||||
|
|
||||||
networking.hostName = "FCS-Tristan-Nixbook";
|
networking.hostName = "FCS-Tristan-Nixbook";
|
||||||
|
|
||||||
services.xserver = {
|
|
||||||
layout = "gb";
|
|
||||||
xkbVariant = "dvorak";
|
|
||||||
xkbOptions = "caps:escape";
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
openvpn
|
|
||||||
openvpn3
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
|
||||||
# nonfree vscode required for dev containers
|
|
||||||
"vscode"
|
|
||||||
];
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
networkmanager = {
|
|
||||||
plugins = [ pkgs.networkmanager-openvpn ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.kernel.sysctl = {
|
boot.kernel.sysctl = {
|
||||||
"net.ipv4.ip_unprivileged_port_start" = 53;
|
"net.ipv4.ip_unprivileged_port_start" = 53;
|
||||||
};
|
};
|
||||||
|
|
@ -79,11 +57,5 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.greetd = {
|
|
||||||
settings = rec {
|
|
||||||
# default_session = lib.mkForce sway_session;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue