gigalint everything

This commit is contained in:
iofq 2024-01-28 17:41:08 -06:00
parent 2ce46f1cf5
commit d4c31f8fd1
39 changed files with 499 additions and 398 deletions

2
.envrc
View file

@ -1 +1 @@
use nix use flake

2
.gitignore vendored
View file

@ -1 +1,3 @@
result result
.pre-commit-config.yaml
.direnv/

96
flake.lock generated
View file

@ -3,7 +3,9 @@
"deploy-rs": { "deploy-rs": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"nixpkgs": "nixpkgs", "nixpkgs": [
"nixpkgs"
],
"utils": "utils" "utils": "utils"
}, },
"locked": { "locked": {
@ -262,7 +264,7 @@
"foundry-nix": { "foundry-nix": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1706432964, "lastModified": 1706432964,
@ -489,18 +491,15 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1702272962, "lastModified": 1705677747,
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=", "narHash": "sha256-eyM3okYtMgYDgmYukoUzrmuoY4xl4FUujnsv/P6I/zI=",
"owner": "NixOS", "path": "/nix/store/kwd6lmx004rkv2r00vj3fcg5ijfvnagk-source",
"repo": "nixpkgs", "rev": "bbe7d8f876fbbe7c959c90ba2ae2852220573261",
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d", "type": "path"
"type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "id": "nixpkgs",
"ref": "nixpkgs-unstable", "type": "indirect"
"repo": "nixpkgs",
"type": "github"
} }
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
@ -536,19 +535,6 @@
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": {
"lastModified": 1705677747,
"narHash": "sha256-eyM3okYtMgYDgmYukoUzrmuoY4xl4FUujnsv/P6I/zI=",
"path": "/nix/store/kwd6lmx004rkv2r00vj3fcg5ijfvnagk-source",
"rev": "bbe7d8f876fbbe7c959c90ba2ae2852220573261",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1706191920, "lastModified": 1706191920,
"narHash": "sha256-eLihrZAPZX0R6RyM5fYAWeKVNuQPYjAkCUBr+JNvtdE=", "narHash": "sha256-eLihrZAPZX0R6RyM5fYAWeKVNuQPYjAkCUBr+JNvtdE=",
@ -564,22 +550,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": {
"locked": {
"lastModified": 1704842529,
"narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nvim": { "nvim": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_4", "flake-utils": "flake-utils_4",
@ -631,7 +601,9 @@
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_5", "flake-utils": "flake-utils_5",
"gitignore": "gitignore", "gitignore": "gitignore",
"nixpkgs": "nixpkgs_4", "nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
@ -655,10 +627,12 @@
"home-manager": "home-manager", "home-manager": "home-manager",
"microvm": "microvm", "microvm": "microvm",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_2",
"nvim": "nvim", "nvim": "nvim",
"pre-commit-hooks": "pre-commit-hooks", "pre-commit-hooks": "pre-commit-hooks",
"tfa": "tfa" "systems": "systems_8",
"tfa": "tfa",
"treefmt-nix": "treefmt-nix_3"
} }
}, },
"spectrum": { "spectrum": {
@ -781,6 +755,20 @@
"type": "github" "type": "github"
} }
}, },
"systems_8": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"id": "systems",
"type": "indirect"
}
},
"tfa": { "tfa": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -844,6 +832,26 @@
"type": "github" "type": "github"
} }
}, },
"treefmt-nix_3": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1706462057,
"narHash": "sha256-7dG1D4iqqt0bEbBqUWk6lZiSqqwwAO0Hd1L5opVyhNM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "c6153c2a3ff4c38d231e3ae99af29b87f1df5901",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"utils": { "utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"

113
flake.nix
View file

