Reformat all nix files.

This commit is contained in:
Tom Alexander 2024-12-20 22:37:44 -05:00
parent 764a8c58ce
commit e26118af4f
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
18 changed files with 549 additions and 410 deletions

View File

@ -1,7 +1,12 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
boot.loader.grub.enable = false; boot.loader.grub.enable = false;
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
@ -15,7 +20,6 @@
# efibootmgr -c -d /dev/sda -p 1 -L NixOS-boot -l '\EFI\NixOS-boot\grubx64.efi' # efibootmgr -c -d /dev/sda -p 1 -L NixOS-boot -l '\EFI\NixOS-boot\grubx64.efi'
# Text-only: # Text-only:
# sudo cp "$(nix-build '<nixpkgs>' --no-out-link -A 'refind')/share/refind/refind_x64.efi" /boot/EFI/boot/bootx64.efi # sudo cp "$(nix-build '<nixpkgs>' --no-out-link -A 'refind')/share/refind/refind_x64.efi" /boot/EFI/boot/bootx64.efi

View File

@ -1,27 +1,41 @@
{ config, lib, pkgs, pkgs-unstable, home-manager, ... }: {
config,
lib,
pkgs,
pkgs-unstable,
home-manager,
...
}:
{ {
imports = imports = [
[ ./roles/reset
./roles/reset ./hosts/odo
./hosts/odo "${
"${builtins.fetchTarball {url="https://github.com/nix-community/disko/archive/refs/tags/v1.9.0.tar.gz";sha256="0j76ar4qz320fakdii4659w5lww8wiz6yb7g47npywqvf2lbp388";}}/module.nix" builtins.fetchTarball {
./boot.nix url = "https://github.com/nix-community/disko/archive/refs/tags/v1.9.0.tar.gz";
./zfs.nix sha256 = "0j76ar4qz320fakdii4659w5lww8wiz6yb7g47npywqvf2lbp388";
./network.nix }
./roles/firewall }/module.nix"
./roles/graphics ./boot.nix
./roles/sound ./zfs.nix
./roles/sway ./network.nix
./roles/alacritty ./roles/firewall
./roles/firefox ./roles/graphics
./roles/emacs ./roles/sound
./roles/git ./roles/sway
./roles/fonts ./roles/alacritty
./roles/gpg ./roles/firefox
]; ./roles/emacs
./roles/git
./roles/fonts
./roles/gpg
];
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [
"nix-command"
"flakes"
];
nix.settings.trusted-users = [ "@wheel" ]; nix.settings.trusted-users = [ "@wheel" ];
boot.kernelPackages = pkgs.linuxPackages_6_11; boot.kernelPackages = pkgs.linuxPackages_6_11;
@ -46,14 +60,19 @@
]; ];
}; };
users.groups.talexander.gid = 11235; users.groups.talexander.gid = 11235;
home-manager.users.talexander = { pkgs, ... }: { home-manager.users.talexander =
home.packages = [ pkgs.atool pkgs.httpie ]; { pkgs, ... }:
programs.bash.enable = true; {
home.packages = [
pkgs.atool
pkgs.httpie
];
programs.bash.enable = true;
# The state version is required and should stay at the version you # The state version is required and should stay at the version you
# originally installed. # originally installed.
home.stateVersion = "24.11"; home.stateVersion = "24.11";
}; };
# Automatic garbage collection # Automatic garbage collection
nix.gc = { nix.gc = {
@ -67,14 +86,16 @@
security.doas.enable = true; security.doas.enable = true;
security.doas.wheelNeedsPassword = false; security.doas.wheelNeedsPassword = false;
security.sudo.enable = false; security.sudo.enable = false;
security.doas.extraRules = [{ security.doas.extraRules = [
# Retain environment (for example NIX_PATH) {
keepEnv = true; # Retain environment (for example NIX_PATH)
persist = true; # Only ask for a password the first time. keepEnv = true;
}]; persist = true; # Only ask for a password the first time.
}
];
# Do not use default packages (nixos includes some defaults like nano) # Do not use default packages (nixos includes some defaults like nano)
environment.defaultPackages = lib.mkForce []; environment.defaultPackages = lib.mkForce [ ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
wget wget
@ -163,7 +184,7 @@
sortedUnique = builtins.sort builtins.lessThan (lib.unique packages); sortedUnique = builtins.sort builtins.lessThan (lib.unique packages);
formatted = builtins.concatStringsSep "\n" sortedUnique; formatted = builtins.concatStringsSep "\n" sortedUnique;
in in
formatted; formatted;
# nixpkgs.overlays = [ # nixpkgs.overlays = [
# (final: prev: { # (final: prev: {
@ -171,8 +192,6 @@
# }) # })
# ]; # ];
# Copy the NixOS configuration file and link it from the resulting system # Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you # (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix. # accidentally delete configuration.nix.

View File

@ -12,72 +12,85 @@
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-b93b4e9b5, impermanence, home-manager, ... }@inputs: let outputs =
base-system = {}; {
odoqemu = nixpkgs.lib.nixosSystem rec { self,
system = "x86_64-linux"; nixpkgs,
specialArgs = { nixpkgs-unstable,
pkgs-b93b4e9b5 = import nixpkgs-b93b4e9b5 { nixpkgs-b93b4e9b5,
inherit system; impermanence,
# config.allowUnfree = true; home-manager,
}; ...
pkgs-unstable = import nixpkgs-unstable { }@inputs:
inherit system; let
# config.allowUnfree = true; base-system = { };
}; odoqemu = nixpkgs.lib.nixosSystem rec {
}; system = "x86_64-linux";
modules = [ specialArgs = {
impermanence.nixosModules.impermanence pkgs-b93b4e9b5 = import nixpkgs-b93b4e9b5 {
home-manager.nixosModules.home-manager inherit system;
{ # config.allowUnfree = true;
home-manager.useGlobalPkgs = true; };
home-manager.useUserPackages = true; pkgs-unstable = import nixpkgs-unstable {
} inherit system;
./configuration.nix # config.allowUnfree = true;
({lib, ...}: {
imports = [ <nixpkgs/nixos/modules/virtualisation/qemu-vm.nix> ];
virtualisation.qemu.options = [
"-device virtio-vga"
];
virtualisation.vmVariant = {
# following configuration is added only when building VM with build-vm
virtualisation = {
memorySize = 2048; # Use 2048MiB memory.
cores = 3;
graphics = false;
};
}; };
networking.dhcpcd.enable = lib.mkForce true;
networking.useDHCP = lib.mkForce true;
boot.loader.efi.canTouchEfiVariables = lib.mkForce true;
# doas nixos-rebuild build-vm --flake .#odoqemu
#./result/bin/run-nixos-vm
})
];
};
odo = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = {
pkgs-b93b4e9b5 = import nixpkgs-b93b4e9b5 {
inherit system;
# config.allowUnfree = true;
};
pkgs-unstable = import nixpkgs-unstable {
inherit system;
# config.allowUnfree = true;
}; };
modules = [
impermanence.nixosModules.impermanence
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
}
./configuration.nix
(
{ lib, ... }:
{
imports = [ <nixpkgs/nixos/modules/virtualisation/qemu-vm.nix> ];
virtualisation.qemu.options = [
"-device virtio-vga"
];
virtualisation.vmVariant = {
# following configuration is added only when building VM with build-vm
virtualisation = {
memorySize = 2048; # Use 2048MiB memory.
cores = 3;
graphics = false;
};
};
networking.dhcpcd.enable = lib.mkForce true;
networking.useDHCP = lib.mkForce true;
boot.loader.efi.canTouchEfiVariables = lib.mkForce true;
# doas nixos-rebuild build-vm --flake .#odoqemu
#./result/bin/run-nixos-vm
}
)
];
}; };
modules = [ odo = nixpkgs.lib.nixosSystem rec {
impermanence.nixosModules.impermanence system = "x86_64-linux";
home-manager.nixosModules.home-manager specialArgs = {
{ pkgs-b93b4e9b5 = import nixpkgs-b93b4e9b5 {
home-manager.useGlobalPkgs = true; inherit system;
home-manager.useUserPackages = true; # config.allowUnfree = true;
} };
./configuration.nix pkgs-unstable = import nixpkgs-unstable {
]; inherit system;
}; # config.allowUnfree = true;
in };
};
modules = [
impermanence.nixosModules.impermanence
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
}
./configuration.nix
];
};
in
{ {
# doas nix build --extra-experimental-features nix-command --extra-experimental-features flakes .#vms.odo # doas nix build --extra-experimental-features nix-command --extra-experimental-features flakes .#vms.odo
# ./result/bin/run-nixos-vim # ./result/bin/run-nixos-vim
@ -104,11 +117,14 @@
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
} }
./configuration.nix ./configuration.nix
({lib, ...}: { (
networking.dhcpcd.enable = lib.mkForce true; { lib, ... }:
networking.useDHCP = lib.mkForce true; {
boot.loader.efi.canTouchEfiVariables = lib.mkForce true; networking.dhcpcd.enable = lib.mkForce true;
}) networking.useDHCP = lib.mkForce true;
boot.loader.efi.canTouchEfiVariables = lib.mkForce true;
}
)
]; ];
}; };
}; };

