refactoring

This commit is contained in:
Aether 2022-04-20 09:53:28 +01:00
parent 7ac98e510c
commit affdf52f23
37 changed files with 274 additions and 99 deletions

View File

@ -24,6 +24,11 @@
command = "rnix-lsp";
filetypes = [ "nix" ];
};
zig = {
command = "zls";
filetypes = [ "zig" ];
};
};
"yank.highlight.duration" = 700;

View File

@ -88,23 +88,6 @@
"type": "github"
}
},
"meson": {
"flake": false,
"locked": {
"lastModified": 1640155612,
"narHash": "sha256-XrEIlf0W8mKEa97Uyc0w/187KBGEZOD+dJFNsn3UeNg=",
"owner": "mesonbuild",
"repo": "meson",
"rev": "06aad5233e6bec97bfe21ae79c85aa7171089d3b",
"type": "github"
},
"original": {
"owner": "mesonbuild",
"ref": "0.60",
"repo": "meson",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1639986101,
@ -208,28 +191,10 @@
"inputs": {
"agenix": "agenix",
"home-manager": "home-manager",
"meson": "meson",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"polymc": "polymc",
"sway-borders": "sway-borders"
}
},
"sway-borders": {
"flake": false,
"locked": {
"lastModified": 1640037473,
"narHash": "sha256-gCdnim7excF11GEoni5YbIGTWSIx+wjHc8NO8lVNFts=",
"owner": "fluix-dev",
"repo": "sway-borders",
"rev": "5f4162f449b19f6d198b365fc6d3dd0febc065e2",
"type": "github"
},
"original": {
"owner": "fluix-dev",
"repo": "sway-borders",
"type": "github"
"polymc": "polymc"
}
}
},

View File

@ -29,11 +29,6 @@
asyncrun-vim.url = "github:skywind3000/asyncrun.vim";
asyncrun-vim.flake = false;
*/
meson.url = "github:mesonbuild/meson/0.60";
meson.flake = false;
sway-borders.url = "github:fluix-dev/sway-borders";
sway-borders.flake = false;
# blender-30.url = "github:blender/blender/blender-v3.0-release";
# blender-30.flake = false;
@ -59,15 +54,11 @@
packages."${system}" = mapModules ./packages (p: pkgs.callPackage p {});
overlay = final: prev: {
_ = self.packages."${system}";
# meson = inputs.meson;
# sway-unwrapped = inputs.sway-borders;
# blender = inputs.blender-30;
unstable = mkPkgs nixpkgs-unstable [];
};
overlays = mapModules ./overlays import;
nixosModules = mapModulesRec ./modules import;
nixosConfigurations = mapModules ./hosts (mkHost system);
devShell."${system}" =
import ./shell.nix { inherit pkgs; };
devShell."${system}" = import ./shell.nix { inherit pkgs; };
};
}

View File

@ -14,7 +14,7 @@
defaultUsers = {
aether = {
packages = [ ];
shell = "zsh";
shell = "fish";
extraGroups = [ "wheel" ];
};
oatmealine = {
@ -22,6 +22,11 @@
shell = "zsh";
extraGroups = [ "wheel" ];
};
skye = {
packages = [ ];
shell = "fish";
extraGroups = [ "wheel" ];
};
};
keyboard = {
@ -49,6 +54,11 @@
enable = true;
site = "git.oat.zone";
};
wireguard = {
enable = true;
server = true;
interfaces = mkMerge (import ./interfaces);
};
};
};

View File

@ -0,0 +1,47 @@
{ config, lib, pkgs, inputs, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
initrd.kernelModules = [ ];
kernelPackages = pkgs.linuxPackages_hardened;
kernelModules = [ "kvm-intel" ];
loader = {
systemd-boot = {
enable = true;
configurationLimit = 10;
};
efi.canTouchEfiVariables = true;
};
};
modules.hardware.fs = {
enable = true;
ssd.enable = true;
};
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/?";
fsType = "?";
options = [ "defaults" "noatime" "nodiratime" ];
};
"/etc/dotfiles" = {
device = "/dev/disk/by-uuid/?";
fsType = "f2fs";
options = [ "defaults" "noatime" "nodiratime" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/?";
fsType = "vfat";
};
};
}