@ -4,8 +4,14 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master";
deploy-rs.url = "github:serokell/deploy-rs"; deploy-rs = {
pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; url = "github:serokell/deploy-rs";
inputs.nixpkgs.follows = "nixpkgs";
};
pre-commit-hooks = {
url = "github:cachix/pre-commit-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -23,13 +29,25 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.foundry-nix.url = "github:shazow/foundry.nix"; inputs.foundry-nix.url = "github:shazow/foundry.nix";
}; };
treefmt-nix = {
url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
microvm = { microvm = {
url = "github:astro/microvm.nix"; url = "github:astro/microvm.nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = { self, nixpkgs, home-manager, nixos-hardware, nvim, ethereum-nix, deploy-rs, ... } @inputs: outputs = {
let self,
nixpkgs,
home-manager,
nvim,
ethereum-nix,
deploy-rs,
systems,
...
} @ inputs: let
attrs = { attrs = {
username = "e"; username = "e";
}; };
@ -38,57 +56,52 @@
inherit system; inherit system;
config.allowUnfree = true; config.allowUnfree = true;
overlays = [ overlays = [
(final: prev: { (final: _prev: {
inherit (inputs.nvim.packages.${final.system}) full; inherit (inputs.nvim.packages.${final.system}) full;
inherit (inputs.tfa.packages.${final.system}) twofa; inherit (inputs.tfa.packages.${final.system}) twofa;
}) })
]; ];
}; };
eachSystem = f: nixpkgs.lib.genAttrs (import systems) (system: f nixpkgs.legacyPackages.${system});
treefmtEval = eachSystem (pkgs: inputs.treefmt-nix.lib.evalModule pkgs ./treefmt.nix);
in { in {
nixosConfigurations = ( nixosConfigurations = import ./nixos {inherit inputs pkgs attrs system ethereum-nix;};
import ./nixos { inherit inputs pkgs attrs system ethereum-nix; } homeConfigurations = import ./home-manager {inherit inputs pkgs attrs;};
); deploy.nodes = {
homeConfigurations = ( htz = {
import ./home-manager { inherit inputs pkgs attrs; } hostname = "htz";
); sshUser = "root";
deploy.nodes = { remoteBuild = true;
htz = { profiles.system = {
hostname = "htz"; user = "root";
sshUser = "root"; path = deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.htz;
remoteBuild = true;
profiles.system = {
user = "root";
path = deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.htz;
};
};
racknerd = {
hostname = "racknerd";
sshUser = "e";
remoteBuild = true;
profiles.system = {
user = "root";
path = deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.rknrd;
};
};
};
checks = {
pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
typos.enable = true;
alejandra.enable = true;
deadnix.enable = true;
statix.enable = true;
};
};
};
devShells.${system}.default = pkgs.mkShell {
buildInputs = [
pkgs.nix
pkgs.home-manager
pkgs.git
deploy-rs.packages.${system}.deploy-rs
];
}; };
}; };
} racknerd = {
hostname = "racknerd";
sshUser = "e";
remoteBuild = true;
profiles.system = {
user = "root";
path = deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.rknrd;
};
};
};
checks = {
pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks.treefmt.enable = true;
hooks.treefmt.package = eachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper);
};
};
formatter = eachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper);
devShells.${system}.default = pkgs.mkShell {
buildInputs = [
pkgs.nix
pkgs.home-manager
pkgs.git
deploy-rs.packages.${system}.deploy-rs
];
};
};
}

View file

@ -1,12 +1,16 @@
{ inputs, pkgs, attrs, ...}:
{ {
inputs,
pkgs,
attrs,
...
}: {
"e" = inputs.home-manager.lib.homeManagerConfiguration { "e" = inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
extraSpecialArgs = { extraSpecialArgs = {
inherit inputs attrs; inherit inputs attrs;
host = { host = {
hostName = "t14"; hostName = "t14";
username = attrs.username; inherit (attrs) username;
}; };
}; };
modules = [ modules = [
@ -20,7 +24,7 @@
inherit inputs attrs; inherit inputs attrs;
host = { host = {
hostName = "e"; hostName = "e";
username = attrs.username; inherit (attrs) username;
}; };
}; };
modules = [ modules = [
@ -28,4 +32,3 @@
]; ];
}; };
} }

View file

@ -1,5 +1,4 @@
{ inputs, ... }: {inputs, ...}: {
{
programs.home-manager.enable = true; programs.home-manager.enable = true;
nix = { nix = {
registry.nixpkgs.flake = inputs.nixpkgs; registry.nixpkgs.flake = inputs.nixpkgs;
@ -12,6 +11,6 @@
}; };
}; };
}; };
imports = [ ./shared/programs/min.nix ]; imports = [./shared/programs/min.nix];
xdg.enable = true; xdg.enable = true;
} }

View file

@ -1,5 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
home.packages = with pkgs; [ home.packages = with pkgs; [
twofa twofa
]; ];

View file