View File

@ -14,7 +14,11 @@
type = "filesystem"; type = "filesystem";
format = "vfat"; format = "vfat";
mountpoint = "/boot"; mountpoint = "/boot";
mountOptions = [ "umask=0077" "noatime" "discard" ]; mountOptions = [
"umask=0077"
"noatime"
"discard"
];
}; };
}; };
zfs = { zfs = {

View File

@ -1,14 +1,24 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }: {
config,
lib,
pkgs,
modulesPath,
...
}:
{ {
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" ]; boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"thunderbolt"
];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];

View File

@ -1,11 +1,19 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
networking.dhcpcd.enable = false; networking.dhcpcd.enable = false;
networking.useDHCP = false; networking.useDHCP = false;
networking.nameservers = [ "194.242.2.2#doh.mullvad.net" "2a07:e340::2#doh.mullvad.net" ]; networking.nameservers = [
"194.242.2.2#doh.mullvad.net"
"2a07:e340::2#doh.mullvad.net"
];
services.resolved = { services.resolved = {
enable = true; enable = true;
dnssec = "true"; dnssec = "true";
@ -14,7 +22,6 @@
dnsovertls = "true"; dnsovertls = "true";
}; };
# Without this, systemd-resolved will send DNS requests for <X>.home.arpa to the per-link DNS server (172.16.0.1) which does not support DNS-over-TLS. This leads to the connection anging and timing out. This causes firefox startup to take an extra 10+ seconds. # Without this, systemd-resolved will send DNS requests for <X>.home.arpa to the per-link DNS server (172.16.0.1) which does not support DNS-over-TLS. This leads to the connection anging and timing out. This causes firefox startup to take an extra 10+ seconds.
# #
# Test with: drill @127.0.0.53 odo.home.arpa # Test with: drill @127.0.0.53 odo.home.arpa

View File

@ -1,17 +1,24 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
alacritty alacritty
xdg-utils # for xdg-open xdg-utils # for xdg-open
]; ];
home-manager.users.talexander = { pkgs, ... }: { home-manager.users.talexander =
home.file.".config/alacritty/alacritty.toml" = { { pkgs, ... }:
source = ./files/alacritty.toml; {
home.file.".config/alacritty/alacritty.toml" = {
source = ./files/alacritty.toml;
};
}; };
};
} }