View File

@ -0,0 +1,3 @@
[
]

View File

@ -1,11 +1,14 @@
let
userAether = "<...>";
userOatmealine = "<...>";
subsurface.Access = "<...>";
void-defragmented.Access = "<...>";
userSkye.Access = "<...>";
in {
"aether" = {
"userAether.age".publicKeys = [ userAether ];
};
"oatmealine" = {
"userOatmealine.age".publicKeys = [ userOatmealine ];
};
"subsurface.age".publicKeys = attrValues subsurface;
"subsurface.age".owner = "aether";
"void-defragmented.age".publicKeys = attrValues void-defragmented;
"void-defragmented.age".owner = "oatmealine";
"skye.age".publicKeys = attrValues userSkye;
"skye.age".owner = "skye";
}

View File

@ -7,7 +7,7 @@
defaultUsers = {
aether = {
packages = with pkgs; [ htop curl mpc_cli gammastep discord obs-studio youtube-dl inkscape audacity dolphin firefox-wayland wl-clipboard steam bitwarden blender neofetch krita celluloid imv firefox zathura ];
packages = with pkgs; with pkgs._; [ htop discord youtube-dl inkscape audacity dolphin steam bitwarden blender neofetch krita celluloid imv firefox zathura zip unzip ffmpeg pijul pavucontrol killall ripcord steam-run appimage-run openjdk11 ];
uid = 1024;
isNormalUser = true;
shell = "zsh";
@ -44,11 +44,9 @@
neovim.enable = true;
codium.enable = true;
};
/*
gaming = {
minecraft.enable = true;
};
*/
};
dev = {
llvm.enable = true;
@ -57,14 +55,16 @@
version = "ghc902";
};
c.enable = true;
rust.enable = true;
zig.enable = true;
};
services = {
ssh.enable = true;
mpd = {
enable = true;
# TODO: Make this more dynamic?
musicDir = "/home/aether/Music";
user = "aether";
musicDir = "/home/aether/Music";
user = "aether";
};
geoclue2.enable = true;
};

View File

@ -110,6 +110,16 @@
device = "/run/media/aether/bf2d91f1-a6b3-4629-8755-76301b3f6f56/home delta/home delta delta/Music";
options = [ "bind" ];
};
"/home/aether/Textures" = {
device = "/run/media/aether/bf2d91f1-a6b3-4629-8755-76301b3f6f56/home\ delta/Textures";
options = [ "bind" ];
};
"/home/aether/Porn" = {
device = "/run/media/aether/bf2d91f1-a6b3-4629-8755-76301b3f6f56/home\ delta/Porn";
options = [ "bind" ];
};
};
swapDevices = [{ device = "/dev/disk/by-uuid/e4a7edca-2c4e-4979-8368-377bc067b8bd"; }];

Binary file not shown.

View File

