Initial Commit
This commit is contained in:
commit
eb49c566e1
|
@ -0,0 +1 @@
|
|||
**/result
|
|
@ -0,0 +1,62 @@
|
|||
# Communications software
|
||||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
# Pull in personal overlay
|
||||
# nixpkgs.overlays = [ (import ../../overlays/personal/overlay.nix) ];
|
||||
|
||||
environment.systemPackages = with pkgs;
|
||||
let
|
||||
## Wayland workaround chromium desktop items
|
||||
# Facebook messenger
|
||||
fbChromeDesktopItem = pkgs.makeDesktopItem {
|
||||
name = "messenger-chrome";
|
||||
desktopName = "Messenger (chrome)";
|
||||
exec = "${pkgs.chromium}/bin/chromium --enable-features=UseOzonePlatform -ozone-platform=wayland --app=\"https://messenger.com\"";
|
||||
terminal = false;
|
||||
};
|
||||
# Teams
|
||||
teamsItem = pkgs.makeDesktopItem {
|
||||
name = "teams-wayland";
|
||||
desktopName = "Teams (Wayland)";
|
||||
exec = "${pkgs.chromium}/bin/chromium --enable-features=UseOzonePlatform -ozone-platform=wayland --app=\"https://teams.microsoft.com\"";
|
||||
terminal = false;
|
||||
};
|
||||
## Pass wayland options to existing applications
|
||||
signalWaylandItem = pkgs.makeDesktopItem {
|
||||
name = "signal-desktop-wayland";
|
||||
desktopName = "Signal (Wayland)";
|
||||
exec = "${pkgs.signal-desktop}/bin/signal-desktop --enable-features=UseOzonePlatform -ozone-platform=wayland";
|
||||
terminal = false;
|
||||
icon = "signal-desktop";
|
||||
type = "Application";
|
||||
};
|
||||
zulipWayland = pkgs.makeDesktopItem {
|
||||
name = "zulip-wayland";
|
||||
desktopName = "Zulip (Wayland)";
|
||||
exec = "${unstable.zulip}/bin/zulip --enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||||
terminal = false;
|
||||
icon = "zulip";
|
||||
type = "Application";
|
||||
};
|
||||
in
|
||||
[
|
||||
# Discord
|
||||
discord
|
||||
unstable.betterdiscordctl
|
||||
# Use unstable element for latest features
|
||||
unstable.element-desktop-wayland
|
||||
# Desktop signal client
|
||||
signal-desktop
|
||||
signalWaylandItem
|
||||
# Desktop telegram client
|
||||
tdesktop
|
||||
# zulip
|
||||
unstable.zulip
|
||||
zulipWayland
|
||||
# chromium
|
||||
chromium
|
||||
# Wayland workaround packages
|
||||
fbChromeDesktopItem
|
||||
teamsItem
|
||||
];
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
# Core development libraries
|
||||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Full version of git
|
||||
unstable.gitFull
|
||||
# Git addons
|
||||
git-secret
|
||||
unstable.git-lfs
|
||||
# General development requirements
|
||||
python3Full
|
||||
cmake
|
||||
gcc
|
||||
unstable.libvterm-neovim
|
||||
libtool
|
||||
binutils
|
||||
clang
|
||||
gnumake
|
||||
nixpkgs-fmt
|
||||
# jq for interacting with JSON
|
||||
jq
|
||||
# Direnv for nix-shell niceness
|
||||
direnv
|
||||
];
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
# Utilities for developing in rust
|
||||
{ config, pkgs, unstable, fenix, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Use rustup to get the compiler
|
||||
rustup
|
||||
# Install the latest rust analyzer
|
||||
fenix.rust-analyzer
|
||||
# Sccache and lld for faster builds
|
||||
sccache
|
||||
lld_12
|
||||
# Misc cargo utilites
|
||||
cargo-binutils # Allow invoking the llvm tools included with the toolchain
|
||||
cargo-edit # Command line Cargo.toml manipulation
|
||||
cargo-asm # Dump the generated assembly
|
||||
cargo-fuzz # front end for fuzz testing rust
|
||||
cargo-license # Audit the licenses of dependencies
|
||||
cargo-criterion # Benchmarking front end
|
||||
cargo-audit # Check dependencies for known CVEs
|
||||
cargo-bloat # Find out what's taking up space in the executable
|
||||
cargo-udeps # Find unused dependencies
|
||||
cargo-expand # Dump expanded macros
|
||||
unstable.cargo-tarpaulin # Code coverage
|
||||
cargo-play # Quickly execute code outside of a crate
|
||||
];
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
# Install emacs
|
||||
environment.systemPackages = with pkgs; [
|
||||
unstable.emacsPgtkGcc
|
||||
];
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
# Image editing applications
|
||||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
# RawTherapee for raw editing
|
||||
unstable.rawtherapee
|
||||
# Gimp for complex editing
|
||||
unstable.gimp-with-plugins
|
||||
# Krita for drawing
|
||||
unstable.krita
|
||||
# Pinta for basic image editing
|
||||
unstable.pinta
|
||||
# Command line tools for image conversion and handling
|
||||
imagemagickBig
|
||||
];
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
# Media players and other applications
|
||||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
# imports = [ ../../sensitive/mopidy.nix ];
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Spotify
|
||||
spotify
|
||||
# Latest version of vlc
|
||||
unstable.vlc
|
||||
# Plex client
|
||||
plex-media-player
|
||||
# OBS studio for screen recording
|
||||
unstable.obs-studio
|
||||
];
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
# Enable synthing service and tray
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
user = "nathan";
|
||||
configDir = "/home/nathan/.config/syncthing";
|
||||
};
|
||||
# Install synthing and syncthing-tray
|
||||
environment.systemPackages = with pkgs; [
|
||||
syncthing
|
||||
unstable.syncthingtray
|
||||
];
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
# Basic, must have, command-line utilities
|
||||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Basic command line utilities
|
||||
wget
|
||||
tmux
|
||||
nano
|
||||
unzip
|
||||
any-nix-shell
|
||||
htop
|
||||
# Spell check
|
||||
hunspell
|
||||
hunspellDicts.en-us
|
||||
# Rust rewrites of common shell utilities
|
||||
unstable.starship
|
||||
exa
|
||||
bat
|
||||
fd
|
||||
sd
|
||||
du-dust
|
||||
ripgrep
|
||||
tokei
|
||||
unstable.procs
|
||||
hyperfine
|
||||
unstable.bottom
|
||||
# Pandoc for documentation
|
||||
unstable.pandoc
|
||||
# For nslookup
|
||||
dnsutils
|
||||
# Feh image viewer
|
||||
feh
|
||||
];
|
||||
}
|
|
@ -0,0 +1,99 @@
|
|||
{
|
||||
"nodes": {
|
||||
"emacs": {
|
||||
"locked": {
|
||||
"lastModified": 1640083461,
|
||||
"narHash": "sha256-e3HJoCajImuDWOk6nnb6nJNzh0AD6PjL+Er4gzGT7ss=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "043268ac469364214a02918717d74d9a0cc1af3d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs-unstable"
|
||||
],
|
||||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1640067945,
|
||||
"narHash": "sha256-V3aybCE3rPXraX8sSzamdsGuIuTQI77tliyyufZR+mU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "433679b1d41fc1d40a2f6382305f4a10ccc57457",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1639989170,
|
||||
"narHash": "sha256-REf0rqdJs6XIPo/zc/FhJMecggjEXi45QyiV207y30Y=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "86453059bf8312f0f5bf1fe8a2f52da2be664489",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-21.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1639966735,
|
||||
"narHash": "sha256-FmVGFiyqE+pjQUTCTY0H75hqrnBnbEf3VVRB4dsd4KI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d87b72206aadebe6722944f541f55d33fd7046fb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"emacs": "emacs",
|
||||
"fenix": "fenix",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||
}
|
||||
},
|
||||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1639175515,
|
||||
"narHash": "sha256-Yj38u9BpKfyGrcSEaoSEnOns885xn/Ask6lR5rsxS8k=",
|
||||
"owner": "rust-analyzer",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "d03397fe1173eaeb2e04c9e55ac223289e7e08ee",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rust-analyzer",
|
||||
"ref": "nightly",
|
||||
"repo": "rust-analyzer",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
description = "Nathan's system configurations";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.11";
|
||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
fenix = {
|
||||
url = "github:nix-community/fenix";
|
||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||
};
|
||||
emacs = {
|
||||
url = "github:nix-community/emacs-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, nixpkgs-unstable, fenix, emacs }:
|
||||
|
||||
{
|
||||
nixosConfigurations.levitation = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
unstable = import nixpkgs-unstable {
|
||||
config = { allowUnfree = true; };
|
||||
overlays = [ emacs.overlay ];
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
fenix = fenix.packages.x86_64-linux;
|
||||
};
|
||||
modules = [
|
||||
./hardware/levitation.nix
|
||||
./modules/user.nix
|
||||
./modules/common.nix
|
||||
./modules/audio.nix
|
||||
./modules/sway.nix
|
||||
./modules/fonts.nix
|
||||
./modules/gpg.nix
|
||||
./modules/logitech.nix
|
||||
./modules/qemu.nix
|
||||
./modules/docker.nix
|
||||
./modules/ssh.nix
|
||||
./applications/utils-core.nix
|
||||
./applications/communications.nix
|
||||
./applications/devel-core.nix
|
||||
./applications/devel-rust.nix
|
||||
./applications/emacs.nix
|
||||
./applications/image-editing.nix
|
||||
./applications/media.nix
|
||||
./applications/syncthing.nix
|
||||
({ pkgs, ... }: {
|
||||
## Boot, drivers, and host name
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
# Enable AMD gpu drivers early
|
||||
boot.initrd.kernelModules = [ "amdgpu" ];
|
||||
# Use the zen kernel
|
||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||
# Define the hostname, enable dhcp
|
||||
networking = {
|
||||
hostName = "levitation";
|
||||
domain = "mccarty.io";
|
||||
useDHCP = false;
|
||||
interfaces.enp5s0.useDHCP = true;
|
||||
};
|
||||
## System specific configuration
|
||||
programs = {
|
||||
steam.enable = true;
|
||||
adb.enable = true;
|
||||
};
|
||||
## Left over uncategorized packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
firefox-wayland
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{
|
||||
device = "/dev/mapper/crypt-pv";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=root" ];
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."crypt-pv".device = "/dev/disk/by-uuid/15e9f417-b35a-40fe-a066-595be13cf230";
|
||||
|
||||
fileSystems."/home" =
|
||||
{
|
||||
device = "/dev/mapper/crypt-pv";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=home" ];
|
||||
};
|
||||
|
||||
fileSystems."/nix" =
|
||||
{
|
||||
device = "/dev/mapper/crypt-pv";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=nix" ];
|
||||
};
|
||||
|
||||
fileSystems."/etc" =
|
||||
{
|
||||
device = "/dev/mapper/crypt-pv";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=etc" ];
|
||||
};
|
||||
|
||||
fileSystems."/var" =
|
||||
{
|
||||
device = "/dev/mapper/crypt-pv";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=var" ];
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{
|
||||
device = "/dev/disk/by-uuid/1425-B41E";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[{
|
||||
device = "/dev/disk/by-partuuid/f9d26ecd-7df5-48ad-bc19-b9ac4e91b0ee";
|
||||
randomEncryption = {
|
||||
cipher = "aes-xts-plain64";
|
||||
enable = true;
|
||||
source = "/dev/random";
|
||||
};
|
||||
}];
|
||||
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
## Setup pipewire, including bluetooth audio
|
||||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
# Disable normal audio subsystem explicitly
|
||||
sound.enable = false;
|
||||
# Turn on rtkit, so that audio processes can be upgraded to real time
|
||||
security.rtkit.enable = true;
|
||||
# Turn on pipewire
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
# Turn on all the emulation layers
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
# Turn on the media session manager, and setup bluetooth
|
||||
media-session = {
|
||||
enable = true;
|
||||
# Configure bluetooth support
|
||||
config.bluez-monitor.rules = [
|
||||
{
|
||||
# Matches all cards
|
||||
matches = [{ "device.name" = "~bluez_card.*"; }];
|
||||
actions = {
|
||||
"update-props" = {
|
||||
"bluez5.reconnect-profiles" = [ "a2dp_sink" ];
|
||||
# SBC-XQ is not expected to work on all headset + adapter combinations.
|
||||
"bluez5.sbc-xq-support" = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
matches = [
|
||||
# Matches all sources
|
||||
{ "node.name" = "~bluez_input.*"; }
|
||||
# Matches all outputs
|
||||
{ "node.name" = "~bluez_output.*"; }
|
||||
];
|
||||
actions = {
|
||||
"node.pause-on-idle" = false;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
# Turn on bluetooth services
|
||||
services.blueman.enable = true;
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
package = pkgs.bluezFull;
|
||||
};
|
||||
# Add pulse audio packages, but do not enable them
|
||||
environment.systemPackages = [
|
||||
pkgs.pulseaudio
|
||||
];
|
||||
# Add noisetorch for microphone noise canceling
|
||||
programs.noisetorch = {
|
||||
enable = true;
|
||||
# Use latest noisetorch, its a fast moving target
|
||||
package = unstable.noisetorch;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# Turn on flakes support (from within a flake, lamo)
|
||||
nix = {
|
||||
package = pkgs.nixFlakes;
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
};
|
||||
# Turn on compressed memory swap
|
||||
zramSwap = {
|
||||
enable = true;
|
||||
algorithm = "zstd";
|
||||
memoryPercent = 25;
|
||||
};
|
||||
# Automatically optimize and garbage collect the store
|
||||
nix = {
|
||||
autoOptimiseStore = true;
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
# Enable docker and use unstable version
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
package = unstable.docker;
|
||||
# Automatically prune to keep things lean
|
||||
autoPrune.enable = true;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
fonts.fonts = with pkgs; [
|
||||
## Monospace Fonts
|
||||
# FiraCode with nerd-fonts patch, as well as fira-code symbols for emacs
|
||||
(nerdfonts.override { fonts = [ "FiraCode" ]; })
|
||||
fira-code-symbols
|
||||
# Proportional
|
||||
roboto
|
||||
liberation_ttf
|
||||
noto-fonts
|
||||
];
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
# Configure gpg with yubikey support
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
# Setup environment for gpg agent
|
||||
environment.shellInit = ''
|
||||
export GPG_TTY="$(tty)"
|
||||
gpg-connect-agent /bye
|
||||
export SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh"
|
||||
'';
|
||||
|
||||
environment.sessionVariables = {
|
||||
SSH_AUTH_SOCK = "/run/user/1000/gnupg/S.gpg-agent.ssh";
|
||||
};
|
||||
|
||||
programs = {
|
||||
# Disable ssh-agent, the gpg-agent will fill in
|
||||
ssh.startAgent = false;
|
||||
# Enable gpg-agent with ssh support
|
||||
gnupg.agent = {
|
||||
enable = true;
|
||||
enableSSHSupport = true;
|
||||
enableExtraSocket = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Enable ykpersonalize to work
|
||||
services.udev.packages = [ pkgs.yubikey-personalization ];
|
||||
# Enable smartcard service
|
||||
services.pcscd.enable = true;
|
||||
|
||||
# install gnupg and yubikey personalization
|
||||
environment.systemPackages = with pkgs; [
|
||||
gnupg
|
||||
yubikey-personalization
|
||||
];
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
hardware.logitech.wireless = {
|
||||
enable = true;
|
||||
enableGraphical = true;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
# Setup quem/libvirt
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
# Enable the kernel modules
|
||||
boot.kernelModules = [ "kvm-amd" "kvm-intel" ];
|
||||
# Enable libvirt
|
||||
virtualisation.libvirtd.enable = true;
|
||||
# Install virt-manager
|
||||
environment.systemPackages = with pkgs; [
|
||||
virtmanager
|
||||
];
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 22 ];
|
||||
allowedUDPPorts = [ 22 ];
|
||||
};
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
StreamLocalBindUnlink yes
|
||||
'';
|
||||
listenAddresses = [
|
||||
{
|
||||
addr = "0.0.0.0";
|
||||
port = 22;
|
||||
}
|
||||
];
|
||||
permitRootLogin = "no";
|
||||
passwordAuthentication = false;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
## Enable and setup SwayWM
|
||||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
# Turn on GDM for login
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
autorun = true;
|
||||
displayManager.gdm = {
|
||||
enable = true;
|
||||
wayland = true;
|
||||
};
|
||||
# Enable plasma for the applications
|
||||
desktopManager.plasma5.enable = true;
|
||||
};
|
||||
# Setup drivers
|
||||
hardware.opengl = {
|
||||
# Enable vulkan
|
||||
driSupport = true;
|
||||
# Force vulkan drivers
|
||||
extraPackages = [
|
||||
pkgs.amdvlk
|
||||
];
|
||||
# Same as above, but enable 32 bit legacy support (for games)
|
||||
driSupport32Bit = true;
|
||||
extraPackages32 = [
|
||||
pkgs.driversi686Linux.amdvlk
|
||||
];
|
||||
};
|
||||
# Basic packages that are effectively required for a graphical system
|
||||
environment.systemPackages = with pkgs; [
|
||||
# GTK Theming
|
||||
gtk-engine-murrine
|
||||
gtk_engines
|
||||
gsettings-desktop-schemas
|
||||
lxappearance
|
||||
kde-gtk-config
|
||||
];
|
||||
# Enable QT themeing
|
||||
programs.qt5ct.enable = true;
|
||||
# Enable and configure sway itself
|
||||
programs.sway = {
|
||||
enable = true;
|
||||
# Enable the wrapper for gtk applications
|
||||
wrapperFeatures.gtk = true;
|
||||
# Install some applications required for sway to work how I want
|
||||
extraPackages = with pkgs; [
|
||||
# Unstable waybar, its a fast moving target
|
||||
unstable.waybar
|
||||
# Locking and display management
|
||||
wdisplays
|
||||
swaylock-effects
|
||||
swayidle
|
||||
# Clipboard
|
||||
wl-clipboard
|
||||
# Notifications
|
||||
mako
|
||||
# Terminal
|
||||
alacritty
|
||||
# glib for sound stuff
|
||||
glib
|
||||
# Glpaper for the background
|
||||
glpaper
|
||||
# Screenshots
|
||||
sway-contrib.grimshot
|
||||
];
|
||||
extraSessionCommands = ''
|
||||
# Make qt theming work
|
||||
export QT_QPA_PLATFORMTHEME="qt5ct"
|
||||
# Make pipewire present a pulse audio tcp port
|
||||
pactl load-module module-native-protocol-tcp
|
||||
'';
|
||||
};
|
||||
|
||||
# Enable the xdg-portal
|
||||
xdg = {
|
||||
portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-gtk
|
||||
];
|
||||
gtkUsePortal = true;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
# Contains general user environment configuration
|
||||
{ config, pkgs, unstable, ... }:
|
||||
{
|
||||
# Disable mutable users, force everything to go through the flake
|
||||
users.mutableUsers = false;
|
||||
|
||||
# Set time zone
|
||||
time.timeZone = "America/New_York";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
keyMap = "us";
|
||||
};
|
||||
|
||||
# enable sudo
|
||||
security.sudo.enable = true;
|
||||
|
||||
# Enable fish as a login shell
|
||||
environment.shells = [ pkgs.bashInteractive unstable.fish ];
|
||||
users.users.nathan = {
|
||||
isNormalUser = true;
|
||||
home = "/home/nathan";
|
||||
description = "Nathan McCarty";
|
||||
extraGroups = [ "wheel" "networkmanager" "audio" "docker" "libvirtd" "uinput" "adbusers" ];
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRs6zVljIlQEZ8F+aEBqqbpeFJwCw3JdveZ8TQWfkev cardno:000615938515"
|
||||
];
|
||||
shell = unstable.fish;
|
||||
hashedPassword = "$6$ShBAPGwzKZuB7eEv$cbb3erUqtVGFo/Vux9UwT2NkbVG9VGCxJxPiZFYL0DIc3t4GpYxjkM0M7fFnh.6V8MoSKLM/TvOtzdWbYwI58.";
|
||||
};
|
||||
|
||||
# Install general use packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
# cachix for nix cache management
|
||||
cachix
|
||||
# Install our shell of choice
|
||||
unstable.fish
|
||||
];
|
||||
}
|
Loading…
Reference in New Issue