View File

@ -1,7 +1,11 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
} }

View File

@ -1,11 +1,16 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
programs.firefox = { programs.firefox = {
enable = true; enable = true;
package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {}); package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true; }) { });
languagePacks = [ "en-US" ]; languagePacks = [ "en-US" ];
preferences = { preferences = {
# "identity.sync.tokenserver.uri": "https://ffsync.fizz.buzz/token/1.0/sync/1.5"; # "identity.sync.tokenserver.uri": "https://ffsync.fizz.buzz/token/1.0/sync/1.5";
@ -52,7 +57,8 @@
"privacy.fingerprintingProtection" = true; "privacy.fingerprintingProtection" = true;
# Allow sending dark mode preference to websites. # Allow sending dark mode preference to websites.
# Allow sending timezone to websites. # Allow sending timezone to websites.
"privacy.fingerprintingProtection.overrides" = "+AllTargets,-CSSPrefersColorScheme,-JSDateTimeUTC,-CanvasExtractionBeforeUserInputIsBlocked"; "privacy.fingerprintingProtection.overrides" =
"+AllTargets,-CSSPrefersColorScheme,-JSDateTimeUTC,-CanvasExtractionBeforeUserInputIsBlocked";
# Disable weather on new tab page # Disable weather on new tab page
"browser.newtabpage.activity-stream.showWeather" = false; "browser.newtabpage.activity-stream.showWeather" = false;
}; };
@ -82,7 +88,12 @@
hideMounts = true; hideMounts = true;
users.talexander = { users.talexander = {
directories = [ directories = [
{ directory = ".mozilla"; user = "talexander"; group = "talexander"; mode = "0700"; } {
directory = ".mozilla";
user = "talexander";
group = "talexander";
mode = "0700";
}
]; ];
}; };
}; };
@ -90,7 +101,12 @@
hideMounts = true; hideMounts = true;
users.talexander = { users.talexander = {
directories = [ directories = [
{ directory = ".cache/mozilla"; user = "talexander"; group = "talexander"; mode = "0700"; } {
directory = ".cache/mozilla";
user = "talexander";
group = "talexander";
mode = "0700";
}
]; ];
}; };
}; };

