formatted

This commit is contained in:
atagen 2023-04-21 01:58:39 +10:00
parent ba1684c8d4
commit 737ca01e49
24 changed files with 468 additions and 411 deletions

View file

@ -1,2 +1 @@
all systems flakes
do overlays properly for syspkgs/homepkgs
basically just laptop

136
flake.nix
View file

@ -2,7 +2,6 @@
description = "nixos config";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-parts = {
@ -11,7 +10,7 @@
};
nur.url = "github:/nix-community/NUR";
eww = {
url = "github:elkowar/eww";
inputs.nixpkgs.follows = "nixpkgs";
@ -40,80 +39,79 @@
hyprland.url = "github:hyprwm/Hyprland";
declarative-cachix.url = "github:jonascarpay/declarative-cachix";
};
outputs = { self, nixpkgs, home-manager, nur, eww, helix, hyprland, ... }@inputs:
let
inherit (self) outputs;
forAllSystems = nixpkgs.lib.genAttrs [
"x86_64-linux"
];
outputs = {
self,
nixpkgs,
home-manager,
nur,
eww,
helix,
hyprland,
...
} @ inputs: let
inherit (self) outputs;
forAllSystems = nixpkgs.lib.genAttrs [
"x86_64-linux"
];
in rec {
# custom packages
packages = forAllSystems (
system: let
pkgs = nixpkgs.legacyPackages.${system};
in
import ./pkgs {inherit pkgs;}
);
in
rec {
# homepkgs = forAllSystems (system:
# let pkgs = nixpkgs.legacyPackages.${system};
# in import ./homepkgs { inherit pkgs; }
# );
# custom packages
packages = forAllSystems (system:
let pkgs = nixpkgs.legacyPackages.${system};
in import ./pkgs { inherit pkgs; }
);
# homepkgs = forAllSystems (system:
# let pkgs = nixpkgs.legacyPackages.${system};
# in import ./homepkgs { inherit pkgs; }
# );
# any overlays or modules we use
overlays = import ./overlay.nix { inherit inputs; };
# nixosModules = import ./modules/nixos;
# homeModules = import ./modules/home;
nixosConfigurations = {
"quiver" = nixpkgs.lib.nixosSystem {
# pkgs = nixpkgs.legacyPackages.x86_64-linux;
system = "x86_64-linux";
specialArgs = { inherit inputs outputs; };
modules = [
./system/quiver.nix
];
};
"adrift" = nixpkgs.lib.nixosSystem {
# pkgs = nixpkgs.legacyPackages.x86_64-linux;
system = "x86_64-linux";
specialArgs = { inherit inputs outputs; };
modules = [
./system/adrift.nix
];
};
# any overlays or modules we use
overlays = import ./overlay.nix {inherit inputs;};
# nixosModules = import ./modules/nixos;
# homeModules = import ./modules/home;
nixosConfigurations = {
"quiver" = nixpkgs.lib.nixosSystem {
# pkgs = nixpkgs.legacyPackages.x86_64-linux;
system = "x86_64-linux";
specialArgs = {inherit inputs outputs;};
modules = [
./system/quiver.nix
];
};
homeConfigurations = {
"bolt@quiver" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = { inherit inputs outputs; };
modules = [
nur.nixosModules.nur
./home/bolt.nix
];
};
"plank@adrift" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = { inherit inputs outputs; };
modules = [
nur.nixosModules.nur
./home/plank.nix
];
};
"adrift" = nixpkgs.lib.nixosSystem {
# pkgs = nixpkgs.legacyPackages.x86_64-linux;
system = "x86_64-linux";
specialArgs = {inherit inputs outputs;};
modules = [
./system/adrift.nix
];
};
};
homeConfigurations = {
"bolt@quiver" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {inherit inputs outputs;};
modules = [
nur.nixosModules.nur
./home/bolt.nix
];
};
"plank@adrift" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {inherit inputs outputs;};
modules = [
nur.nixosModules.nur
./home/plank.nix
];
};
};
};
}

View file