@ -1,5 +1,4 @@
{ home-manager, config, lib, pkgs, ... }: {...}: {
{
imports = [ imports = [
./dev ./dev
./nvim ./nvim

View file

@ -1,5 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
home.packages = with pkgs; [ home.packages = with pkgs; [
ripgrep ripgrep
k9s k9s

View file

@ -1,5 +1,4 @@
{ home-manager, config, lib, pkgs, ... }: {...}: {
{
imports = [ imports = [
./shell ./shell
]; ];

View file

@ -1,5 +1,4 @@
{ pkgs, ...}: {pkgs, ...}: {
{
home.packages = with pkgs; [ home.packages = with pkgs; [
full full
]; ];

View file

@ -1,5 +1,4 @@
{ host, ... }: {host, ...}: {
{
imports = [ imports = [
./tmux.nix ./tmux.nix
./git.nix ./git.nix
@ -8,7 +7,7 @@
programs.bash = { programs.bash = {
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;
historyControl = [ "ignorespace" ]; historyControl = ["ignorespace"];
historyIgnore = [ historyIgnore = [
":q" ":q"
"exit" "exit"
@ -36,36 +35,36 @@
"histappend" "histappend"
]; ];
bashrcExtra = '' bashrcExtra = ''
export PROMPT_COMMAND="prompt_command;history -a" export PROMPT_COMMAND="prompt_command;history -a"
export PATH="/usr/local/go/bin:~/go/bin:~/.bin:~/.local/bin:$PATH" export PATH="/usr/local/go/bin:~/go/bin:~/.bin:~/.local/bin:$PATH"
export GPG_2FA="mail@10110110.xyz" export GPG_2FA="mail@10110110.xyz"
export MANPAGER="nvim +Man!" export MANPAGER="nvim +Man!"
export EDITOR="nvim" export EDITOR="nvim"
export _JAVA_AWT_WM_NONREPARENTING=1 export _JAVA_AWT_WM_NONREPARENTING=1
export NIX_FLAKE="/home/e/dev/nix" export NIX_FLAKE="/home/e/dev/nix"
[[ $- != *i* ]] && return [[ $- != *i* ]] && return
function exists { function exists {
type $1 >/dev/null 2>&1 type $1 >/dev/null 2>&1
} }
function prompt_command { function prompt_command {
GIT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null | cut -c 1-10) GIT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null | cut -c 1-10)
[[ $GIT_BRANCH != "" ]] && \ [[ $GIT_BRANCH != "" ]] && \
PS1="\[\033[38;5;1m\][\u@\h\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;7m\]\W\[$(tput sgr0)\]\[\033[38;5;1m\]]\[$(tput sgr0)\]\[$(tput sgr0)\]\[\033[38;5;3m\]($GIT_BRANCH)\[\033[38;5;7m\]\$\[$(tput sgr0)\] " || \ PS1="\[\033[38;5;1m\][\u@\h\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;7m\]\W\[$(tput sgr0)\]\[\033[38;5;1m\]]\[$(tput sgr0)\]\[$(tput sgr0)\]\[\033[38;5;3m\]($GIT_BRANCH)\[\033[38;5;7m\]\$\[$(tput sgr0)\] " || \
PS1="\[\033[38;5;1m\][\u@\h\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;7m\]\W\[$(tput sgr0)\]\[\033[38;5;1m\]]\[$(tput sgr0)\]\[$(tput sgr0)\]\[\033[38;5;3m\]\[\033[38;5;7m\]\$\[$(tput sgr0)\] " PS1="\[\033[38;5;1m\][\u@\h\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;7m\]\W\[$(tput sgr0)\]\[\033[38;5;1m\]]\[$(tput sgr0)\]\[$(tput sgr0)\]\[\033[38;5;3m\]\[\033[38;5;7m\]\$\[$(tput sgr0)\] "
} }
bind "set completion-ignore-case on" bind "set completion-ignore-case on"
bind "set completion-map-case on" bind "set completion-map-case on"
bind "set show-all-if-ambiguous on" bind "set show-all-if-ambiguous on"
bind "set menu-complete-display-prefix on" bind "set menu-complete-display-prefix on"
bind '"\t":menu-complete' bind '"\t":menu-complete'
bind '"\C-k": previous-history' bind '"\C-k": previous-history'
bind '"\C-j": next-history' bind '"\C-j": next-history'
function cd { function cd {
cmd="ls --color=auto" cmd="ls --color=auto"
builtin cd "$@" && $cmd builtin cd "$@" && $cmd
} }
exists "kubectl" && source <(kubectl completion bash) exists "kubectl" && source <(kubectl completion bash)
''; '';
}; };
programs.fzf = { programs.fzf = {

View file

@ -1,5 +1,4 @@
{ ... }: _: {
{
programs.direnv = { programs.direnv = {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = true;

View file

@ -1,6 +1,5 @@
{ ... }: _: {
{ programs.git = {
programs.git= {
enable = true; enable = true;
userEmail = "cjriddz@protonmail.com"; userEmail = "cjriddz@protonmail.com";
userName = "iofq"; userName = "iofq";

View file

@ -1,5 +1,4 @@
{ ... }: _: {
{
programs.tmux = { programs.tmux = {
enable = true; enable = true;
keyMode = "vi"; keyMode = "vi";
@ -11,12 +10,11 @@
# vi mode navigation # vi mode navigation
customPaneNavigationAndResize = true; customPaneNavigationAndResize = true;
extraConfig = '' extraConfig = ''
bind-key -T copy-mode-vi 'v' send -X begin-selection bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'xclip -sel clip -i' bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'xclip -sel clip -i'
set -g status-right "" set -g status-right ""
setw -g status-style 'bg=colour0 fg=colour7' setw -g status-style 'bg=colour0 fg=colour7'
setw -g window-status-current-format '[#P:#W*] ' setw -g window-status-current-format '[#P:#W*] '
''; '';
}; };
} }

View file

@ -1,5 +1,8 @@
{ pkgs, config, ... }:
{ {
pkgs,
config,
...
}: {
programs.taskwarrior = { programs.taskwarrior = {
enable = true; enable = true;
colorTheme = "solarized-dark-256"; colorTheme = "solarized-dark-256";

View file

@ -1,5 +1,4 @@
{ ... }: _: {
{
programs.alacritty = { programs.alacritty = {
enable = true; enable = true;
settings = { settings = {
@ -78,7 +77,6 @@
action = "ScrollPageDown"; action = "ScrollPageDown";
} }
]; ];
}; };
}; };
} }

View file

@ -1,5 +1,4 @@
{pkgs, ... }: {pkgs, ...}: {
{
home.packages = with pkgs; [ home.packages = with pkgs; [
pulseaudio pulseaudio
pulsemixer pulsemixer

View file

@ -1,5 +1,4 @@
{ home-manager, config, lib, pkgs, ... }: {...}: {
{
imports = [ imports = [
./librewolf ./librewolf
./alacritty ./alacritty

View file

@ -1,4 +1,3 @@
{ pkgs, ... }: _: {
{
programs.librewolf.enable = true; programs.librewolf.enable = true;
} }

View file

@ -1,5 +1,9 @@
{ config, lib, pkgs, ... }:
{ {
config,
lib,
pkgs,
...
}: {
home.packages = with pkgs; [ home.packages = with pkgs; [
wl-clipboard wl-clipboard
autotiling-rs autotiling-rs
@ -10,12 +14,12 @@
home.sessionVariables = { home.sessionVariables = {
# needed for Sway and Firefox to play nice # needed for Sway and Firefox to play nice
XDG_CURRENT_DESKTOP = "sway"; XDG_CURRENT_DESKTOP = "sway";
MOZ_DBUS_REMOTE=1; MOZ_DBUS_REMOTE = 1;
}; };
systemd.user.services.autotiling = { systemd.user.services.autotiling = {
Install = { Install = {
WantedBy = [ "sway-session.target" ]; WantedBy = ["sway-session.target"];
PartOf = [ "graphical-session.target" ]; PartOf = ["graphical-session.target"];
}; };
Service = { Service = {
ExecStart = "${pkgs.autotiling-rs}/bin/autotiling-rs"; ExecStart = "${pkgs.autotiling-rs}/bin/autotiling-rs";
@ -65,26 +69,27 @@
}; };
modifier = "Mod4"; modifier = "Mod4";
keybindings = let keybindings = let
modifier = config.wayland.windowManager.sway.config.modifier; inherit (config.wayland.windowManager.sway.config) modifier;
in lib.mkOptionDefault { in
Prior = "nop"; lib.mkOptionDefault {
Next = "nop"; Prior = "nop";
"${modifier}+x" = "kill"; Next = "nop";
"${modifier}+space" = "exec ${pkgs.dmenu}/bin/dmenu_path | ${pkgs.dmenu}/bin/dmenu | ${pkgs.findutils}/bin/xargs swaymsg exec --"; "${modifier}+x" = "kill";
"${modifier}+bracketleft" = "exec --no-startup-id grimshot --notify save area /tmp/scrot-$(date \"+%Y-%m-%d\"T\"%H:%M:%S\").png"; "${modifier}+space" = "exec ${pkgs.dmenu}/bin/dmenu_path | ${pkgs.dmenu}/bin/dmenu | ${pkgs.findutils}/bin/xargs swaymsg exec --";
"${modifier}+bracketright" = "exec --no-startup-id grimshot --notify copy area"; "${modifier}+bracketleft" = "exec --no-startup-id grimshot --notify save area /tmp/scrot-$(date \"+%Y-%m-%d\"T\"%H:%M:%S\").png";
"${modifier}+Shift+Ctrl+l" = "exec loginctl lock-session"; "${modifier}+bracketright" = "exec --no-startup-id grimshot --notify copy area";
"XF86MonBrightnessDown" = "exec light -U 10"; "${modifier}+Shift+Ctrl+l" = "exec loginctl lock-session";
"XF86MonBrightnessUp" = "exec light -A 10"; "XF86MonBrightnessDown" = "exec light -U 10";
"XF86AudioRaiseVolume" = "exec 'pactl set-sink-volume @DEFAULT_SINK@ +1%'"; "XF86MonBrightnessUp" = "exec light -A 10";
"XF86AudioLowerVolume" = "exec 'pactl set-sink-volume @DEFAULT_SINK@ -1%'"; "XF86AudioRaiseVolume" = "exec 'pactl set-sink-volume @DEFAULT_SINK@ +1%'";
"XF86AudioMute" = "exec 'pactl set-sink-mute @DEFAULT_SINK@ toggle'"; "XF86AudioLowerVolume" = "exec 'pactl set-sink-volume @DEFAULT_SINK@ -1%'";
"XF86Display" = "exec 'swaymsg \"output eDP-1 toggle\"'"; "XF86AudioMute" = "exec 'pactl set-sink-mute @DEFAULT_SINK@ toggle'";
}; "XF86Display" = "exec 'swaymsg \"output eDP-1 toggle\"'";
};
assigns = { assigns = {
"9" = [ "9" = [
{ class = "discord";} {class = "discord";}
{ class = "Signal";} {class = "Signal";}
]; ];
}; };
bars = [ bars = [
@ -140,8 +145,8 @@
}; };
}; };
extraConfig = '' extraConfig = ''
bindswitch --reload --locked lid:on exec "[ $(swaymsg -t get_outputs | jq '. | length') -gt 1 ] && swaymsg output eDP-1 disable" bindswitch --reload --locked lid:on exec "[ $(swaymsg -t get_outputs | jq '. | length') -gt 1 ] && swaymsg output eDP-1 disable"
bindswitch --reload --locked lid:off output eDP-1 enable bindswitch --reload --locked lid:off output eDP-1 enable
''; '';
}; };
programs.i3status = { programs.i3status = {
@ -169,14 +174,14 @@
format_up = "%signal"; format_up = "%signal";
}; };
}; };
"memory" = { "memory" = {
settings = { settings = {
format = "%used"; format = "%used";
format_degraded = "%used"; format_degraded = "%used";
threshold_degraded = "1G"; threshold_degraded = "1G";
}; };
}; };
"battery all" = { "battery all" = {
settings = { settings = {
format = "%percentage%status %remaining"; format = "%percentage%status %remaining";
status_chr = "+"; status_chr = "+";

View file

@ -1,5 +1,4 @@
{pkgs, ... }: {pkgs, ...}: {
{
home.packages = with pkgs; [ home.packages = with pkgs; [
xdg-utils xdg-utils
]; ];

View file

@ -1,11 +1,14 @@
{ pkgs, attrs, ... }:
{ {
pkgs,
attrs,
...
}: {
imports = [ imports = [
../shared/programs/default.nix ../shared/programs/default.nix
../shared/wayland/default.nix ../shared/wayland/default.nix
]; ];
home = { home = {
username = attrs.username; inherit (attrs) username;
homeDirectory = "/home/" + attrs.username; homeDirectory = "/home/" + attrs.username;
packages = with pkgs; [ packages = with pkgs; [
# gaming # gaming
@ -26,7 +29,6 @@
# sysutils # sysutils
appimage-run appimage-run
wireguard-tools wireguard-tools
]; ];
}; };
programs.ssh = { programs.ssh = {

View file

@ -1,10 +1,9 @@
{ host, ... }: {host, ...}: {
{
users.groups.plugdev = {}; # Create plugdev group users.groups.plugdev = {}; # Create plugdev group
networking.hostName = host.hostName; networking.hostName = host.hostName;
users.users.${host.username} = { users.users.${host.username} = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ extraGroups = [
"wheel" "wheel"
"plugdev" "plugdev"
"video" "video"
@ -15,7 +14,7 @@
# Enable flakes and unfree packages # Enable flakes and unfree packages
nix.settings = { nix.settings = {
auto-optimise-store = true; auto-optimise-store = true;
experimental-features = [ "nix-command" "flakes" ]; experimental-features = ["nix-command" "flakes"];
}; };
nix.gc = { nix.gc = {
automatic = true; automatic = true;

View file

@ -1,10 +1,16 @@
{ inputs, pkgs, attrs, system, ... }: { {
inputs,
pkgs,
attrs,
system,
...
}: {
t14 = inputs.nixpkgs.lib.nixosSystem { t14 = inputs.nixpkgs.lib.nixosSystem {
specialArgs = { specialArgs = {
inherit inputs system pkgs; inherit inputs system pkgs;
host = { host = {
hostName = "t14"; hostName = "t14";
username = attrs.username; inherit (attrs) username;
}; };
}; };
modules = [ modules = [
@ -18,7 +24,7 @@
inherit inputs system pkgs; inherit inputs system pkgs;
host = { host = {
hostName = "rknrd"; hostName = "rknrd";
username = attrs.username; inherit (attrs) username;
}; };
}; };
modules = [ modules = [
@ -38,7 +44,7 @@
}; };
host = { host = {
hostName = "htz"; hostName = "htz";
username = attrs.username; inherit (attrs) username;
}; };
}; };
modules = [ modules = [

View file

@ -1,8 +1,12 @@
{ pkgs, addressList, ... }: { {
pkgs,
addressList,
...
}: {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
./vms ./vms
#./eth.nix #./eth.nix
]; ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim vim
@ -18,11 +22,13 @@
}; };
nat = { nat = {
enable = true; enable = true;
forwardPorts = [ { forwardPorts = [
proto = "tcp"; {
sourcePort = 80; proto = "tcp";
destination = addressList.vm-test.ipv4; sourcePort = 80;
} ]; destination = addressList.vm-test.ipv4;
}
];
}; };
}; };
services.openssh.enable = true; services.openssh.enable = true;
@ -32,12 +38,12 @@
}; };
e = { e = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" ]; extraGroups = ["wheel"];
home = "/home/e"; home = "/home/e";
openssh.authorizedKeys.keys = [''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHM4Zr0PFN7QdOG2aJ+nuzRCK6caulrpY6bphA1Ppl8Y e@t14'']; openssh.authorizedKeys.keys = [''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHM4Zr0PFN7QdOG2aJ+nuzRCK6caulrpY6bphA1Ppl8Y e@t14''];
}; };
}; };
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
nix.settings.trusted-users = ["e"]; nix.settings.trusted-users = ["e"];
system.stateVersion = "23.11"; system.stateVersion = "23.11";
} }

View file

@ -1,4 +1,8 @@
{ system, ethereum-nix, ...}: { {
system,
ethereum-nix,
...
}: {
services.ethereum.geth.mainnet = { services.ethereum.geth.mainnet = {
enable = true; enable = true;
package = ethereum-nix.packages.${system}.geth; package = ethereum-nix.packages.${system}.geth;
@ -12,15 +16,15 @@
}; };
}; };
services.nginx.enable = true; services.nginx.enable = true;
services.nginx.virtualHosts."contabo.10110110.xyz" = { services.nginx.virtualHosts."contabo.10110110.xyz" = {
addSSL = true; addSSL = true;
enableACME = true; enableACME = true;
root = "/var/www/fam"; root = "/var/www/fam";
}; };
security.acme = { security.acme = {
acceptTerms = true; acceptTerms = true;
defaults.email = "cjriddz@protonmail.com"; defaults.email = "cjriddz@protonmail.com";
}; };
networking.firewall = { networking.firewall = {
enable = true; enable = true;
allowedTCPPorts = [80 443]; allowedTCPPorts = [80 443];
@ -46,26 +50,25 @@
history = "prune"; history = "prune";
graffiti = "yo"; graffiti = "yo";
metrics = { metrics = {
enable = true; enable = true;
port = 5054; port = 5054;
address = "127.0.0.1"; address = "127.0.0.1";
}; };
rest = { rest = {
enable = true; enable = true;
port = 5052; port = 5052;
address = "0.0.0.0"; address = "0.0.0.0";
allow-origin = "*"; allow-origin = "*";
}; };
payload-builder = { payload-builder = {
enable = true; enable = true;
url = "http://localhost"; url = "http://localhost";
}; };
light-client-data = { light-client-data = {
serve = true; serve = true;
import-mode = "only-new"; import-mode = "only-new";
max-periods = "3"; max-periods = "3";
}; };
}; };
}; };
} }

View file

@ -1,6 +1,9 @@
{ modulesPath, lib, ... }:
{ {
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; modulesPath,
lib,
...
}: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
boot = { boot = {
tmp.cleanOnBoot = true; tmp.cleanOnBoot = true;
@ -11,11 +14,11 @@
}; };
initrd.availableKernelModules = [ initrd.availableKernelModules = [
"ata_piix" "ata_piix"
"uhci_hcd" "uhci_hcd"
"xen_blkfront" "xen_blkfront"
"vmw_pvscsi" "vmw_pvscsi"
]; ];
initrd.kernelModules = [ "nvme" ]; initrd.kernelModules = ["nvme"];
}; };
fileSystems = { fileSystems = {
"/boot" = { "/boot" = {
@ -27,16 +30,18 @@
fsType = "ext4"; fsType = "ext4";
}; };
}; };
swapDevices = [{ swapDevices = [
device = "/dev/dm-1"; {
}]; device = "/dev/dm-1";
}
];
zramSwap.enable = false; zramSwap.enable = false;
networking = { networking = {
useNetworkd = true; useNetworkd = true;
nat = { nat = {
enable = true; enable = true;
externalInterface = "enp0s31f6"; externalInterface = "enp0s31f6";
internalInterfaces = [ "microvm" ]; internalInterfaces = ["microvm"];
}; };
}; };
systemd.network = { systemd.network = {
@ -54,9 +59,11 @@
DHCPServer = true; DHCPServer = true;
IPv6SendRA = true; IPv6SendRA = true;
}; };
addresses = [ { addresses = [
addressConfig.Address = "10.0.0.1/24"; {
} ]; addressConfig.Address = "10.0.0.1/24";
}
];
}; };
"11-microvm" = { "11-microvm" = {
matchConfig.Name = "vm-*"; matchConfig.Name = "vm-*";

View file

@ -1,30 +1,44 @@
{ lib, pkgs, addressList, ... }: {
let genVMConfig = { name, config ? {}, ro-store ? true }: { lib,
restartIfChanged = true; pkgs,
pkgs = pkgs; addressList,
config = config // { ...
microvm = { }: let
shares = lib.mkIf (ro-store == true) [{ genVMConfig = {
source = "/nix/store"; name,
mountPoint = "/nix/.ro-store"; config ? {},
tag = "ro-store"; ro-store ? true,
proto = "virtiofs"; }: {
}]; restartIfChanged = true;
interfaces = [ inherit pkgs;
{ config =
type = "tap"; config
id = name; // {
mac = addressList.${name}.mac; microvm = {
} shares = lib.mkIf ro-store [
]; {
}; source = "/nix/store";
} // import ./vmDefaults.nix { inherit name addressList; }; mountPoint = "/nix/.ro-store";
}; tag = "ro-store";
proto = "virtiofs";
}
];
interfaces = [
{
type = "tap";
id = name;
inherit (addressList.${name}) mac;
}
];
};
}
// import ./vmDefaults.nix {inherit name addressList;};
};
in { in {
microvm.vms = { microvm.vms = {
vm-test = genVMConfig { vm-test = genVMConfig {
name = "vm-test"; name = "vm-test";
config = import ./vm-test.nix { inherit pkgs addressList; }; config = import ./vm-test.nix {inherit pkgs addressList;};
}; };
}; };
} }

View file

@ -0,0 +1,27 @@
{config, ...}: let
domain = "ts.10110110.xyz";
in {
services = {
headscale = {
enable = true;
address = "0.0.0.0";
port = 8080;
serverUrl = "https://${domain}";
dns = {baseDomain = "10110110.xyz";};
settings = {logtail.enabled = false;};
};
services.nginx = {
enable = true;
virtualHosts.${domain} = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://localhost:${toString config.services.headscale.port}";
proxyWebsockets = true;
};
};
};
};
system.stateVersion = "23.11";
}

View file

@ -1,4 +1,4 @@
{ ... }: { _: {
networking.firewall = { networking.firewall = {
enable = true; enable = true;
allowedTCPPorts = [80]; allowedTCPPorts = [80];

View file

@ -1,4 +1,8 @@
{ name, addressList, ...}: { {
name,
addressList,
...
}: {
systemd.network = { systemd.network = {
enable = true; enable = true;
networks."20-lan" = { networks."20-lan" = {
@ -27,11 +31,12 @@
root = { root = {
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIItTJm2iu/5xacOoh4/JAvMtHE62duDlVVXpvVP+uQMR root@htz'' ''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIItTJm2iu/5xacOoh4/JAvMtHE62duDlVVXpvVP+uQMR root@htz''
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILU2TUxKyGKoZ68IG4hw23RmxVf72u5K9W0StkgTr0b2 e@t14'' ]; ''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILU2TUxKyGKoZ68IG4hw23RmxVf72u5K9W0StkgTr0b2 e@t14''
];
}; };
e = { e = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" ]; extraGroups = ["wheel"];
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIItTJm2iu/5xacOoh4/JAvMtHE62duDlVVXpvVP+uQMR root@htz'' ''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIItTJm2iu/5xacOoh4/JAvMtHE62duDlVVXpvVP+uQMR root@htz''
''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILU2TUxKyGKoZ68IG4hw23RmxVf72u5K9W0StkgTr0b2 e@t14'' ''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILU2TUxKyGKoZ68IG4hw23RmxVf72u5K9W0StkgTr0b2 e@t14''

View file

@ -1,4 +1,8 @@
{ inputs, pkgs, system, ... }: { {
pkgs,
system,
...
}: {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
./minecraft.nix ./minecraft.nix
@ -19,20 +23,20 @@
services.openssh.enable = true; services.openssh.enable = true;
users.users = { users.users = {
root = { root = {
openssh.authorizedKeys.keys = [''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILU2TUxKyGKoZ68IG4hw23RmxVf72u5K9W0StkgTr0b2 e@t14'' ]; openssh.authorizedKeys.keys = [''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILU2TUxKyGKoZ68IG4hw23RmxVf72u5K9W0StkgTr0b2 e@t14''];
}; };
e = { e = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" ]; extraGroups = ["wheel"];
packages = with pkgs; [ packages = with pkgs; [
vim vim
htop htop
tree tree
]; ];
openssh.authorizedKeys.keys = [''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILU2TUxKyGKoZ68IG4hw23RmxVf72u5K9W0StkgTr0b2 e@t14'' ]; openssh.authorizedKeys.keys = [''ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILU2TUxKyGKoZ68IG4hw23RmxVf72u5K9W0StkgTr0b2 e@t14''];
}; };
}; };
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
nix.settings.trusted-users = ["e"]; nix.settings.trusted-users = ["e"];
system.stateVersion = "22.11"; system.stateVersion = "22.11";
} }

View file

@ -1,10 +1,16 @@
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; lib,
modulesPath,
...
}: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi" ]; boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
boot.initrd.kernelModules = [ "nvme" ]; boot.initrd.kernelModules = ["nvme"];
fileSystems."/" = { device = "/dev/vda1"; fsType = "ext4"; }; fileSystems."/" = {
swapDevices = [ { device = "/dev/vda2"; } ]; device = "/dev/vda1";
fsType = "ext4";
};
swapDevices = [{device = "/dev/vda2";}];
} }

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { {pkgs, ...}: {
services.minecraft-server = { services.minecraft-server = {
enable = true; enable = true;
eula = true; eula = true;
@ -16,5 +16,4 @@
k359 = "a5ccc07c-144d-4dd0-b07c-48c4d5302b58"; k359 = "a5ccc07c-144d-4dd0-b07c-48c4d5302b58";
}; };
}; };
} }

View file

@ -1,95 +1,93 @@
{ pkgs, ... }: {pkgs, ...}: {
{ imports = [
imports = ./hardware-configuration.nix
[ ./nano.nix
./hardware-configuration.nix ];
./nano.nix boot.loader.systemd-boot.enable = true;
]; boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
networking.firewall = { networking.firewall = {
enable = true; enable = true;
allowedTCPPorts = [11111 80]; allowedTCPPorts = [11111 80];
allowedUDPPorts = []; allowedUDPPorts = [];
logRefusedConnections = true; logRefusedConnections = true;
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
cryptsetup cryptsetup
nfs-utils nfs-utils
]; ];
virtualisation.podman = { virtualisation.podman = {
enable = true; enable = true;
dockerCompat = true; dockerCompat = true;
}; };
programs.light.enable = true; programs.light.enable = true;
security.pam.services.swaylock = {}; security.pam.services.swaylock = {};
services.pipewire = { services.pipewire = {
enable = true; enable = true;
alsa.enable = true; alsa.enable = true;
pulse.enable = true; pulse.enable = true;
}; };
programs.ssh = { programs.ssh = {
startAgent = true; startAgent = true;
}; };
services.flatpak.enable = true; services.flatpak.enable = true;
services.dbus.enable = true; services.dbus.enable = true;
xdg.portal = { xdg.portal = {
enable = true; enable = true;
xdgOpenUsePortal = true; xdgOpenUsePortal = true;
wlr.enable = true; wlr.enable = true;
extraPortals = [ extraPortals = [
pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-wlr pkgs.xdg-desktop-portal-wlr
];
config = {
common = {
default = [
"*"
]; ];
config = { };
common = {
default = [
"*"
];
};
};
}; };
};
services.tlp = { services.tlp = {
enable = true; enable = true;
settings = { settings = {
WIFI_PWR_ON_BAT = "off"; WIFI_PWR_ON_BAT = "off";
CPU_BOOST_ON_BAT = "0"; CPU_BOOST_ON_BAT = "0";
CPU_BOOST_ON_AC = "1"; CPU_BOOST_ON_AC = "1";
PLATFORM_PROFILE_ON_AC = "performance"; PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "low-power"; PLATFORM_PROFILE_ON_BAT = "low-power";
CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_MIN_PERF_ON_AC = 0; CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100; CPU_MAX_PERF_ON_AC = 100;
CPU_MIN_PERF_ON_BAT = 0; CPU_MIN_PERF_ON_BAT = 0;
CPU_MAX_PERF_ON_BAT = 25; CPU_MAX_PERF_ON_BAT = 25;
RADEON_DPM_STATE_ON_AC="performance"; RADEON_DPM_STATE_ON_AC = "performance";
RADEON_DPM_STATE_ON_BAT="battery"; RADEON_DPM_STATE_ON_BAT = "battery";
RADEON_POWER_PROFILE_ON_AC="high"; RADEON_POWER_PROFILE_ON_AC = "high";
RADEON_POWER_PROFILE_ON_BAT="low"; RADEON_POWER_PROFILE_ON_BAT = "low";
#Optional helps save long term battery health #Optional helps save long term battery health
START_CHARGE_THRESH_BAT0 = 80; # bellow it starts to charge START_CHARGE_THRESH_BAT0 = 80; # bellow it starts to charge
STOP_CHARGE_THRESH_BAT0 = 95; # above it stops charging STOP_CHARGE_THRESH_BAT0 = 95; # above it stops charging
};
}; };
};
hardware.opengl.enable = true; hardware.opengl.enable = true;
hardware.opengl.extraPackages = [ hardware.opengl.extraPackages = [
pkgs.mesa.drivers pkgs.mesa.drivers
pkgs.libGL pkgs.libGL
]; ];
hardware.opengl.setLdLibraryPath = true; hardware.opengl.setLdLibraryPath = true;
boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelPackages = pkgs.linuxPackages_latest;
system.stateVersion = "22.11"; system.stateVersion = "22.11";
} }

View file

@ -1,29 +1,32 @@
# 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, ... }:
{ {
imports = config,
[ (modulesPath + "/installer/scan/not-detected.nix") lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "nvme" "ehci_pci" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; boot.initrd.availableKernelModules = ["nvme" "ehci_pci" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
boot.initrd.kernelModules = [ "amdgpu" ]; boot.initrd.kernelModules = ["amdgpu"];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/f56e8356-3915-4ff8-957c-de7f9a72b326"; device = "/dev/disk/by-uuid/f56e8356-3915-4ff8-957c-de7f9a72b326";
fsType = "btrfs"; fsType = "btrfs";
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/346A-5AF5"; device = "/dev/disk/by-uuid/346A-5AF5";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = [ ]; swapDevices = [];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's

View file

@ -1,16 +1,15 @@
{ ... }: _: {
{
services.udev.extraRules = '' services.udev.extraRules = ''
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="1b7c", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="1b7c", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="2b7c", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="2b7c", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="3b7c", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="3b7c", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="4b7c", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="4b7c", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="1807", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="1807", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="1808", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="1808", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0000", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0000", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0001", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0001", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0004", MODE="0660", TAG+="uaccess", TAG+="udev-acl" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0004", MODE="0660", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="1011", MODE="0660", GROUP="plugdev" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="1011", MODE="0660", GROUP="plugdev"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="1015", MODE="0660", GROUP="plugdev" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="1015", MODE="0660", GROUP="plugdev"
''; '';
} }

6
treefmt.nix Normal file
View file

@ -0,0 +1,6 @@
_: {
projectRootFile = "flake.nix";
programs.alejandra.enable = true;
programs.deadnix.enable = true;
programs.statix.enable = true;
}