View File

@ -1,7 +1,12 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
# Open ports in the firewall. # Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [

View File

@ -1,7 +1,12 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
fonts = { fonts = {
enableDefaultPackages = true; enableDefaultPackages = true;
@ -13,106 +18,106 @@
fontconfig = { fontconfig = {
localConf = '' localConf = ''
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig> <fontconfig>
<!-- reject all bitmap fonts, with the exception of 'terminus' --> <!-- reject all bitmap fonts, with the exception of 'terminus' -->
<selectfont> <selectfont>
<!-- <acceptfont> --> <!-- <acceptfont> -->
<!-- <pattern> --> <!-- <pattern> -->
<!-- <patelt name="family"> <string>Terminus</string> </patelt> --> <!-- <patelt name="family"> <string>Terminus</string> </patelt> -->
<!-- </pattern> --> <!-- </pattern> -->
<!-- </acceptfont> --> <!-- </acceptfont> -->
<rejectfont> <rejectfont>
<pattern> <pattern>
<patelt name="scalable"> <bool>false</bool> </patelt> <patelt name="scalable"> <bool>false</bool> </patelt>
</pattern> </pattern>
</rejectfont> </rejectfont>
<rejectfont> <rejectfont>
<!-- You don't want ghostscript fonts in your web browsing because of annoying ligatures like ffi --> <!-- You don't want ghostscript fonts in your web browsing because of annoying ligatures like ffi -->
<glob>/usr/share/fonts/gsfonts/*</glob> <glob>/usr/share/fonts/gsfonts/*</glob>
</rejectfont> </rejectfont>
</selectfont> </selectfont>
<!-- preferred aliases --> <!-- preferred aliases -->
<alias> <alias>
<family>serif</family> <family>serif</family>
<prefer> <prefer>
<family>Source Serif Pro</family> <family>Source Serif Pro</family>
<family>Source Sans Pro</family> <family>Source Sans Pro</family>
</prefer> </prefer>
</alias> </alias>
<!-- preferred aliases --> <!-- preferred aliases -->
<alias> <alias>
<family>sans-serif</family> <family>sans-serif</family>
<prefer> <prefer>
<family>Source Sans Pro</family> <family>Source Sans Pro</family>
<family>Source Serif Pro</family> <family>Source Serif Pro</family>
</prefer> </prefer>
</alias> </alias>
<!-- preferred aliases --> <!-- preferred aliases -->
<alias> <alias>
<family>monospace</family> <family>monospace</family>
<prefer> <prefer>
<family>Cascadia Mono</family> <family>Cascadia Mono</family>
<family>Cascadia Code</family> <family>Cascadia Code</family>
</prefer> </prefer>
</alias> </alias>
<!-- Screw it. Force Liberation Mono to be source code pro. --> <!-- Screw it. Force Liberation Mono to be source code pro. -->
<match target="pattern"> <match target="pattern">
<test qual="any" name="family"><string>Liberation Mono</string></test> <test qual="any" name="family"><string>Liberation Mono</string></test>
<edit name="family" mode="assign" binding="same"><string>Cascadia Mono</string></edit> <edit name="family" mode="assign" binding="same"><string>Cascadia Mono</string></edit>
</match> </match>
<!-- Dejavu Sans Mono keeps coming back when I query "monospace". Doesn't happen when I'm using Souce Code Pro but does happen with cascadia... force it to cascadia --> <!-- Dejavu Sans Mono keeps coming back when I query "monospace". Doesn't happen when I'm using Souce Code Pro but does happen with cascadia... force it to cascadia -->
<match target="pattern"> <match target="pattern">
<test qual="any" name="family"><string>monospace</string></test> <test qual="any" name="family"><string>monospace</string></test>
<edit name="family" mode="assign" binding="same"><string>Cascadia Mono</string></edit> <edit name="family" mode="assign" binding="same"><string>Cascadia Mono</string></edit>
</match> </match>
<!-- Disable ligatures in monospace fonts. --> <!-- Disable ligatures in monospace fonts. -->
<match target="font"> <match target="font">
<test name="family" compare="eq" ignore-blanks="true"> <test name="family" compare="eq" ignore-blanks="true">
<string>Cascadia Code</string> <string>Cascadia Code</string>
</test> </test>
<edit name="fontfeatures" mode="append"> <edit name="fontfeatures" mode="append">
<string>liga off</string> <string>liga off</string>
<string>dlig off</string> <string>dlig off</string>
</edit> </edit>
</match> </match>
<!-- Font Display Settings --> <!-- Font Display Settings -->
<match target="font" > <match target="font" >
<edit mode="assign" name="rgba" > <edit mode="assign" name="rgba" >
<const>rgb</const> <const>rgb</const>
</edit> </edit>
</match> </match>
<match target="font" > <match target="font" >
<edit mode="assign" name="hinting" > <edit mode="assign" name="hinting" >
<bool>true</bool> <bool>true</bool>
</edit> </edit>
</match> </match>
<match target="font" > <match target="font" >
<edit mode="assign" name="hintstyle" > <edit mode="assign" name="hintstyle" >
<const>hintslight</const> <const>hintslight</const>
</edit> </edit>
</match> </match>
<match target="font" > <match target="font" >
<edit mode="assign" name="antialias" > <edit mode="assign" name="antialias" >
<bool>true</bool> <bool>true</bool>
</edit> </edit>
</match> </match>
<match target="font" > <match target="font" >
<edit mode="assign" name="lcdfilter" > <edit mode="assign" name="lcdfilter" >
<const>lcddefault</const> <const>lcddefault</const>
</edit> </edit>
</match> </match>
</fontconfig> </fontconfig>
''; '';
}; };
}; };
} }

View File

@ -1,15 +1,22 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
git git
]; ];
home-manager.users.talexander = { pkgs, ... }: { home-manager.users.talexander =
home.file.".gitconfig" = { { pkgs, ... }:
source = ./files/gitconfig_home; {
home.file.".gitconfig" = {
source = ./files/gitconfig_home;
};
}; };
};
} }

View File

@ -1,7 +1,12 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
# Fetch public keys: # Fetch public keys:
# gpg --locate-keys tom@fizz.buzz # gpg --locate-keys tom@fizz.buzz
@ -17,7 +22,12 @@
hideMounts = true; hideMounts = true;
users.talexander = { users.talexander = {
directories = [ directories = [
{ directory = ".gnupg"; user = "talexander"; group = "talexander"; mode = "0700"; } # Local keyring {
directory = ".gnupg";
user = "talexander";
group = "talexander";
mode = "0700";
} # Local keyring
]; ];
}; };
}; };

View File

@ -1,7 +1,12 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
hardware.graphics.enable = true; hardware.graphics.enable = true;
} }

View File

@ -1,7 +1,12 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
# Reset some defaults to start from a minimal more-arch-linux-like state. Think of this like a CSS reset sheet. # Reset some defaults to start from a minimal more-arch-linux-like state. Think of this like a CSS reset sheet.

View File

@ -1,7 +1,12 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pavucontrol pavucontrol

View File

@ -1,213 +1,218 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
let let
sway-config = pkgs.writeTextFile { sway-config = pkgs.writeTextFile {
name = "config"; name = "config";
text = '' text = ''
# Default config for sway # Default config for sway
# #
# Copy this to ~/.config/sway/config and edit it to your liking. # Copy this to ~/.config/sway/config and edit it to your liking.
# #
# Read `man 5 sway` for a complete reference. # Read `man 5 sway` for a complete reference.
### Variables ### Variables
# #
# Logo key. Use Mod1 for Alt. # Logo key. Use Mod1 for Alt.
set $mod Mod4 set $mod Mod4
# set $mod Mod1 # set $mod Mod1
# Home row direction keys, like vim # Home row direction keys, like vim
set $left h set $left h
set $down j set $down j
set $up k set $up k
set $right l set $right l
# Your preferred terminal emulator # Your preferred terminal emulator
set $term ${pkgs.alacritty}/bin/alacritty set $term ${pkgs.alacritty}/bin/alacritty
# Your preferred application launcher # Your preferred application launcher
# Note: it's recommended that you pass the final command to sway # Note: it's recommended that you pass the final command to sway
# set $menu dmenu_path | dmenu | xargs swaymsg exec # set $menu dmenu_path | dmenu | xargs swaymsg exec
set $menu ${pkgs.wofi}/bin/wofi --show drun --gtk-dark set $menu ${pkgs.wofi}/bin/wofi --show drun --gtk-dark
# Do not show a title bar on windows # Do not show a title bar on windows
default_border pixel 2 default_border pixel 2
bindsym $mod+grave exec $term bindsym $mod+grave exec $term
include ${base-hotkeys} include ${base-hotkeys}
include ${display-configs} include ${display-configs}
include ${window-management} include ${window-management}
include ${movement} include ${movement}
include ${disable-focus-follows-mouse} include ${disable-focus-follows-mouse}
include ~/.config/sway/config.d/*.conf include ~/.config/sway/config.d/*.conf
include /etc/sway/config.d/* include /etc/sway/config.d/*
''; '';
}; };
base-hotkeys = pkgs.writeTextFile { base-hotkeys = pkgs.writeTextFile {
name = "base-hotkeys.conf"; name = "base-hotkeys.conf";
text = '' text = ''
### Key bindings ### Key bindings
# #
# Basics: # Basics:
# #
# kill focused window # kill focused window
bindsym $mod+Shift+q kill bindsym $mod+Shift+q kill
# start your launcher # start your launcher
bindsym $mod+Return exec $menu bindsym $mod+Return exec $menu
# Drag floating windows by holding down $mod and left mouse button. # Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod. # Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows. # Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right # Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging. # mouse button for dragging.
floating_modifier $mod normal floating_modifier $mod normal
# reload the configuration file # reload the configuration file
bindsym $mod+Shift+c reload bindsym $mod+Shift+c reload
# exit sway (logs you out of your Wayland session) # exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
''; '';
}; };
display-configs = pkgs.writeTextFile { display-configs = pkgs.writeTextFile {
name = "display-configs.conf"; name = "display-configs.conf";
text = '' text = ''
output 'Unknown 0x095F 0x00000000' scale 1.5 output 'Unknown 0x095F 0x00000000' scale 1.5
output 'BOE 0x095F Unknown' scale 1.5 output 'BOE 0x095F Unknown' scale 1.5
output 'BOE 0x0BCA Unknown' scale 1.5 output 'BOE 0x0BCA Unknown' scale 1.5
''; '';
}; };
window-management = pkgs.writeTextFile { window-management = pkgs.writeTextFile {
name = "window-management.conf"; name = "window-management.conf";
text = '' text = ''
# #
# Layout stuff: # Layout stuff:
# #
# You can "split" the current object of your focus with # You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits # $mod+b or $mod+v, for horizontal and vertical splits
# respectively. # respectively.
bindsym $mod+h splith bindsym $mod+h splith
bindsym $mod+v splitv bindsym $mod+v splitv
# Switch the current container between different layout styles # Switch the current container between different layout styles
bindsym $mod+s layout stacking bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split bindsym $mod+e layout toggle split
# Make the current focus fullscreen # Make the current focus fullscreen
bindsym $mod+f fullscreen bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode # Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area # Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle bindsym $mod+space focus mode_toggle
# move focus to the parent container # move focus to the parent container
bindsym $mod+a focus parent bindsym $mod+a focus parent
# #
# Scratchpad: # Scratchpad:
# #
# Sway has a "scratchpad", which is a bag of holding for windows. # Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later. # You can send windows there and get them back later.
# Move the currently focused window to the scratchpad # Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window. # Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them. # If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show bindsym $mod+minus scratchpad show
# #
# Resizing containers: # Resizing containers:
# #
mode "resize" { mode "resize" {
# left will shrink the containers width # left will shrink the containers width
# right will grow the containers width # right will grow the containers width
# up will shrink the containers height # up will shrink the containers height
# down will grow the containers height # down will grow the containers height
bindsym $left resize shrink width 10px bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px bindsym $right resize grow width 10px
# ditto, with arrow keys # ditto, with arrow keys
bindsym Left resize shrink width 10px bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px bindsym Right resize grow width 10px
# return to default mode # return to default mode
bindsym Return mode "default" bindsym Return mode "default"
bindsym Escape mode "default" bindsym Escape mode "default"
} }
bindsym $mod+r mode "resize" bindsym $mod+r mode "resize"
''; '';
}; };
movement = pkgs.writeTextFile { movement = pkgs.writeTextFile {
name = "movement.conf"; name = "movement.conf";
text = '' text = ''
# #
# Moving around: # Moving around:
# #
# Move your focus around # Move your focus around
# bindsym $mod+$left focus left # bindsym $mod+$left focus left
# bindsym $mod+$down focus down # bindsym $mod+$down focus down
# bindsym $mod+$up focus up # bindsym $mod+$up focus up
# bindsym $mod+$right focus right # bindsym $mod+$right focus right
# or use $mod+[up|down|left|right] # or use $mod+[up|down|left|right]
bindsym $mod+Left focus left bindsym $mod+Left focus left
bindsym $mod+Down focus down bindsym $mod+Down focus down
bindsym $mod+Up focus up bindsym $mod+Up focus up
bindsym $mod+Right focus right bindsym $mod+Right focus right
# _move_ the focused window with the same, but add Shift # _move_ the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right bindsym $mod+Shift+$right move right
# ditto, with arrow keys # ditto, with arrow keys
bindsym $mod+Shift+Left move left bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right bindsym $mod+Shift+Right move right
# #
# Workspaces: # Workspaces:
# #
# switch to workspace # switch to workspace
bindsym $mod+1 workspace 1 bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2 bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3 bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4 bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5 bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6 bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7 bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8 bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9 bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10 bindsym $mod+0 workspace 10
# move focused container to workspace # move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1 bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2 bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3 bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4 bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5 bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6 bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7 bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8 bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9 bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10 bindsym $mod+Shift+0 move container to workspace 10
# Note: workspaces can have any name you want, not just numbers. # Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default. # We just use 1-10 as the default.
''; '';
}; };
disable-focus-follows-mouse = pkgs.writeTextFile { disable-focus-follows-mouse = pkgs.writeTextFile {
name = "disable-focus-follows-mouse.conf"; name = "disable-focus-follows-mouse.conf";
text = '' text = ''
# Disable focus following mouse # Disable focus following mouse
focus_follows_mouse no focus_follows_mouse no
''; '';
}; };
in in
{ {
imports = []; imports = [ ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
alacritty alacritty

View File

@ -1,7 +1,12 @@
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
imports = []; imports = [ ];
boot.zfs.devNodes = "/dev/disk/by-partuuid"; boot.zfs.devNodes = "/dev/disk/by-partuuid";