@ -1,10 +1,17 @@
{ inputs, outputs, lib, config, pkgs, ... }: {
imports = [
./home.nix
];
{
inputs,
outputs,
lib,
config,
pkgs,
...
}: {
imports = [
./home.nix
];
home = {
username = "bolt";
homeDirectory = "/home/bolt";
};
home = {
username = "bolt";
homeDirectory = "/home/bolt";
};
}

View file

@ -1,35 +1,37 @@
{ inputs, outputs, lib, config, pkgs, ... }:
let
{
inputs,
outputs,
lib,
config,
pkgs,
...
}: let
wlogout_style_base = dots/wlogout/style.css;
wlogout_style = pkgs.runCommandLocal "wlogout_style_base" {wlogpath = lib.strings.escape ["/"] "${pkgs.wlogout}";} ''
cp ${wlogout_style_base} $out
sed -i "s/\/usr\/share\/wlogout/$wlogpath\/share\/wlogout/g" $out
sed -i "s/\/usr\/share\/wlogout/$wlogpath\/share\/wlogout/g" $out
sed -i "s/\/etc\/wlogout/$wlogpath\/etc\/wlogout/g" $out
'';
in
{
imports = [
in {
imports = [
inputs.hyprland.homeManagerModules.default
./programs/eww/default.nix
];
];
nixpkgs = {
nixpkgs = {
overlays = [
outputs.overlays.additions
outputs.overlays.unstable-pkgs
];
config = {
allowUnfree = true;
allowUnfreePredicate = (_: true);
};
};
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
};
};
home.stateVersion = "22.11";
home.stateVersion = "22.11";
home.packages = with pkgs; [
home.packages = with pkgs; [
thunderbird
clementine
inkscape
@ -42,7 +44,7 @@ in
lazygit
fzf
zoxide
zellij
zellij
glib # for gsettings
grim
slurp
@ -60,13 +62,13 @@ in
swayosd
fuzzel
kdeconnect
kdeconnect
syncthing
keepassxc
git-credential-keepassxc
direnv
mpv
meslo-lgs-nf
@ -74,10 +76,10 @@ in
libsForQt5.qtstyleplugin-kvantum
gtk-engine-murrine
];
];
services.syncthing = {
enable = true;
enable = true;
};
wayland.windowManager.hyprland = {
@ -97,14 +99,14 @@ in
colors = builtins.readFile dots/eww/colors.scss;
};
systemd.user.startServices = "sd-switch";
systemd.user.startServices = "sd-switch";
systemd.user.services."hyprland-system76" = {
Unit = {
Description = "the hyprland process scheduler hook";
Requires = [ "dbus.service" ];
Requires = ["dbus.service"];
};
Install = {
WantedBy = [ "graphical-session.target" "default.target" ];
WantedBy = ["graphical-session.target" "default.target"];
};
Service = {
ExecStart = ''${pkgs.hyprland-system76-scheduler-integration}/bin/hyprland-system76-scheduler-hook.sh'';
@ -114,15 +116,19 @@ in
xresources.extraConfig = builtins.readFile ./dots/Xresources;
xdg.enable = true;
xdg.configFile = builtins.mapAttrs (name: value: { enable=true; text=builtins.readFile value; })
{
"wlogout/layout" = dots/wlogout/layout;
"wlogout/style.css" = wlogout_style;
"swaync/config.json" = dots/swaync/config.json;
"swaync/configSchema.json" = dots/swaync/configSchema.json;
"swaync/style.css" = dots/swaync/style.css;
"fuzzel/fuzzel.ini" = dots/fuzzel/fuzzel.ini;
};
xdg.configFile =
builtins.mapAttrs (name: value: {
enable = true;
text = builtins.readFile value;
})
{
"wlogout/layout" = dots/wlogout/layout;
"wlogout/style.css" = wlogout_style;
"swaync/config.json" = dots/swaync/config.json;
"swaync/configSchema.json" = dots/swaync/configSchema.json;
"swaync/style.css" = dots/swaync/style.css;
"fuzzel/fuzzel.ini" = dots/fuzzel/fuzzel.ini;
};
xdg.systemDirs.data = [
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
@ -151,9 +157,8 @@ in
enable = true;
};
};
programs.firefox =
{
programs.firefox = {
enable = true;
profiles.default = {
id = 0;
@ -174,7 +179,7 @@ in
programs.helix = {
enable = true;
# package = inputs.helix.packages.${pkgs.hostPlatform.system}.default;
# package = inputs.helix.packages.${pkgs.hostPlatform.system}.default;
settings = {
theme = "gruvbox_dark_hard";
editor.lsp.display-messages = true;
@ -288,6 +293,4 @@ in
}
];
};
}
}

View file

@ -1,10 +1,10 @@
inputs: _: prev: {
hyprland-s76 = prev.callPackage ./hyprland-system76-scheduler-integration.nix {};
swayosd = prev.callPackage ./homepkgs/swayosd.nix {};
wlogout_style_base = dots/wlogout/style.css;
wlogout_style = prev.runCommandLocal "wlogout_style_base" {wlogpath = lib.strings.escape ["/"] "${pkgs.wlogout}";} ''
cp ${wlogout_style_base} $out
sed -i "s/\/usr\/share\/wlogout/$wlogpath\/share\/wlogout/g" $out
sed -i "s/\/etc\/wlogout/$wlogpath\/etc\/wlogout/g" $out
'';
hyprland-s76 = prev.callPackage ./hyprland-system76-scheduler-integration.nix {};
swayosd = prev.callPackage ./homepkgs/swayosd.nix {};
wlogout_style_base = dots/wlogout/style.css;
wlogout_style = prev.runCommandLocal "wlogout_style_base" {wlogpath = lib.strings.escape ["/"] "${pkgs.wlogout}";} ''
cp ${wlogout_style_base} $out
sed -i "s/\/usr\/share\/wlogout/$wlogpath\/share\/wlogout/g" $out
sed -i "s/\/etc\/wlogout/$wlogpath\/etc\/wlogout/g" $out
'';
}

View file

@ -1,13 +1,13 @@
{ inputs, ... }:
{
additions = final: _prev: import ./pkgs { pkgs = final; };
unstable-pkgs = final: _prev: {
unstable = import inputs.nixpkgs {
system = final.system;
config.allowUnfree = true;
};
};
{inputs, ...}: {
additions = final: _prev: import ./pkgs {pkgs = final;};
unstable-pkgs = final: _prev: {
unstable = import inputs.nixpkgs {
system = final.system;
config.allowUnfree = true;
};
};
}
# inputs: _: prev: {
# system76-scheduler = prev.callPackage ./syspkgs/system76-scheduler.nix {};
# }

View file

@ -1,15 +1,15 @@
{ lib
, mkDerivation
, fetchFromGitHub
, kcoreaddons
, kwindowsystem
, plasma-framework
, systemsettings
, cmake
, extra-cmake-modules
, esbuild
{
lib,
mkDerivation,
fetchFromGitHub,
kcoreaddons,
kwindowsystem,
plasma-framework,
systemsettings,
cmake,
extra-cmake-modules,
esbuild,
}:
mkDerivation rec {
pname = "bismuth";
version = "3.1.3";
@ -42,7 +42,7 @@ mkDerivation rec {
meta = with lib; {
description = "A dynamic tiling extension for KWin";
license = licenses.mit;
maintainers = with maintainers; [ pasqui23 ];
maintainers = with maintainers; [pasqui23];
homepage = "https://bismuth-forge.github.io/bismuth/";
inherit (kwindowsystem.meta) platforms;
};

View file

@ -1,5 +1,10 @@
{ lib, fetchFromGitea, rustPlatform, libX11, pkg-config }:
{
lib,
fetchFromGitea,
rustPlatform,
libX11,
pkg-config,
}:
rustPlatform.buildRustPackage rec {
pname = "culr";
version = "0.1.0";
@ -12,16 +17,15 @@ rustPlatform.buildRustPackage rec {
sha256 = "sha256-Blo1PyhzKU4LzflmeGrvWOQEon2BCTkF3uQR+7D5/kc=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libX11 ];
nativeBuildInputs = [pkg-config];
buildInputs = [libX11];
cargoSha256 = "sha256-Vnhni8tckrexlJ85gfSDEAVWhH6oVHn9/z2O2OIVR5o=";
meta = with lib; {
description = "colourise piped input";
homepage = "https://git.atagen.co/atagen/culr";
license = licenses.mit;
maintainers = [ ];
maintainers = [];
};
}

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: {
{pkgs, ...}: {
hyprland-system76-scheduler-integration = pkgs.callPackage ./hyprland-system76-scheduler-integration.nix {};
system76-scheduler = pkgs.callPackage ./system76-scheduler.nix {};
culr = pkgs.callPackage ./culr.nix {};

View file

@ -1,10 +1,12 @@
{ config, lib, pkgs, ... }:
with lib;
let
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.programs.fuzzel;
iniFormat = pkgs.formats.ini { };
iniFormat = pkgs.formats.ini {};
in {
options = {
programs.fuzzel = {
@ -19,7 +21,7 @@ in {
settings = mkOption {
type = iniFormat.type;
default = { };
default = {};
example = literalExpression ''
{
window.dimensions = {
@ -45,18 +47,17 @@ in {
config = mkMerge [
(mkIf cfg.enable {
home.packages = [ cfg.package ];
home.packages = [cfg.package];
xdg.configFile."fuzzel/fuzzel.ini" = mkIf (cfg.settings != { }) {
xdg.configFile."fuzzel/fuzzel.ini" = mkIf (cfg.settings != {}) {
# TODO: Replace by the generate function but need to figure out how to
# handle the escaping first.
#
# source = yamlFormat.generate "alacritty.yml" cfg.settings;
text =
replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg.settings);
replaceStrings ["\\\\"] ["\\"] (builtins.toJSON cfg.settings);
};
})
];
}

View file

@ -1,5 +1,8 @@
{ lib, fetchFromGitHub, rustPlatform }:
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "git-credential-keepassxc";
version = "0.10.0";
@ -17,7 +20,6 @@ rustPlatform.buildRustPackage rec {
description = "Helper that allows Git (and shell scripts) to use KeePassXC as credential store";
homepage = "https://github.com/frederick888/git-credential-keepassxc";
license = licenses.gpl3Only;
maintainers = [ ];
maintainers = [];
};
}

View file

@ -1,6 +1,16 @@
{ lib, stdenv, fetchFromSourcehut, meson, ninja, pkg-config, wlroots, wayland, wayland-protocols
, libX11, libGL }:
{
lib,
stdenv,
fetchFromSourcehut,
meson,
ninja,
pkg-config,
wlroots,
wayland,
wayland-protocols,
libX11,
libGL,
}:
stdenv.mkDerivation rec {
pname = "glpaper";
version = "unstable-latest";
@ -13,7 +23,7 @@ stdenv.mkDerivation rec {
sha256 = "sha256-//IKW2BfpqwcR2WAPShs0kzn5nkV/yyABPvOYm3zMPU=";
};
nativeBuildInputs = [ meson ninja pkg-config ];
nativeBuildInputs = [meson ninja pkg-config];
buildInputs = [
wayland
libX11 # required by libglvnd
@ -21,11 +31,10 @@ stdenv.mkDerivation rec {
];
meta = with lib; {
description =
"Wallpaper program for wlroots based Wayland compositors such as sway that allows you to render glsl shaders as your wallpaper";
description = "Wallpaper program for wlroots based Wayland compositors such as sway that allows you to render glsl shaders as your wallpaper";
homepage = "https://hg.sr.ht/~scoopta/glpaper";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ ccellado ];
maintainers = with maintainers; [ccellado];
};
}

View file

@ -1,5 +1,9 @@
{ lib, stdenv, fetchurl, unzip }:
{
lib,
stdenv,
fetchurl,
unzip,
}:
stdenv.mkDerivation rec {
pname = "headscale-ui";
version = "2022.12.23.2-beta";
@ -9,7 +13,7 @@ stdenv.mkDerivation rec {
sha256 = "sha256-QF10la68Rl2t0K53CH63Qiq54ynkySQACdELorZF/cY=";
};
nativeBuildInputs = [ unzip ];
nativeBuildInputs = [unzip];
unpackCmd = "unzip headscale-ui.zip";
@ -19,5 +23,4 @@ stdenv.mkDerivation rec {
mkdir $out/
cp -R . $out
'';
}
}

View file

@ -1,47 +1,52 @@
{ lib, pkgs, stdenv, hyprland, ripgrep, socat, dbus, ... }:
{
lib,
pkgs,
stdenv,
hyprland,
ripgrep,
socat,
dbus,
...
}:
stdenv.mkDerivation rec {
pname = "hyprland-system76-scheduler-integration";
version = "0.1.0";
nativeBuildInputs = [
socat
socat
dbus
hyprland
ripgrep
hyprland
ripgrep
];
dontUnpack = "true";
dontUnpack = "true";
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
runHook preInstall
cat <<EOF > $out/bin/hyprland-system76-scheduler-hook.sh
#!${pkgs.bash}/bin/bash
echo "opening socket.."
${pkgs.socat}/bin/socat -u UNIX-CLIENT:/tmp/hypr/\''$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock STDOUT |
while read line; do
if [[ "\''$line" == activewindow* ]]; then
echo "got \''$line."
pid="\''$(${pkgs.hyprland}/bin/hyprctl activewindow | ${pkgs.ripgrep}/bin/rg pid | ${pkgs.coreutils}/bin/cut -d' ' -f2)"
if [[ -n \''$pid ]]; then
echo "sending \''$pid!"
${pkgs.dbus}/bin/dbus-send --system --dest=com.system76.Scheduler --type=method_call /com/system76/Scheduler com.system76.Scheduler.SetForegroundProcess uint32:\''$pid
fi
pid=""
fi
echo "continuing.."
done
echo "finished."
EOF
chmod +x $out/bin/hyprland-system76-scheduler-hook.sh
mkdir -p $out/bin
runHook postInstall
cat <<EOF > $out/bin/hyprland-system76-scheduler-hook.sh
#!${pkgs.bash}/bin/bash
echo "opening socket.."
${pkgs.socat}/bin/socat -u UNIX-CLIENT:/tmp/hypr/\''$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock STDOUT |
while read line; do
if [[ "\''$line" == activewindow* ]]; then
echo "got \''$line."
pid="\''$(${pkgs.hyprland}/bin/hyprctl activewindow | ${pkgs.ripgrep}/bin/rg pid | ${pkgs.coreutils}/bin/cut -d' ' -f2)"
if [[ -n \''$pid ]]; then
echo "sending \''$pid!"
${pkgs.dbus}/bin/dbus-send --system --dest=com.system76.Scheduler --type=method_call /com/system76/Scheduler com.system76.Scheduler.SetForegroundProcess uint32:\''$pid
fi
pid=""
fi
echo "continuing.."
done
echo "finished."
EOF
chmod +x $out/bin/hyprland-system76-scheduler-hook.sh
runHook postInstall
'';
}

View file

@ -1,9 +1,20 @@
{ lib, pkgs, stdenv, fetchFromGitHub, dbus, qt5, qtbase, wrapQtAppsHook, kpackage, kcoreaddons, ... }:
{
lib,
pkgs,
stdenv,
fetchFromGitHub,
dbus,
qt5,
qtbase,
wrapQtAppsHook,
kpackage,
kcoreaddons,
...
}:
stdenv.mkDerivation rec {
pname = "kwin-system76-scheduler-integration";
version = "0.1";
src = fetchFromGitHub {
owner = "maxiberta";
repo = pname;
@ -25,7 +36,7 @@ stdenv.mkDerivation rec {
installPhase = ''
runHook preInstall
mkdir -p $out/bin
kpackagetool5 --type=KWin/Script -i . -p $out/share/kwin/scripts
@ -49,6 +60,4 @@ stdenv.mkDerivation rec {
runHook postInstall
'';
}

View file

@ -1,5 +1,10 @@
{ lib, fetchFromGitHub, rustPlatform, linux-pam, pkg-config }:
{
lib,
fetchFromGitHub,
rustPlatform,
linux-pam,
pkg-config,
}:
rustPlatform.buildRustPackage rec {
pname = "lemurs";
version = "0.3.1";
@ -11,16 +16,15 @@ rustPlatform.buildRustPackage rec {
sha256 = "sha256-mQXavJULD5iyOnzj72xTV0EQ1HQvj25SHsbDgfRg4lQ=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ linux-pam ];
nativeBuildInputs = [pkg-config];
buildInputs = [linux-pam];
cargoSha256 = "sha256-OCaIeQB8reK0089vbC+4IvQt5pKdZ2SCyyGuQEYWzjo=";
meta = with lib; {
description = "A customizable TUI display/login manager written in Rust";
homepage = "https://git.atagen.co/coastalwhite/lemurs";
license = licenses.mit;
maintainers = [ ];
maintainers = [];
};
}

View file

@ -1,5 +1,11 @@
{ stdenv, lib, fetchFromGitHub, linux-pam, libxcb, git }:
{
stdenv,
lib,
fetchFromGitHub,
linux-pam,
libxcb,
git,
}:
stdenv.mkDerivation rec {
pname = "ly";
version = "0.5.0+";
@ -12,9 +18,9 @@ stdenv.mkDerivation rec {
fetchSubmodules = true;
};
nativeBuildInputs = [ git ];
buildInputs = [ linux-pam libxcb ];
makeFlags = [ "FLAGS=-Wno-error=unused-result" ];
nativeBuildInputs = [git];
buildInputs = [linux-pam libxcb];
makeFlags = ["FLAGS=-Wno-error=unused-result"];
preBuildPhase = ''
mkdir -p ./data
@ -36,6 +42,6 @@ stdenv.mkDerivation rec {
description = "TUI display manager";
license = licenses.wtfpl;
homepage = "https://github.com/fairyglade/ly";
maintainers = [ ];
maintainers = [];
};
}

View file

@ -1,5 +1,8 @@
{ stdenvNoCC, lib, fetchFromGitea, }:
{
stdenvNoCC,
lib,
fetchFromGitea,
}:
stdenvNoCC.mkDerivation rec {
pname = "Simplewaita";
version = "0.1.0";
@ -26,5 +29,5 @@ stdenvNoCC.mkDerivation rec {
homepage = "https://git.disroot.org/eudaimon/Simplewaita";
license = licenses.gpl1Only;
platforms = platforms.linux;
};
};
}

View file

@ -1,5 +1,12 @@
{ lib, fetchFromGitHub, rustPlatform, pkg-config, gtk3, gtk-layer-shell, libpulseaudio }:
{
lib,
fetchFromGitHub,
rustPlatform,
pkg-config,
gtk3,
gtk-layer-shell,
libpulseaudio,
}:
rustPlatform.buildRustPackage rec {
pname = "SwayOSD";
version = "0.1.0";
@ -11,14 +18,12 @@ rustPlatform.buildRustPackage rec {
sha256 = "sha256-3K8LlX4MrG523BwD4nZOcXgSxsnYRxxU5gCOp7rCOCY=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtk3 gtk-layer-shell libpulseaudio ];
nativeBuildInputs = [pkg-config];
buildInputs = [gtk3 gtk-layer-shell libpulseaudio];
cargoLock.lockFileContents = builtins.readFile ./swayosd.lock;
postPatch = ''
cp ${./swayosd.lock} Cargo.lock
'';
cargoSha256 = lib.fakeSha256;
}

View file

@ -1,6 +1,11 @@
{ pkgs, lib, rustPlatform, fetchFromGitHub, ... }:
{
pkgs,
lib,
rustPlatform,
fetchFromGitHub,
...
}:
rustPlatform.buildRustPackage rec {
pname = "system76-scheduler";
version = "1.2.2";
@ -30,5 +35,4 @@ rustPlatform.buildRustPackage rec {
# install -Dm0644 data/com.system76.Scheduler.service $out/lib/systemd/system/com.system76.Scheduler.service
install -Dm0644 data/com.system76.Scheduler.conf $out/etc/dbus-1/system.d/com.system76.Scheduler.conf
'';
}

View file

@ -1,11 +1,13 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ lib, config, pkgs, ... }:
let
wekan-compose = pkgs.fetchurl {
{
lib,
config,
pkgs,
...
}: let
wekan-compose = pkgs.fetchurl {
url = "https://github.com/wekan/wekan/raw/v6.68/docker-compose.yml";
sha256 = "sha256-gLZ8bZZ8ZMo1NGz3ooIgXRH6JuMoEMp+to7lfqAvc6E=";
};
@ -27,20 +29,19 @@ let
url = "https://raw.githubusercontent.com/timlegge/docker-foswiki/master/docker-compose.1-simple.yml";
sha256 = "sha256-XqGWGTZ/URKsIdDEEpBQUK7xoIdZ164lRhHEiWdnKpM=";
};
in
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
# ./cachix.nix
# (import (builtins.fetchTarball "https://github.com/jonascarpay/declarative-cachix/archive/master.tar.gz"))
];
in {
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
# ./cachix.nix
# (import (builtins.fetchTarball "https://github.com/jonascarpay/declarative-cachix/archive/master.tar.gz"))
];
# cachix = [
# "nix-community"
# ];
nix.settings.experimental-features = [ "flakes" "nix-command" ];
nix.settings.experimental-features = ["flakes" "nix-command"];
systemd.services.NetworkManager-wait-online.enable = false;
# Use the GRUB 2 boot loader.
@ -49,7 +50,7 @@ in
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
networking.hostName = "reflector"; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
time.timeZone = "Australia/Sydney";
@ -57,14 +58,13 @@ in
# Define a user account. Don't forget to set a password with passwd.
users.users.sunshine = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
extraGroups = ["wheel"]; # Enable sudo for the user.
packages = with pkgs; [];
openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDSQC8VgKLzoU5BSynJJuC8BFqAEN8JlSIzsZ2Vg9rfXHM7T4vbWtnxSCSbNw3CEnZCfrdDQTeRum7Uq+gvrcHWd9Aj+rVmubTdud70ybW7T7SlGv3b5TYBhMNbrAz0JIJjLnFMy3/pWids1v6mKW3i7k6Kbq8fSt7jva5Yg5x1jtkUUwvjSZjPg/E/Zl0hAcnx8fWe4foFTcYYsUbfEpp6bxdN2QuVmb17UKnLrMz6JTj88Jd2uYZkeKxGOwk+uwrd0WArY8JIiRi1NcPA3I42aAQfZKxCUY/xmVyRlF+l6K8caD4CZlysms9aXQzBhmPPDIY87AwyRlVK5JsRbaMEBMsffX2xk8DdV+2+9RbztgeXOoYk7WjJX1/+WcxY3RGn8QsUfrGALmrQTRGXgYRbtM/ZJq1m9aP6IvVQeKE1NOpKguXpmokB7JsyKPcWk/PCMVYyXM/qYspc6hRPJgGWiJsayj7myO6X5Ssl9uQnHpNNyrQNY+cx3/boBu2J1sM= bolt@quiver"
];
};
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
@ -73,23 +73,23 @@ in
helix
ripgrep
fd
curl
curl
cachix
headscale
comma
woodpecker-agent
woodpecker-server
# podman
# podman-compose
# shadow
dufs
];
virtualisation = {
docker.enable = true;
# podman = {
@ -98,13 +98,13 @@ in
# defaultNetwork.dnsname.enable = true;
# };
};
# services.resolved = {
# enable = true;
# fallbackDns = [ "103.1.206.179" "168.138.8.38" "168.138.12.137" ];
# dnssec = "false";
# };
services.fail2ban.enable = true;
services.tailscale.enable = true;
@ -113,14 +113,14 @@ in
enable = true;
serverUrl = "https://net.atagen.co";
dns = {
nameservers = [ "103.1.206.179" "168.138.8.38" "168.138.12.137" ];
nameservers = ["103.1.206.179" "168.138.8.38" "168.138.12.137"];
magicDns = true;
};
};
services.syncthing = {
enable = true;
extraOptions = {
extraOptions = {
gui = {
insecureSkipHostcheck = true;
};
@ -140,35 +140,34 @@ in
};
rootUrl = "https://git.atagen.co";
settings.service.DISABLE_REGISTRATION = true;
settings.webhook.ALLOWED_HOST_LIST="external,loopback";
settings.webhook.ALLOWED_HOST_LIST = "external,loopback";
};
users.users.ci = {
isSystemUser = true;
createHome = true;
group = "ci";
extraGroups = [ "docker" "wheel" ];
extraGroups = ["docker" "wheel"];
};
users.groups.ci = { };
users.groups.ci = {};
users.users.ci-agent = {
isSystemUser = true;
createHome = true;
group = "ci";
extraGroups = [ "docker" "wheel" ];
extraGroups = ["docker" "wheel"];
};
users.groups.ci = { };
users.groups.ci = {};
users.users.dufs = {
isSystemUser = true;
createHome = true;
group = "dufs";
};
users.groups.dufs = { };
users.groups.dufs = {};
systemd.services.woodpecker-server = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
description = "woodpecker CI/CD server";
serviceConfig = {
Environment = [
@ -190,9 +189,9 @@ in
Group = "ci";
};
};
systemd.services.woodpecker-agent = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
description = "woodpecker CI/CD agent";
serviceConfig = {
Environment = [
@ -204,7 +203,7 @@ in
User = "ci-agent";
};
};
# systemd.services.wekan-private = {
# wantedBy = [ "multi-user.target" ];
# after = [ "network.target" "docker.service" ];
@ -219,9 +218,9 @@ in
# };
systemd.services.wekan-rhizome = {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "docker.service" ];
requires = [ "docker.service" ];
wantedBy = ["multi-user.target"];
after = ["network.target" "docker.service"];
requires = ["docker.service"];
description = "wekan kanban board for rhizomers";
serviceConfig = {
Restart = "always";
@ -232,8 +231,8 @@ in
};
systemd.services.dufs = {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
wantedBy = ["multi-user.target"];
after = ["network.target"];
description = "dufs webdav server";
serviceConfig = {
User = "dufs";
@ -258,14 +257,13 @@ in
services.caddy = {
enable = true;
virtualHosts = {
"atagen.co" = {
serverAliases = [ "www.atagen.co" ];
serverAliases = ["www.atagen.co"];
extraConfig = ''
respond "i live.. again"
'';
};
"iced-rs.info".extraConfig = ''
reverse_proxy http://127.0.0.1:8765
'';
@ -285,15 +283,15 @@ in
# "git.rhizome.tf".extraConfig = ''
# reverse_proxy http://127.0.0.1:3033
# '';
"board.rhizome.tf".extraConfig = ''
reverse_proxy http://127.0.0.1:7897
'';
"net.atagen.co".extraConfig = ''
reverse_proxy http://127.0.0.1:8080
'';
"reflector.beam".extraConfig = ''
tls /etc/selfsigned/cert.pem /etc/selfsigned/key.pem
@ -307,7 +305,6 @@ in
reverse_proxy http://127.0.0.1:8083
}
'';
};
};
@ -316,15 +313,15 @@ in
enable = true;
passwordAuthentication = false;
kbdInteractiveAuthentication = false;
permitRootLogin = "no";
permitRootLogin = "no";
};
networking.firewall = {
enable = true;
trustedInterfaces = [ "tailscale0" ];
trustedInterfaces = ["tailscale0"];
checkReversePath = "loose";
allowedTCPPorts = [ 80 443 6660 ];
allowedUDPPorts = [ 80 443 41641 6660 ];
allowedTCPPorts = [80 443 6660];
allowedUDPPorts = [80 443 41641 6660];
};
# Copy the NixOS configuration file and link it from the resulting system
@ -339,6 +336,4 @@ in
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "22.11"; # Did you read the comment?
}

View file

@ -1,12 +1,16 @@
{ inputs, outputs, lib, config, pkgs, ... }:
# let
{
inputs,
outputs,
lib,
config,
pkgs,
...
}:
# let
# lemurs = callPackage ./system/syspkgs/lemurs.nix {};
# ly = callPackage ./system/syspkgs/ly.nix {};
# in
{
nixpkgs = {
overlays = [
outputs.overlays.additions
@ -15,50 +19,49 @@
};
nix = {
registry = lib.mapAttrs(_: value: { flake = value; }) inputs;
registry = lib.mapAttrs (_: value: {flake = value;}) inputs;
settings = {
experimental-features = "nix-command flakes";
};
};
# imports = [
# inputs.declarative-cachix
# inputs.helix
# inputs.declarative-cachix
# inputs.helix
# ];
# cachix = [
# "nix-community"
# ];
nix.extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
systemd.services.NetworkManager-wait-online.enable = true;
environment.pathsToLink = [ "/share/zsh" ];
environment.pathsToLink = ["/share/zsh"];
boot.loader.systemd-boot.consoleMode = "max";
boot.loader.timeout = 3;
boot.loader.systemd-boot.enable = true;
boot.tmpOnTmpfs = true;
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = "Australia/Sydney";
time.hardwareClockInLocalTime = true;
# Select internationalisation properties.
i18n.defaultLocale = "en_AU.UTF-8";
i18n.supportedLocales = [ "en_AU.UTF-8/UTF-8" ];
i18n.supportedLocales = ["en_AU.UTF-8/UTF-8"];
console = {
font = "Lat2-Terminus16";
useXkbConfig = true; # use xkbOptions in tty.
font = "Lat2-Terminus16";
useXkbConfig = true; # use xkbOptions in tty.
};
nixpkgs.config.allowUnfree = true;
hardware.opengl.enable = true;
hardware.opengl.driSupport32Bit = true;
@ -88,10 +91,9 @@
services.resolved = {
enable = true;
fallbackDns = [ "103.1.206.179" "168.138.8.38" "168.138.12.137" ];
fallbackDns = ["103.1.206.179" "168.138.8.38" "168.138.12.137"];
dnssec = "false";
};
# Enable sound.
security.rtkit.enable = true;
@ -109,12 +111,10 @@
programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
services.tailscale.enable = true;
environment.systemPackages = with pkgs; [
rnix-lsp
tailscale
@ -124,9 +124,9 @@
# helix
ark
curl
git
zsh
@ -137,53 +137,49 @@
cachix
alejandra
];
# services.mullvad-vpn.enable = true;
networking.wg-quick.interfaces = {
mullvad = {
address = [ "10.67.227.64/32" ];
dns = [ "10.64.0.1" ];
address = ["10.67.227.64/32"];
dns = ["10.64.0.1"];
privateKey = "OOPAlePjy7x2DVpg6d7BoBqpST3lDJSYght185tSUl8=";
peers = [
{
publicKey = "LXuRwa9JRTt2/UtldklKGlj/IVLORITqgET4II4DRkU=";
allowedIPs = [ "0.0.0.0/0" ];
allowedIPs = ["0.0.0.0/0"];
endpoint = "146.70.200.194:51820";
persistentKeepalive = 25;
}
];
};
};
networking.firewall.enable = true;
networking.firewall = {
trustedInterfaces = [ "tailscale0" ];
trustedInterfaces = ["tailscale0"];
checkReversePath = "loose";
};
systemd.services.fixNetworkingForTailscale = {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "mullvad-daemon.service" ];
wantedBy = ["multi-user.target"];
after = ["network.target" "mullvad-daemon.service"];
description = "fix the damn routing table";
serviceConfig = {
Type = "oneshot";
User = "root";
ExecStart = ''${pkgs.bash}/bin/bash -c 'if [[ "$( ${pkgs.iproute2}/bin/ip rule | grep -e "62:.*52" | wc -l)" -eq 0 ]]; then ${pkgs.iproute2}/bin/ip rule add pref 62 table 52; fi'''';
# ExecStop = ''${pkgs.iproute2}/bin/ip rule del pref 62 table 52'';
ExecStart = '' ${pkgs.bash}/bin/bash -c 'if [[ "$( ${pkgs.iproute2}/bin/ip rule | grep -e "62:.*52" | wc -l)" -eq 0 ]]; then ${pkgs.iproute2}/bin/ip rule add pref 62 table 52; fi'''';
# ExecStop = ''${pkgs.iproute2}/bin/ip rule del pref 62 table 52'';
};
};
security.pam.services.waylock = {
text =''
text = ''
auth include login
'';
};
system.stateVersion = "23.05"; # Did you read the comment? # lol no
}

View file

@ -1,13 +1,13 @@
{ inputs, ... }:
{
additions = final: _prev: import ./pkgs { pkgs = final; };
unstable-pkgs = final: _prev: {
unstable = import inputs.nixpkgs {
system = final.system;
config.allowUnfree = true;
};
};
{inputs, ...}: {
additions = final: _prev: import ./pkgs {pkgs = final;};
unstable-pkgs = final: _prev: {
unstable = import inputs.nixpkgs {
system = final.system;
config.allowUnfree = true;
};
};
}
# inputs: _: prev: {
# system76-scheduler = prev.callPackage ./syspkgs/system76-scheduler.nix {};
# }

View file

@ -1,28 +1,34 @@
{ inputs, outputs, config, lib, pkgs, overlays, modulesPath, ... }:
{
{
inputs,
outputs,
config,
lib,
pkgs,
overlays,
modulesPath,
...
}: {
nix.settings = {
substituters = [ "https://hyprland.cachix.org" ];
substituters = ["https://hyprland.cachix.org"];
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
};
imports = [
./configuration.nix
inputs.hyprland.nixosModules.default
];
imports = [
./configuration.nix
inputs.hyprland.nixosModules.default
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbcore" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" "i2c-dev" ];
boot.extraModulePackages = [ ];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbcore" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd" "i2c-dev"];
boot.extraModulePackages = [];
boot.kernelParams = [
"nvidia_drm.modeset=1"
"mitigations=off"
"acpi_enforce_resources=lax"
"preempt=full"
"quiet"
"loglevel=3"
"nvidia_drm.modeset=1"
"mitigations=off"
"acpi_enforce_resources=lax"
"preempt=full"
"quiet"
"loglevel=3"
"systemd.show_status=auto"
"rd.udev.log_level=3"
"vt.global_cursor_default=0"
@ -33,8 +39,8 @@
boot.loader.systemd-boot.configurationLimit = 5;
boot.loader.efi.canTouchEfiVariables = true;
# boot.plymouth.enable = true;
boot.supportedFilesystems = [ "ntfs" ];
boot.supportedFilesystems = ["ntfs"];
security.tpm2.enable = true;
@ -66,7 +72,7 @@
settings = {
notify_interval = 120;
friendly_name = "PC";
media_dir = [ "A,/data/Music/Slsk" ];
media_dir = ["A,/data/Music/Slsk"];
};
};
@ -79,14 +85,14 @@
nvidiaPatches = true;
};
services.xserver.videoDrivers = [ "nvidia" ];
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
hardware.nvidia.modesetting.enable = true;
hardware.nvidia.powerManagement.enable = true;
programs.xwayland.enable = true;
systemd.services.no-rgb = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
description = "rgb led turn-off-er";
serviceConfig = {
Type = "oneshot";
@ -95,7 +101,7 @@
};
systemd.services."com.system76.Scheduler" = {
wantedBy = [ "multi-user.target" ];
wantedBy = ["multi-user.target"];
description = "the system76 process scheduler";
serviceConfig = {
Type = "dbus";
@ -121,8 +127,8 @@
enable = true;
motherboard = "amd";
};
hardware.ckb-next.enable = true;
hardware.ckb-next.enable = true;
xdg.portal = {
enable = true;
@ -141,42 +147,40 @@
xdg-desktop-portal-gtk
];
};
environment.systemPackages = with pkgs;
[
ckb-next
openrgb
wl-clipboard
wl-clipboard-x11
xclip
# system76-scheduler
];
environment.systemPackages = with pkgs; [
ckb-next
openrgb
wl-clipboard
wl-clipboard-x11
xclip
# system76-scheduler
];
networking.hostName = "quiver"; # Define your hostname.
users.users.bolt = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
extraGroups = ["wheel"]; # Enable sudo for the user.
};
fileSystems."/" =
{ device = "/dev/disk/by-uuid/d227445f-6120-4768-8e1b-011f097505c1";
fsType = "ext4";
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/d227445f-6120-4768-8e1b-011f097505c1";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/6B75-AF9F";
fsType = "vfat";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/6B75-AF9F";
fsType = "vfat";
};
fileSystems."/data" = {
device = "/dev/disk/by-uuid/39D4F78C658E8B56";
fsType = "ntfs";
options = [ "rw" "uid=1000" "gid=100" ];
};
networking.firewall = {
allowedUDPPorts = [ 1900 ];
allowedTCPPorts = [ 8200 2234 ];
options = ["rw" "uid=1000" "gid=100"];
};
networking.firewall = {
allowedUDPPorts = [1900];
allowedTCPPorts = [8200 2234];
};
}