@ -1,5 +1,5 @@
let
firepitAccess = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoaiYQuYPYO217IA8rGIVvbQCoVaqERGAGevq+WxutrcdUZraa2Zp44GEZEmNFVNlgm2FtkOV42vqwnx2gfkHmuYA38Cov9jbxtIv4ytaWve+UniNBtUF9De0ULqKTUErk5iBX7gBpg4hY2+GVSSrYJ4KZIwDbA6uNj7PTyQDSZrGfQMbFR52HEXttehg7/vMXUVwhnakpKk3v21bCQRNzc3K9dcFUDSTH1uOE1oEfKhGp2zHtnknLDlMIhGQcpwfOKPqURsbzXpln1EyEMlrudjMRDg/ZKsKxYuW0Lnbxqqifgm9ERvSeq+517j3QA2Z6EWLY5yejgcDiyDy8bvqV";
firepitAccess = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4lh7dN9Ohh2/WoGiZ4WlpVb01YPNto/9ungOAk6TH+65wkxMjY4a+1OsO8Znguj46tXVErn8xv2ZVX0K7ql0hzypPkP2Dvvim99tz6FKSf9Nwj6RRtIKPoYkJjtGYAqLJl8JPy50HkFXkDVQ/z4d4iwpneSODIJdkUFSzZR91jz9FX+4t2h+2xtuuRDI43+gHRqvwPP8XaE0srtMzZoQDUBKhwOynoo2vZnyd3O7kkpD9T+jzYEeLKppHdaoYN5UxZ4L0xnig0WFZiBH36/YGXA8gT56FHRw5GKhwWwfSvliEw63/6IxiVZBuM1Mj7syg2Ndhhmmay05QqvyTrdHA9veyzJG5l0HlnCmXe7ss9lVQnxxPfbHbnDZUhH1ax01sQUeTK3Bs3AvbsTLyXBbd4NCY5ovz85MqzM/Q84B1zX1i8KbFEBh0xkumNsPAXzY8ar+tq5rFa23bY9qF4s6CMv++JEXSJJufcf3BS2dBlw0lTGBn7UEO9FHHsU3xKCc= aether@aether";
in {
"firepitAccess.age".publicKeys = [ firepitAccess ];
"firepitAccess.age".owner = "aether";

View File

@ -15,8 +15,8 @@ in rec {
in
if type == "directory" then
nameValuePair name (dirfn path)
# else if type == "regular" && name != "default.nix" && hasSuffix ".nix" name then
else if type == "regular" && hasSuffix ".nix" name then
else if type == "regular" && name != "default.nix" && hasSuffix ".nix" name then
# else if type == "regular" && hasSuffix ".nix" name then
nameValuePair (removeSuffix ".nix" name) (fn path)
else
nameValuePair "" null

View File

@ -8,19 +8,17 @@ let
secretsDir = "${toString ../hosts}/${config.networking.hostName}/secrets";
secretsFile = "${secretsDir}/secrets.nix";
in {
/*
imports = [ agenix.nixosModules.age ];
environment.systemPackages = [ agenix.defaultPackage.x86_64-linux ];
age = {
secrets = mkIf (pathExists secretsFile) (mapAttrs (n: o: {
file = "${secretsDir}/" + n;
owner = o.owner;
}) (import secretsFile));
identityPaths = options.age.identityPaths.default ++ (filter pathExists [
# ".ssh/id_ed25519"
# ".ssh/id_rsa"
]);
secrets = mkMerge (map (x: {"x".file = "${secretsDir}/${x}";}) (attrNames (import secretsFile)));
identityPaths = options.age.identityPaths.default ++ (foldr (l: r: l ++ r) [] (map (user:
let
d = "/home/${user}/.ssh";
fs = map (f: d + "/" + f)
(filter (f: (f != "known_hosts") && (f != "*.old"))
(attrNames (readDir d)));
in fs) (attrNames config.defaultUsers)));
};
*/
}

View File

@ -13,12 +13,10 @@ in {
};
config = mkIf cfg.enable {
/*
user.packages = if wayland then (with pkgs; [
firefox-wayland
]) else (with pkgs; [
firefox
]);
*/
};
}

View File

@ -13,10 +13,10 @@ in {
config = mkIf cfg.enable {
modules.services.mpd.enable = true;
/*
user.packages = with pkgs; [
mpc_cli
];
*/
};
}

View File

@ -12,10 +12,8 @@ in {
};
config = mkIf cfg.enable {
/*
user.packages = with pkgs; [
obs-studio
];
*/
};
}

View File

@ -41,7 +41,9 @@ in {
ghcid
fzf-vim
# inputs.fzf-hoogle-vim
] else [ ]);
] else if config.modules.dev.zig.enable then with pkgs.vimPlugins; [
zig-vim
] else []);
viAlias = true;
vimAlias = true;

View File

@ -13,6 +13,6 @@ in {
};
config = mkIf cfg.enable {
# user.packages = [ polymc ];
environment.systemPackages = with pkgs; [ polymc ];
};
}

28
modules/desktop/river.nix Normal file
View File

@ -0,0 +1,28 @@
{ options, config, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.river;
audioSupport = config.modules.hardware.audio.enable;
in {
options.modules.desktop.river = {
enable = mkOption {
type = tyoes.bool;
default = false;
description = "Enables the river wayland compositor.";
};
menu = mkOption {
type = types.str;
default = "nwggrid";
description = "Which application launch menu to use. Defaults to nwggrid.";
};
term = mkOption {
type = types.str;
default = "alacritty";
description = "Which terminal river should use. Defaults to alacritty.";
};
};
config = mkIf cfg.enable {
};
}

View File

@ -31,7 +31,6 @@ in {
extraPackages = with pkgs; [ xwayland ];
};
/*
user.packages = with pkgs; [
grim
slurp
@ -40,10 +39,10 @@ in {
autotiling
brightnessctl
wdisplays
gammastep
] ++ (if audioSupport then (with pkgs; [
playerctl
]) else [ ]);
*/
xdg.portal = {
enable = true;
@ -101,6 +100,7 @@ in {
bg = "${config.modules.theme.wallpaper} fill";
scale = "1.5";
};
output."DP-4".bg = "${config.modules.theme.wallpaper} fill";
keybindings = let mod = config.home._.wayland.windowManager.sway.config.modifier; scProc = "wl-copy -t image/png && notify-send \"Screenshot Taken\""; in {
# "${mod}+l" = "exec lock";
"${mod}+q" = "reload";
@ -131,7 +131,9 @@ in {
"${mod}+Shift+9" = "move container to workspace 9";
"${mod}+Shift+0" = "move container to workspace 10";
"Print" = "exec grim -g \"$(slurp -d)\" - | ${scProc}";
"Print" = "exec grim -g \"$(slurp -d)\" - | ${scProc}";
"XF86AudioPlay" = "playerctl play-pause";
"Shift+XF86AudioPlay" = "playerctl loop";
};
};
extraSessionCommands = ''

View File

@ -13,7 +13,7 @@ in {
};
config = mkIf cfg.enable {
environment.systemPackages = if !withLLVM then with pkgs; [
user.packages = if !withLLVM then with pkgs; [
gcc
] else with pkgs; [
clang_12

View File

@ -20,7 +20,7 @@ in {
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs.haskell.packages."${cfg.version}"; [
user.packages = with pkgs.haskell.packages."${cfg.version}"; [
ghc
cabal-install
] ++ config.modules.dev.haskell.packages;

22
modules/dev/rust.nix Normal file
View File

@ -0,0 +1,22 @@
{ pkgs, lib, config, options, ... }:
with lib;
let
cfg = config.modules.dev.rust;
in {
options.modules.dev.rust = {
enable = mkOption {
type = types.bool;
default = false;
};
};
config = mkIf cfg.enable {
user.packages = with pkgs; [
cargo
rustc
];
environment.sessionVariables.RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
};
}

20
modules/dev/zig.nix Normal file
View File

@ -0,0 +1,20 @@
{ config, options, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.dev.zig;
in {
options.modules.dev.zig = {
enable = mkOption {
type = types.bool;
default = false;
description = "Adds zig tools to the environment.";
};
};
config = mkIf cfg.enable {
user.packages = with pkgs; [
zig
];
};
}

View File

@ -6,7 +6,7 @@ let
in {
options.modules.services.geoclue2 = {
enable = mkOption {
type = types.bool
type = types.bool;
default = false;
};
};

View File

@ -0,0 +1,47 @@
{ config, lib, pkgs, options, ... }:
with lib;
let
cfg = config.modules.services.wireguard;
opt = options.modules.services.wireguard;
in {
options.modules.services.wireguard = {
enable = mkOption {
type = types.bool;
default = false;
description = "Enables the wiregyard VPN service.";
};
server = mkOption {
type = types.bool;
default = false;
description = "Configures this module to allow wireguard to act as a VPN provider on this host.";
};
interfaces = mkOption {
type = types.attrs;
default = {};
description = "Which interfaces wireguard should atach itself to. The first one is prioritized over all others.";
};
port = mkOption {
type = types.int;
default = 51820;
description = "The default listen port.";
};
};
config = mkIf cfg.enable (mkMerge [
{
networking.firewall.allowedUDPPorts = [ cfg.port ];
networking.wireguard.interfaces = mapAttrs (i: c: mkMerge [c {
listenPort = cfg.port;
}]) (mkAliasDefinitions options.modules.services.wireguard.interfaces);
}
(mkIf cfg.server {
networking.nat = {
enable = true;
# externalInterfaces = head cfg.interfaces;
# internalInterfaces = cfg.interfaces;
};
})
]);
}

View File

@ -25,7 +25,7 @@ in {
home.configFile = {
"fish" = {
source = "${cfgDir}/fish";
target = "$HOME.config/fish";
target = "$HOME/.config/fish";
};
};
};

View File

Before

Width:  |  Height:  |  Size: 2.8 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

View File

@ -34,21 +34,14 @@ with lib;
config = {
home-manager.useUserPackages = true;
/*
user = {
packages = with pkgs; [ curl ];
extraGroups = [ "wheel" ];
shell = {};
home = "/home/default";
isNormalUser = false;
isSystemUser = false;
group = "";
};
*/
home._ = {
home.stateVersion = config.system.stateVersion;
# home.file = mkAliasDefinitions options.home.file;
home.file = mkAliasDefinitions options.home.configFile;
xdg.enable = true;
xdg.configFile = mkAliasDefinitions options.home.configFile;
};
@ -63,14 +56,14 @@ with lib;
};
};
users.users = mapAttrs (user: prop: /* (mkAliasDefinitions options.user) // */ {
users.users = mapAttrs (user: prop: mkMerge [(mkAliasDefinitions options.user) {
packages = prop.packages;
extraGroups = prop.extraGroups;
shell = pkgs."${config.defaultUsers."${user}".shell}";
shell = trace "penis" pkgs."${config.defaultUsers."${user}".shell}";
home = "/home/${user}";
isNormalUser = true;
group = user;
}) config.defaultUsers;
}]) config.defaultUsers;
home-manager.users = mapAttrs (user: prop: mkAliasDefinitions options.home._
) config.defaultUsers;

33
packages/soundux.nix Normal file
View File

@ -0,0 +1,33 @@
{ stdenv, lib, fetchurl
, cmake
, alsaLib
, glib
, gtk3
, xorg
, webkitgtk
, libxkbcommon
, pulseaudio
, pipewire
}:
stdenv.mkDerivation rec {
pname = "soundux";
version = "0.2.6";
src = fetchurl {
url = "https://github.com/Soundux/Soundux/releases/download/${version}/${pname}-${version}.tar.gz";
sha256 = "0cffff520b3d1e69ccbb10599ff1ff3c911d74eb01a4af8dc3d5132fa5535c63";
};
nativeBuildInputs = [ cmake ];
buildInputs = with xorg; [
alsaLib glib gtk3 webkitgtk libxkbcommon pulseaudio pipewire libX11
];
meta = with lib; {
description = "A universal soundboard that uses PulseAudio modules or PipeWire linking";
homepage = "https://soundux.rocks/";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
};
}