Merge pull request 'treewide: refactor w/ deadnix && statix applied' (#27) from linting-refactor into master

Reviewed-on: #27
This commit is contained in:
notohh 2024-02-01 15:50:27 -05:00
commit 034bc87e37
75 changed files with 2048 additions and 755 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
result
.pre-commit-config.yaml

View file

@ -1,17 +0,0 @@
when:
- event: [push]
- branch: master
- path:
include: ['**.nix']
exclude: ['**.md', 'docs/**', '.woodpecker/*.yaml', '**.js', '**.lua', '**.scss', '**.nu']
steps:
check:
image: nixos/nix
commands:
- echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
- nix flake check
fmt:
image: nixos/nix
commands:
- echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
- nix run nixpkgs#alejandra -- -c .

View file

@ -3,25 +3,16 @@ when:
- event: [pull_request_closed]
steps:
attic-push:
image: git.vdx.hu/voidcontext/woodpecker-plugin-nix-attic
settings:
binary_cache: https://cache.flake.sh/
binary_cache_public_key: kyasshu:g1heIgCgG7M4San6nRsz/omcVQ1GTc7+zKKm3L9Co7o=
binary_cache_token:
from_secret: kyasshu_access_token
script: |
attic login kyasshu $PLUGIN_BINARY_CACHE_TOKEN
deploy:
image: nixos/nix
commands: |
echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
echo "access-tokens = github.com=$${GH_PAT}" >> /etc/nix/nix.conf
echo 'builders-use-substitutes = true' >> /etc/nix/nix.conf
echo 'substituters = https://cache.flake.sh/kyasshu https://hyprland.cachix.org https://cache.nixos.org https://nix-gaming.cachix.org https://anyrun.cachix.org https://viperml.cachix.org https://nix-community.cachix.org https://cache.nixos.org/' >> /etc/nix/nix.conf
echo 'trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= kyasshu:g1heIgCgG7M4San6nRsz/omcVQ1GTc7+zKKm3L9Co7o= hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4= anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s= viperml.cachix.org-1:qZhKBMTfmcLL+OG6fj/hzsMEedgKvZVFRRAhq7j8Vh8= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' >> /etc/nix/nix.conf
mkdir -p .ssh && cd .ssh
echo "$${SSH_KEY}" > forgejo
chmod 400 forgejo
nix run github:serokell/deploy-rs -- --ssh-opts="-i forgejo -o StrictHostKeyChecking=no" --skip-checks --targets .#arashi .#kariru .#sakura .#sora .#yuki .#haru .#kaze
echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
echo "access-tokens = github.com=$${GH_PAT}" >> /etc/nix/nix.conf
echo 'builders-use-substitutes = true' >> /etc/nix/nix.conf
echo 'substituters = https://cache.flake.sh/kyasshu https://hyprland.cachix.org https://cache.nixos.org https://nix-gaming.cachix.org https://anyrun.cachix.org https://viperml.cachix.org https://nix-community.cachix.org https://cache.nixos.org/' >> /etc/nix/nix.conf
echo 'trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= kyasshu:g1heIgCgG7M4San6nRsz/omcVQ1GTc7+zKKm3L9Co7o= hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4= anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s= viperml.cachix.org-1:qZhKBMTfmcLL+OG6fj/hzsMEedgKvZVFRRAhq7j8Vh8= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=' >> /etc/nix/nix.conf
mkdir -p .ssh && cd .ssh
echo "$${SSH_KEY}" > forgejo
chmod 400 forgejo
nix run github:serokell/deploy-rs -- --ssh-opts="-i forgejo -o StrictHostKeyChecking=no" --skip-checks --targets .#arashi .#kariru .#sakura .#sora .#yuki .#haru .#kaze
secrets: [ssh_key, gh_pat]

View file

@ -49,6 +49,7 @@
+ multiple fully declarative self hosted services (and some containerized ones, with a docker backend)
+ wayland config for hyprland
+ custom packages not found in nixpkgs
+ linted & styled with [alejandra](https://github.com/kamadorueda/alejandra), [deadnix](https://github.com/astro/deadnix), and [statix](https://github.com/nerdypepper/statix)
## :busts_in_silhouette: Credit
#### people who've inspired me to dive into nix, and i've stolen stuff from (you guys are awesome!)

View file

@ -157,6 +157,22 @@
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
@ -233,6 +249,24 @@
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"inputs": {
"systems": "systems_5"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
@ -247,6 +281,27 @@
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1703887061,
"narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"helix": {
"inputs": {
"crane": "crane_2",
@ -487,6 +542,22 @@
}
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1704874635,
"narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_3": {
"locked": {
"lastModified": 1705957679,
"narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=",
@ -583,6 +654,22 @@
}
},
"nixpkgs_7": {
"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"
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1701174899,
"narHash": "sha256-1W+FMe8mWsJKXoBc+QgKmEeRj33kTFnPq7XCjU+bfnA=",
@ -613,6 +700,28 @@
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_3",
"gitignore": "gitignore",
"nixpkgs": "nixpkgs_7",
"nixpkgs-stable": "nixpkgs-stable_2"
},
"locked": {
"lastModified": 1706424699,
"narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"ags": "ags",
@ -628,6 +737,7 @@
"nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs_6",
"nur": "nur",
"pre-commit-hooks": "pre-commit-hooks",
"sops-nix": "sops-nix",
"yazi": "yazi"
}
@ -687,7 +797,7 @@
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable_2"
"nixpkgs-stable": "nixpkgs-stable_3"
},
"locked": {
"lastModified": 1706410821,
@ -763,6 +873,21 @@
"type": "github"
}
},
"systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems"
@ -832,8 +957,8 @@
},
"yazi": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_7",
"flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs_8",
"rust-overlay": "rust-overlay_2"
},
"locked": {

View file

@ -10,6 +10,7 @@
nur.url = "github:nix-community/NUR";
yazi.url = "github:sxyazi/yazi";
helix.url = "github:helix-editor/helix";
pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
@ -39,18 +40,42 @@
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {nixpkgs, ...} @ inputs: let
outputs = {
self,
nixpkgs,
pre-commit-hooks,
...
} @ inputs: let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
};
in {
checks = {
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
stylua.enable = true;
eslint.enable = true;
statix.enable = true;
alejandra.enable = true;
deadnix = {
enable = true;
excludes = ["overlays.nix"];
};
};
};
};
devShells.${system}.default = pkgs.mkShell {
name = "snowflake";
inherit (self.checks.pre-commit-check) shellHook;
packages = with pkgs; [
git
sops
alejandra
statix
deadnix
stylua
yaml-language-server
lua-language-server
nodePackages.typescript-language-server

View file

@ -25,3 +25,4 @@ name | description
`yazi` | terminal file manager
`zathura` | pdf viewer
`zellij` | terminal multiplexer
`zoxide` | a smarter cd command

View file

@ -0,0 +1,26 @@
module.exports = {
"env": {
"browser": true,
"es2021": true
},
"extends": "eslint:recommended",
"overrides": [
{
"env": {
"node": true
},
"files": [
".eslintrc.{js,cjs}"
],
"parserOptions": {
"sourceType": "script"
}
}
],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"rules": {
}
}

View file

@ -1,9 +1,8 @@
import { App, Utils } from './import.js';
import { Bar } from './js/main.js'
import { App, Utils } from "./import.js";
import { Bar } from "./js/main.js";
const scss = App.configDir + '/main.scss'
const css = App.configDir + '/style.css'
const scss = App.configDir + "/main.scss";
const css = App.configDir + "/style.css";
Utils.exec(`sass ${scss} ${css}`);
@ -19,6 +18,6 @@ Utils.monitorFile(`${App.configDir}/scss`, reloadCss, "directory");
export default {
style: css,
windows: [
Bar(2)
]
}
Bar(2),
],
};

View file

@ -7,17 +7,17 @@ import Audio from "resource:///com/github/Aylur/ags/service/audio.js";
import Hyprland from "resource:///com/github/Aylur/ags/service/hyprland.js";
import Network from "resource:///com/github/Aylur/ags/service/network.js";
import SystemTray from "resource:///com/github/Aylur/ags/service/systemtray.js";
import Mpris from 'resource:///com/github/Aylur/ags/service/mpris.js';
import Mpris from "resource:///com/github/Aylur/ags/service/mpris.js";
export {
App,
Audio,
Hyprland,
Mpris,
Network,
Service,
SystemTray,
Utils,
Variable,
Widget,
Mpris,
};

View file

@ -1,40 +1,42 @@
import { Widget } from '../import.js';
import { Time } from './widgets/time.js'
import { nixosLogo } from './widgets/images/image.js';
import { Media } from './widgets/music.js';
import { Workspaces } from './widgets/hyprland.js';
import { Widget } from "../import.js";
import { Time } from "./widgets/time.js";
import { nixosLogo } from "./widgets/images/image.js";
import { Media } from "./widgets/music.js";
import { Workspaces } from "./widgets/hyprland.js";
const Start = () => Widget.Box({
const Start = () =>
Widget.Box({
hpack: "start",
children: [
nixosLogo(),
Workspaces(),
]
});
const Center = () => Widget.Box({
nixosLogo(),
Workspaces(),
],
});
const Center = () =>
Widget.Box({
children: [
Media(),
]
});
const End = () => Widget.Box({
Media(),
],
});
const End = () =>
Widget.Box({
hpack: "end",
children: [
Time(),
]
});
Time(),
],
});
const Bar = (monitor) => Widget.Window({
const Bar = (monitor) =>
Widget.Window({
monitor,
name: `bar`,
anchor: ['top', 'left', 'right'],
exclusivity: 'exclusive',
anchor: ["top", "left", "right"],
exclusivity: "exclusive",
child: Widget.CenterBox({
startWidget: Start(),
centerWidget: Center(),
endWidget: End(),
startWidget: Start(),
centerWidget: Center(),
endWidget: End(),
}),
});
});
export {
Bar
}
export { Bar };

View file

@ -1,17 +1,18 @@
import { Hyprland, Widget } from "../../import.js";
const Workspaces = () => Widget.Box({
class_name: 'workspaces',
children: Hyprland.bind('workspaces').transform(ws => {
return ws.map(({ id }) => Widget.Button({
on_clicked: () => Hyprland.sendMessage(`dispatch workspace ${id}`),
child: Widget.Label(`${id}`),
class_name: Hyprland.active.workspace.bind('id')
.transform(i => `${i === id ? 'focused' : ''}`),
}));
const Workspaces = () =>
Widget.Box({
class_name: "workspaces",
children: Hyprland.bind("workspaces").transform((ws) => {
return ws.map(({ id }) =>
Widget.Button({
on_clicked: () => Hyprland.sendMessage(`dispatch workspace ${id}`),
child: Widget.Label(`${id}`),
class_name: Hyprland.active.workspace.bind("id")
.transform((i) => `${i === id ? "focused" : ""}`),
})
);
}),
});
});
export {
Workspaces
}
export { Workspaces };

View file

@ -1,9 +1,9 @@
import { Widget } from '../../../import.js';
import { Widget } from "../../../import.js";
const nixosLogo = () => Widget.Icon({
icon: '/home/notoh/snowflake/home/ags/config/js/widgets/images/static/nixos.png'
});
const nixosLogo = () =>
Widget.Icon({
icon:
"/home/notoh/snowflake/home/ags/config/js/widgets/images/static/nixos.png",
});
export {
nixosLogo
}
export { nixosLogo };

View file

@ -1,17 +1,16 @@
import { Widget, Mpris } from "../../import.js";
import { Mpris, Widget } from "../../import.js";
const Media = () => Widget.Box({
class_name: 'media',
child: Widget.Label('-').hook(Mpris, self => {
if (Mpris.players[0]) {
const { track_artists, track_title } = Mpris.players[0];
self.label = `${track_artists.join(', ')} - ${track_title}`;
} else {
self.label = 'Nothing is playing';
}
}, 'player-changed'),
});
const Media = () =>
Widget.Box({
class_name: "media",
child: Widget.Label("-").hook(Mpris, (self) => {
if (Mpris.players[0]) {
const { track_artists, track_title } = Mpris.players[0];
self.label = `${track_artists.join(", ")} - ${track_title}`;
} else {
self.label = "Nothing is playing";
}
}, "player-changed"),
});
export {
Media
}
export { Media };

View file

@ -1,18 +1,16 @@
import { Widget, Utils } from '../../import.js';
import { Utils, Widget } from "../../import.js";
const Time = () => Widget.Box({
const Time = () =>
Widget.Box({
child: Widget.Label({
className: "date"
className: "date",
}).poll(
1000,
(self) =>
Utils.execAsync(["date", "+%a %b %d %H:%M"]).then((time) =>
self.label = time
),
1000,
(self) =>
Utils.execAsync(["date", "+%a %b %d %H:%M"]).then((time) =>
self.label = time
),
),
});
});
export {
Time
}
export { Time };

View file

@ -0,0 +1,15 @@
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "Node",
"target": "ES2020",
"jsx": "react",
"allowImportingTsExtensions": true,
"strictNullChecks": true,
"strictFunctionTypes": true
},
"exclude": [
"node_modules",
"**/node_modules/*"
]
}

1135
home/ags/config/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,15 @@
{
"name": "snowflake-ags",
"version": "1.0.0",
"description": "snowflake ags",
"main": "config.js",
"repository": {
"type": "git",
"url": "https://git.flake.sh/notohh/snowflake"
},
"author": "notohh",
"license": "MIT",
"devDependencies": {
"eslint": "^8.56.0"
}
}

View file

@ -4,9 +4,7 @@
./neofetch
./nushell
./starship
./git
./lazygit
./direnv
./yazi
];
@ -31,21 +29,46 @@
p7zip
];
services.gpg-agent = {
enable = true;
defaultCacheTtl = 3600;
pinentryFlavor = "curses";
enableSshSupport = true;
enableNushellIntegration = true;
services = {
gpg-agent = {
enable = true;
defaultCacheTtl = 3600;
pinentryFlavor = "curses";
enableSshSupport = true;
enableNushellIntegration = true;
};
};
programs.bat.enable = true;
programs.zoxide = {
enable = true;
enableNushellIntegration = true;
options = [
"--cmd cdd"
];
programs = {
bat.enable = true;
git = {
enable = true;
delta.enable = true;
userEmail = "github@notohh.dev";
userName = "notohh";
signing = {
key = "BD47506D475EE86D";
signByDefault = true;
};
ignores = ["*result*" ".direnv" "node_modules"];
};
gh = {
enable = true;
gitCredentialHelper.enable = true;
settings = {
editor = "hx";
prompt = "enabled";
};
};
direnv = {
enable = true;
enableNushellIntegration = true;
nix-direnv.enable = true;
};
zoxide = {
enable = true;
enableNushellIntegration = true;
options = ["--cmd cdd"];
};
};
}

View file

@ -1,7 +0,0 @@
_: {
programs.direnv = {
enable = true;
enableNushellIntegration = true;
nix-direnv.enable = true;
};
}

View file

@ -1,21 +0,0 @@
_: {
programs.git = {
enable = true;
delta.enable = true;
userEmail = "github@notohh.dev";
userName = "notohh";
signing = {
key = "BD47506D475EE86D";
signByDefault = true;
};
ignores = ["*result*" ".direnv" "node_modules"];
};
programs.gh = {
enable = true;
gitCredentialHelper.enable = true;
settings = {
editor = "hx";
prompt = "enabled";
};
};
}

View file

@ -24,7 +24,7 @@
name = "lua";
auto-format = true;
formatter = {
command = lib.getExe luaformatter;
command = lib.getExe stylua;
};
}
];

View file

@ -1,7 +1,6 @@
_: {
programs.helix = {
themes.catppuccin_mocha = let
transparent = "none";
rosewater = "#f5e0dc";
flamingo = "#f2cdcd";
pink = "#f5c2e7";

View file

@ -7,20 +7,16 @@ _: {
light-green = "#9ece6a";
green = "#73daca";
turquoise = "#89ddff";
light-cyan = "#b4f9f8";
teal = "#2ac3de";
cyan = "#7dcfff";
blue = "#7aa2f7";
magenta = "#bb9af7";
white = "#c0caf5";
light-gray = "#9aa5ce";
parameters = "#cfc9c2";
comment = "#565f89";
black = "#414868";
foreground = "#a9b1d6";
foreground_highlight = "#c0caf5";
foreground_gutter = "#363b54";
background = "#1a1b26";
background_highlight = "#30374b";
background_menu = "#16161e";
in {

View file

@ -24,9 +24,6 @@ alias sora = nix run github:serokell/deploy-rs ".#sora"
alias tsuru = nix run github:serokell/deploy-rs ".#tsuru"
alias haru = nix run github:serokell/deploy-rs ".#haru"
alias kaze = nix run github:serokell/deploy-rs ".#kaze"
alias dx = nix run "nixpkgs#deadnix"
alias sx = nix run "nixpkgs#statix" -- check
alias sxfix = nix run "nixpkgs#statix" -- fix
alias dl = yt-dlp -P ~/Videos/downloaded
alias dlad = yt-dlp -x --audio-format mp3 --embed-thumbnail
alias dlcd = yt-dlp

View file

@ -14,24 +14,46 @@
'';
};
in {
imports = [
./greetd.nix
];
environment.systemPackages = with pkgs; [
dbus-hyprland-environment
wayland
glib
grim
slurp
satty
wl-clipboard
wlr-randr
swayidle
swaylock-effects
hyprpicker
swww
];
imports = [./greetd.nix];
environment = {
systemPackages = with pkgs; [
dbus-hyprland-environment
wayland
glib
grim
slurp
satty
wl-clipboard
wlr-randr
swayidle
swaylock-effects
hyprpicker
swww
];
sessionVariables = {
GBM_BACKEND = "nvidia-drm";
__GL_GSYNC_ALLOWED = "0";
__GL_VRR_ALLOWED = "0";
WLR_DRM_NO_ATOMIC = "1";
XDG_SESSION_TYPE = "wayland";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
_JAVA_AWT_WM_NONREPARENTING = "1";
QT_QPA_PLATFORM = "wayland";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
GDK_BACKEND = "wayland";
WLR_NO_HARDWARE_CURSORS = "1";
MOZ_ENABLE_WAYLAND = "1";
WLR_BACKEND = "vulkan";
WLR_RENDERER = "vulkan";
XCURSOR_SIZE = "24";
NIXOS_OZONE_WL = "1";
EDITOR = "hx";
TERMINAL = "wezterm";
};
etc."greetd/environments".text = ''
Hyprland
'';
};
services.dbus.enable = true;
xdg.portal = {
@ -44,29 +66,4 @@ in {
common.default = "*";
};
};
environment.sessionVariables = {
GBM_BACKEND = "nvidia-drm";
__GL_GSYNC_ALLOWED = "0";
__GL_VRR_ALLOWED = "0";
WLR_DRM_NO_ATOMIC = "1";
XDG_SESSION_TYPE = "wayland";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
_JAVA_AWT_WM_NONREPARENTING = "1";
QT_QPA_PLATFORM = "wayland";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
GDK_BACKEND = "wayland";
WLR_NO_HARDWARE_CURSORS = "1";
MOZ_ENABLE_WAYLAND = "1";
WLR_BACKEND = "vulkan";
WLR_RENDERER = "vulkan";
XCURSOR_SIZE = "24";
NIXOS_OZONE_WL = "1";
EDITOR = "hx";
TERMINAL = "wezterm";
};
environment.etc."greetd/environments".text = ''
Hyprland
'';
}

View file

@ -9,7 +9,7 @@
];
exec-once = [
"ags"
"swww init && swww img ~/Pictures/wallpapers/city.png"
"swww init && swww img ~/Pictures/wallpapers/frieren.png"
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
"~/.local/bin/lock"

View file

@ -1,21 +1,21 @@
local wezterm = require('wezterm')
local wezterm = require("wezterm")
local config = {
front_end = "WebGpu",
webgpu_preferred_adapter = {
backend = "Vulkan",
device_type = "DiscreteGpu",
name = "NVIDIA GeForce GTX 1070 Ti"
},
enable_wayland = false,
font = wezterm.font 'Monaspace Krypton',
font_size = 12.0,
window_background_opacity = 0.6,
text_background_opacity = 1.0,
enable_tab_bar = false,
color_scheme = 'tokyonight',
window_padding = {top = 20, bottom = 20, left = 20, right = 20}
front_end = "WebGpu",
webgpu_preferred_adapter = {
backend = "Vulkan",
device_type = "DiscreteGpu",
name = "NVIDIA GeForce GTX 1070 Ti",
},
enable_wayland = false,
font = wezterm.font("Monaspace Krypton"),
font_size = 12.0,
window_background_opacity = 0.6,
text_background_opacity = 1.0,
enable_tab_bar = false,
color_scheme = "tokyonight",
window_padding = { top = 20, bottom = 20, left = 20, right = 20 },
}
return config

View file

@ -1,159 +1,183 @@
function Manager:render(area)
self.area = area
self.area = area
local chunks = ui.Layout():direction(ui.Layout.HORIZONTAL):constraints({
ui.Constraint.Ratio(MANAGER.ratio.parent, MANAGER.ratio.all),
ui.Constraint.Ratio(MANAGER.ratio.current, MANAGER.ratio.all),
ui.Constraint.Ratio(MANAGER.ratio.preview, MANAGER.ratio.all)
}):split(area)
local chunks = ui.Layout()
:direction(ui.Layout.HORIZONTAL)
:constraints({
ui.Constraint.Ratio(MANAGER.ratio.parent, MANAGER.ratio.all),
ui.Constraint.Ratio(MANAGER.ratio.current, MANAGER.ratio.all),
ui.Constraint.Ratio(MANAGER.ratio.preview, MANAGER.ratio.all),
})
:split(area)
local bar = function(c, x, y)
return ui.Bar(ui.Rect {
x = math.max(0, x),
y = math.max(0, y),
w = math.min(1, area.w),
h = math.min(1, area.h)
}, ui.Bar.TOP):symbol(c)
end
local bar = function(c, x, y)
return ui.Bar(
ui.Rect({
x = math.max(0, x),
y = math.max(0, y),
w = math.min(1, area.w),
h = math.min(1, area.h),
}),
ui.Bar.TOP
):symbol(c)
end
return ya.flat {
-- Borders
ui.Border(area, ui.Border.ALL):type(ui.Border.ROUNDED),
ui.Bar(chunks[1], ui.Bar.RIGHT), ui.Bar(chunks[3], ui.Bar.LEFT),
return ya.flat({
-- Borders
ui.Border(area, ui.Border.ALL):type(ui.Border.ROUNDED),
ui.Bar(chunks[1], ui.Bar.RIGHT),
ui.Bar(chunks[3], ui.Bar.LEFT),
bar("", chunks[1].right - 1, chunks[1].y),
bar("", chunks[1].right - 1, chunks[1].bottom - 1),
bar("", chunks[2].right, chunks[2].y),
bar("", chunks[2].right, chunks[1].bottom - 1), -- Parent
Parent:render(chunks[1]:padding(ui.Padding.xy(1))), -- Current
Current:render(chunks[2]:padding(ui.Padding.y(1))), -- Preview
Preview:render(chunks[3]:padding(ui.Padding.xy(1)))
}
bar("", chunks[1].right - 1, chunks[1].y),
bar("", chunks[1].right - 1, chunks[1].bottom - 1),
bar("", chunks[2].right, chunks[2].y),
bar("", chunks[2].right, chunks[1].bottom - 1), -- Parent
Parent:render(chunks[1]:padding(ui.Padding.xy(1))), -- Current
Current:render(chunks[2]:padding(ui.Padding.y(1))), -- Preview
Preview:render(chunks[3]:padding(ui.Padding.xy(1))),
})
end
Status = {area = ui.Rect.default}
Status = { area = ui.Rect.default }
function Status.style()
if cx.active.mode.is_select then
return THEME.status.mode_select
elseif cx.active.mode.is_unset then
return THEME.status.mode_unset
else
return THEME.status.mode_normal
end
if cx.active.mode.is_select then
return THEME.status.mode_select
elseif cx.active.mode.is_unset then
return THEME.status.mode_unset
else
return THEME.status.mode_normal
end
end
function Status:mode()
local mode = tostring(cx.active.mode):upper()
if mode == "UNSET" then mode = "UN-SET" end
local mode = tostring(cx.active.mode):upper()
if mode == "UNSET" then
mode = "UN-SET"
end
local style = self.style()
return ui.Line {
ui.Span(THEME.status.separator_open):fg(style.bg),
ui.Span(" " .. mode .. " "):style(style)
}
local style = self.style()
return ui.Line({
ui.Span(THEME.status.separator_open):fg(style.bg),
ui.Span(" " .. mode .. " "):style(style),
})
end
function Status:size()
local h = cx.active.current.hovered
if h == nil then return ui.Line {} end
local h = cx.active.current.hovered
if h == nil then
return ui.Line({})
end
local style = self.style()
return ui.Line {
ui.Span(" " .. ya.readable_size(h:size() or h.cha.length) .. " "):fg(
style.bg):bg(THEME.status.separator_style.bg),
ui.Span(THEME.status.separator_close):fg(THEME.status.separator_style.fg)
}
local style = self.style()
return ui.Line({
ui.Span(" " .. ya.readable_size(h:size() or h.cha.length) .. " ")
:fg(style.bg)
:bg(THEME.status.separator_style.bg),
ui.Span(THEME.status.separator_close):fg(THEME.status.separator_style.fg),
})
end
function Status:name()
local h = cx.active.current.hovered
if h == nil then return ui.Span("") end
local linked = ""
if h.link_to ~= nil then linked = " -> " .. tostring(h.link_to) end
return ui.Span(" " .. h.name .. linked)
local h = cx.active.current.hovered
if h == nil then
return ui.Span("")
end
local linked = ""
if h.link_to ~= nil then
linked = " -> " .. tostring(h.link_to)
end
return ui.Span(" " .. h.name .. linked)
end
function Status:permissions()
local h = cx.active.current.hovered
if h == nil then return ui.Line {} end
local h = cx.active.current.hovered
if h == nil then
return ui.Line({})
end
local perm = h.cha:permissions()
if perm == nil then return ui.Line {} end
local perm = h.cha:permissions()
if perm == nil then
return ui.Line({})
end
local spans = {}
for i = 1, #perm do
local c = perm:sub(i, i)
local style = THEME.status.permissions_t
if c == "-" then
style = THEME.status.permissions_s
elseif c == "r" then
style = THEME.status.permissions_r
elseif c == "w" then
style = THEME.status.permissions_w
elseif c == "x" or c == "s" or c == "S" or c == "t" or c == "T" then
style = THEME.status.permissions_x
end
spans[i] = ui.Span(c):style(style)
end
return ui.Line(spans)
local spans = {}
for i = 1, #perm do
local c = perm:sub(i, i)
local style = THEME.status.permissions_t
if c == "-" then
style = THEME.status.permissions_s
elseif c == "r" then
style = THEME.status.permissions_r
elseif c == "w" then
style = THEME.status.permissions_w
elseif c == "x" or c == "s" or c == "S" or c == "t" or c == "T" then
style = THEME.status.permissions_x
end
spans[i] = ui.Span(c):style(style)
end
return ui.Line(spans)
end
function Status:percentage()
local percent = 0
local cursor = cx.active.current.cursor
local length = #cx.active.current.files
if cursor ~= 0 and length ~= 0 then
percent = math.floor((cursor + 1) * 100 / length)
end
local percent = 0
local cursor = cx.active.current.cursor
local length = #cx.active.current.files
if cursor ~= 0 and length ~= 0 then
percent = math.floor((cursor + 1) * 100 / length)
end
if percent == 0 then
percent = " Top "
else
percent = string.format(" %3d%% ", percent)
end
if percent == 0 then
percent = " Top "
else
percent = string.format(" %3d%% ", percent)
end
local style = self.style()
return ui.Line {
ui.Span(" " .. THEME.status.separator_open):fg(THEME.status
.separator_style.fg),
ui.Span(percent):fg(style.bg):bg(THEME.status.separator_style.bg)
}
local style = self.style()
return ui.Line({
ui.Span(" " .. THEME.status.separator_open):fg(THEME.status.separator_style.fg),
ui.Span(percent):fg(style.bg):bg(THEME.status.separator_style.bg),
})
end
function Status:position()
local cursor = cx.active.current.cursor
local length = #cx.active.current.files
local cursor = cx.active.current.cursor
local length = #cx.active.current.files
local style = self.style()
return ui.Line {
ui.Span(string.format(" %2d/%-2d ", cursor + 1, length)):style(style),
ui.Span(THEME.status.separator_close):fg(style.bg)
}
local style = self.style()
return ui.Line({
ui.Span(string.format(" %2d/%-2d ", cursor + 1, length)):style(style),
ui.Span(THEME.status.separator_close):fg(style.bg),
})
end
function Status:render(area)
self.area = area
self.area = area
local left = ui.Line {self:mode(), self:size(), self:name()}
local right = ui.Line {
self:owner(), self:permissions(), self:percentage(), self:position()
}
return {
ui.Paragraph(area, {left}),
ui.Paragraph(area, {right}):align(ui.Paragraph.RIGHT),
table.unpack(Progress:render(area, right:width()))
}
local left = ui.Line({ self:mode(), self:size(), self:name() })
local right = ui.Line({
self:owner(),
self:permissions(),
self:percentage(),
self:position(),
})
return {
ui.Paragraph(area, { left }),
ui.Paragraph(area, { right }):align(ui.Paragraph.RIGHT),
table.unpack(Progress:render(area, right:width())),
}
end
function Status:owner()
local h = cx.active.current.hovered
if h == nil or ya.target_family() ~= "unix" then return ui.Line {} end
local h = cx.active.current.hovered
if h == nil or ya.target_family() ~= "unix" then
return ui.Line({})
end
return ui.Line {
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
ui.Span(":"),
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
ui.Span(" ")
}
return ui.Line({
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
ui.Span(":"),
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
ui.Span(" "),
})
end

View file

@ -1,4 +1,4 @@
{...}: {
_: {
imports = [
./layouts.nix
];

View file

@ -7,34 +7,24 @@
../../modules/fonts.nix
];
boot.loader = {
systemd-boot = {
enable = true;
configurationLimit = 8;
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
programs.hyprland.enable = true;
services.xserver.enable = true;
services.xserver.displayManager.sddm.enable = true;
services.xserver = {
layout = "us";
xkbVariant = "";
services = {
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
xserver = {
enable = true;
displayManager.sddm.enable = true;
layout = "us";
xkbVariant = "";
};
};
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
}

View file

@ -8,24 +8,38 @@
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/57411820-f154-497e-9c7e-dfcb1f21c5cf";
fsType = "ext4";
boot = {
kernelModules = ["kvm-intel"];
extraModulePackages = [];
loader = {
systemd-boot = {
enable = true;
configurationLimit = 8;
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
initrd = {
availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"];
kernelModules = [];
};
};
fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/4D09-1D57";
fsType = "vfat";
};
fileSystems."/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/ame";
fsType = "nfs";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/57411820-f154-497e-9c7e-dfcb1f21c5cf";
fsType = "ext4";
};
"/boot/efi" = {
device = "/dev/disk/by-uuid/4D09-1D57";
fsType = "vfat";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/ame";
fsType = "nfs";
};
};
swapDevices = [

View file

@ -17,12 +17,11 @@
username = "notoh";
homeDirectory = "/home/notoh";
packages = with pkgs; [
chromium
discord
spotify-player
cinny-desktop
pavucontrol
unzip
p7zip
imv
mpv
rustypaste-cli
@ -33,12 +32,7 @@
glib
grim
slurp
swappy
wl-clipboard
wlogout
wlr-randr
swayidle
swaylock-effects
swww
hyprpicker
(libsForQt5.callPackage ../../pkgs/chatterino7 {})

View file

@ -3,12 +3,8 @@
config,
...
}: {
sops.secrets.restic-ame = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
sops.secrets.ame-s3 = {
sopsFile = ../../../secrets/s3/secrets.yaml;
};
sops.secrets.restic-ame = {sopsFile = ../../../secrets/restic/secrets.yaml;};
sops.secrets.ame-s3 = {sopsFile = ../../../secrets/s3/secrets.yaml;};
environment.systemPackages = [pkgs.restic];
services.restic = {
backups = {

View file

@ -6,19 +6,6 @@
../../modules
];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
};
boot.kernel.sysctl = {
"kernel.shmmax" = 100663296;
};
services.xserver = {
layout = "us";
xkbVariant = "";

View file

@ -7,19 +7,31 @@
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/3fd88f1f-cec3-4737-b9d0-6c8f026c3927";
fsType = "ext4";
boot = {
kernelModules = [];
kernel.sysctl = {"kernel.shmmax" = 100663296;};
extraModulePackages = [];
loader.grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
};
fileSystems."/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/arashi";
fsType = "nfs";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/3fd88f1f-cec3-4737-b9d0-6c8f026c3927";
fsType = "ext4";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/arashi";
fsType = "nfs";
};
};
swapDevices = [

View file

@ -3,9 +3,7 @@
config,
...
}: {
sops.secrets.restic-arashi = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
sops.secrets.restic-arashi = {sopsFile = ../../../secrets/restic/secrets.yaml;};
environment.systemPackages = [pkgs.restic];
services.restic = {
backups = {

View file

@ -6,15 +6,6 @@
../../modules
];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
};
services.xserver = {
layout = "us";
xkbVariant = "";

View file

@ -7,14 +7,26 @@
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.extraModulePackages = [];
boot = {
kernelModules = [];
extraModulePackages = [];
loader.grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/06177115-2e39-493b-81fb-5a1980ae0534";
fsType = "ext4";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/06177115-2e39-493b-81fb-5a1980ae0534";
fsType = "ext4";
};
};
swapDevices = [

View file

@ -6,15 +6,6 @@
../../modules
];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
};
services.xserver = {
layout = "us";
xkbVariant = "";

View file

@ -7,29 +7,38 @@
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/f5a0738c-d027-4ffb-82ec-9901ca6b310b";
fsType = "ext4";
boot = {
kernelModules = [];
extraModulePackages = [];
loader.grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
};
fileSystems."/media" = {
device = "192.168.1.199:/mnt/Sutoreji/media";
fsType = "nfs";
};
fileSystems."/stash" = {
device = "192.168.1.199:/mnt/Sutoreji/stash";
fsType = "nfs";
};
fileSystems."/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/kariru";
fsType = "nfs";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/f5a0738c-d027-4ffb-82ec-9901ca6b310b";
fsType = "ext4";
};
"/media" = {
device = "192.168.1.199:/mnt/Sutoreji/media";
fsType = "nfs";
};
"/stash" = {
device = "192.168.1.199:/mnt/Sutoreji/stash";
fsType = "nfs";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/kariru";
fsType = "nfs";
};
};
swapDevices = [

View file

@ -1,42 +1,40 @@
{pkgs, ...}: {
networking.firewall.allowedTCPPorts = [9292];
imports = [
./restic.nix
./torrent.nix
];
environment.systemPackages = [pkgs.recyclarr];
services.radarr = {
enable = true;
openFirewall = true;
services = {
radarr = {
enable = true;
openFirewall = true;
};
sonarr = {
enable = true;
openFirewall = true;
};
prowlarr = {
enable = true;
openFirewall = true;
};
bazarr = {
enable = true;
openFirewall = true;
};
readarr = {
enable = true;
openFirewall = true;
};
lidarr = {
enable = true;
openFirewall = true;
};
sabnzbd.enable = true;
};
services.sonarr = {
enable = true;
openFirewall = true;
};
services.prowlarr = {
enable = true;
openFirewall = true;
};
services.bazarr = {
enable = true;
openFirewall = true;
};
services.readarr = {
enable = true;
openFirewall = true;
};
services.lidarr = {
enable = true;
openFirewall = true;
};
services.sabnzbd.enable = true;
virtualisation.oci-containers.containers = {
whisparr = {
image = "ghcr.io/hotio/whisparr@sha256:88b91920b77339e2deda418960be28868df538413abea6cdddaf4013e43c4c0f"; # v3-3.0.0.425

View file

@ -3,9 +3,7 @@
config,
...
}: {
sops.secrets.restic-kariru = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
sops.secrets.restic-kariru = {sopsFile = ../../../secrets/restic/secrets.yaml;};
environment.systemPackages = [pkgs.restic];
services.restic = {
backups = {

View file

@ -6,15 +6,6 @@
../../modules
];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/vda";
useOSProber = true;
};
};
services.xserver = {
layout = "us";
xkbVariant = "";

View file

@ -7,19 +7,30 @@
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/9cb414ab-0bb4-4db7-b77e-7d2a8cafd657";
fsType = "ext4";
boot = {
kernelModules = ["kvm-amd"];
extraModulePackages = [];
loader.grub = {
enable = true;
configurationLimit = 5;
device = "/dev/vda";
useOSProber = true;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk"];
kernelModules = [];
};
};
fileSystems."/var/lib/slab" = {
device = "/dev/disk/by-uuid/733a3f7b-b232-4b34-8742-460a67d8f1d0";
fsType = "ext4";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/9cb414ab-0bb4-4db7-b77e-7d2a8cafd657";
fsType = "ext4";
};
"/var/lib/slab" = {
device = "/dev/disk/by-uuid/733a3f7b-b232-4b34-8742-460a67d8f1d0";
fsType = "ext4";
};
};
swapDevices = [

View file

@ -5,9 +5,7 @@
}: {
environment.systemPackages = [pkgs.minio-client];
systemd.services.minio.environment = {
MINIO_BROWSER_REDIRECT = "false";
};
systemd.services.minio.environment = {MINIO_BROWSER_REDIRECT = "false";};
sops.secrets.minio = {
owner = "minio";

View file

@ -4,9 +4,7 @@
pkgs,
...
}: {
sops.secrets.tsauth-kaze = {
sopsFile = ../../../secrets/tailscale/secrets.yaml;
};
sops.secrets.tsauth-kaze = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
environment.systemPackages = [pkgs.jq pkgs.tailscale];
services.tailscale = {
useRoutingFeatures = lib.mkDefault "client";

View file

@ -6,15 +6,6 @@ _: {
../../modules
];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
};
services.snowflake-proxy.enable = true;
services.xserver = {

View file

@ -7,24 +7,34 @@
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/db3e4722-35a6-44fb-8e4d-a75166b845cb";
fsType = "ext4";
boot = {
kernelModules = [];
extraModulePackages = [];
loader.grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
};
fileSystems."/home/notoh/justlog/logs" = {
device = "192.168.1.199:/mnt/Sutoreji/twitchlogs";
fsType = "nfs";
};
fileSystems."/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/sakura";
fsType = "nfs";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/db3e4722-35a6-44fb-8e4d-a75166b845cb";
fsType = "ext4";
};
"/home/notoh/justlog/logs" = {
device = "192.168.1.199:/mnt/Sutoreji/twitchlogs";
fsType = "nfs";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/sakura";
fsType = "nfs";
};
};
swapDevices = [

View file

@ -3,9 +3,7 @@
config,
...
}: {
sops.secrets.restic-sakura = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
sops.secrets.restic-sakura = {sopsFile = ../../../secrets/restic/secrets.yaml;};
environment.systemPackages = [pkgs.restic];
services.restic = {
backups = {

View file

@ -3,12 +3,9 @@
systemd.services.rustypaste = {
enable = true;
wantedBy = [
"multi-user.target"
];
wantedBy = ["multi-user.target"];
description = "A minimal file upload/pastebin service.";
environment = {
# AUTH_TOKEN = config.sops.secrets.rusty-auth-token.path;
CONFIG = "/var/lib/rustypaste/config.toml";
};
serviceConfig = {

View file

@ -4,9 +4,7 @@
pkgs,
...
}: {
sops.secrets.tsauth-sakura = {
sopsFile = ../../../secrets/tailscale/secrets.yaml;
};
sops.secrets.tsauth-sakura = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
environment.systemPackages = [pkgs.jq pkgs.tailscale];
services.tailscale = {
useRoutingFeatures = lib.mkDefault "client";

View file

@ -6,7 +6,8 @@ _: {
../../modules
];
boot.tmp.cleanOnBoot = true;
services.snowflake-proxy.enable = true;
zramSwap.enable = true;
users.users.notoh.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGmI3hRDFjxLjrM3pE471e4jxSlcqeizh3iNVVdaMHeN sora"

View file

@ -1,20 +1,27 @@
{modulesPath, ...}: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
boot.loader.grub = {
efiSupport = true;
efiInstallAsRemovable = true;
device = "nodev";
boot = {
tmp.cleanOnBoot = true;
loader.grub = {
efiSupport = true;
efiInstallAsRemovable = true;
device = "nodev";
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
kernelModules = ["nvme"];
};
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/B793-1B2C";
fsType = "vfat";
};
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
boot.initrd.kernelModules = ["nvme"];
fileSystems."/" = {
device = "/dev/sda1";
fsType = "ext4";
fileSystems = {
"/" = {
device = "/dev/sda1";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-uuid/B793-1B2C";
fsType = "vfat";
};
};
}

View file

@ -2,10 +2,8 @@ _: {
sops.secrets.foundry-username = {};
sops.secrets.foundry-password = {};
virtualisation.oci-containers.containers.foundryvtt = {
image = "felddy/foundryvtt:sha-50af627";
volumes = [
"/home/notoh/docker/foundryvtt:/data"
];
image = "felddy/foundryvtt@sha256:d85dab9704d771f3a33f21439f1bf34748fb5bf1987668ff402b5b17d1973f5a";
volumes = ["/home/notoh/docker/foundryvtt:/data"];
environment = {
CONTAINER_PRESERVE_CONFIG = "true";
};
@ -13,8 +11,6 @@ _: {
/run/secrets/foundry-username
/run/secrets/foundry-password
];
ports = [
"30000:30000"
];
ports = ["30000:30000"];
};
}

View file

@ -1,12 +1,8 @@
_: {
virtualisation.oci-containers.containers.glances = {
image = "nicolargo/glances";
ports = [
"61208-61209:61208-61209"
];
volumes = [
"/var/run/docker.sock:/var/run/docker.sock"
];
ports = ["61208-61209:61208-61209"];
volumes = ["/var/run/docker.sock:/var/run/docker.sock"];
environment = {
GLANCES_OPT = "-w";
};

View file

@ -12,8 +12,6 @@ _: {
FABRIC_LOADER_VERSION = "0.14.23";
FABRIC_LAUNCHER_VERSION = "0.11.2";
};
volumes = [
"/home/notoh/docker/modded-mc:/data:rw"
];
volumes = ["/home/notoh/docker/modded-mc:/data:rw"];
};
}

View file

@ -4,12 +4,8 @@
...
}: {
sops.secrets = {
restic-sora = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
sora-s3 = {
sopsFile = ../../../secrets/s3/secrets.yaml;
};
restic-sora = {sopsFile = ../../../secrets/restic/secrets.yaml;};
sora-s3 = {sopsFile = ../../../secrets/s3/secrets.yaml;};
};
environment.systemPackages = [pkgs.restic];
services.restic = {

View file

@ -4,9 +4,7 @@
pkgs,
...
}: {
sops.secrets.tsauth-sora = {
sopsFile = ../../../secrets/tailscale/secrets.yaml;
};
sops.secrets.tsauth-sora = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
environment.systemPackages = [pkgs.jq pkgs.tailscale];
services.tailscale = {
useRoutingFeatures = lib.mkDefault "server"; # important to make it a server, it sets sysctl for ip forwarding without intervention and reboot

View file

@ -1,4 +1,4 @@
{...}: {
_: {
networking.firewall.allowedTCPPorts = [7777];
virtualisation.oci-containers.containers.terraria = {
image = "jacobsmile/tmodloader1.4:v2023.11.3.3";

View file

@ -16,23 +16,22 @@
../../pkgs/overlays.nix
];
boot.loader = {
systemd-boot = {
enable = true;
configurationLimit = 10;
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
boot.extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out];
boot.kernelModules = ["v4l2loopback" "kvm-intel"];
virtualisation.libvirtd.enable = true;
services = {
pcscd.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.enable = true;
lowLatency = {
enable = true;
quantum = 64;
rate = 48000;
};
};
xserver = {
enable = true;
videoDrivers = ["nvidia"];
@ -53,41 +52,28 @@
};
};
services.pcscd.enable = true;
services.davfs2.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.enable = true;
lowLatency = {
enable = true;
quantum = 64;
rate = 48000;
security = {
rtkit.enable = true;
polkit.enable = true;
pam.services.swaylock = {
text = ''
auth include login
'';
};
};
programs.gamemode.enable = true;
programs.steam = {
enable = true;
extraCompatPackages = [
inputs.nix-gaming.packages.${pkgs.system}.proton-ge
];
};
security.polkit.enable = true;
security.pam.services.swaylock = {
text = ''
auth include login
'';
programs = {
gamemode.enable = true;
steam = {
enable = true;
extraCompatPackages = [
inputs.nix-gaming.packages.${pkgs.system}.proton-ge
];
};
};
hardware = {
pulseaudio.enable = false;
nvidia = {
powerManagement.enable = true;
modesetting.enable = true;

View file

@ -8,34 +8,46 @@
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/7d098aab-1968-4605-a9a7-b1627941c1ff";
fsType = "ext4";
boot = {
kernelModules = ["v4l2loopback" "kvm-intel"];
extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out];
loader = {
systemd-boot = {
enable = true;
configurationLimit = 10;
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
initrd = {
availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod"];
kernelModules = [];
};
};
fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/C356-B67C";
fsType = "vfat";
};
fileSystems."/hdd" = {
device = "/dev/disk/by-uuid/e2e4c4f3-51df-4020-b557-a7cf684de85b";
fsType = "ext4";
};
fileSystems."/ssd" = {
device = "/dev/disk/by-uuid/9e5a189d-7435-45d7-aef6-cdee4de2428d";
fsType = "ext4";
};
fileSystems."/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/tsuki";
fsType = "nfs";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/7d098aab-1968-4605-a9a7-b1627941c1ff";
fsType = "ext4";
};
"/boot/efi" = {
device = "/dev/disk/by-uuid/C356-B67C";
fsType = "vfat";
};
"/hdd" = {
device = "/dev/disk/by-uuid/e2e4c4f3-51df-4020-b557-a7cf684de85b";
fsType = "ext4";
};
"/ssd" = {
device = "/dev/disk/by-uuid/9e5a189d-7435-45d7-aef6-cdee4de2428d";
fsType = "ext4";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/tsuki";
fsType = "nfs";
};
};
swapDevices = [

View file

@ -43,7 +43,6 @@
imv
mpv
ffmpeg
nom
rustypaste-cli
gimp
cryptomator
@ -56,7 +55,6 @@
prismlauncher
yuzu
inputs.nix-gaming.packages.${pkgs.system}.osu-lazer-bin
inputs.nix-gaming.packages.${pkgs.system}.wine-discord-ipc-bridge
(libsForQt5.callPackage ../../pkgs/chatterino7 {})
(callPackage ../../pkgs/jellyfin-rpc {})
];

View file

@ -3,9 +3,7 @@
systemd.services.atticd = {
enable = true;
wantedBy = [
"multi-user.target"
];
wantedBy = ["multi-user.target"];
description = "atticd";
serviceConfig = {

View file

@ -1,7 +1,7 @@
{...}: {
imports = [
./atticd.nix
./restic.nix
./atticd.nix
./hydroxide.nix
];
}

View file

@ -4,9 +4,7 @@
systemd.services.hydroxide = {
enable = true;
wantedBy = [
"multi-user.target"
];
wantedBy = ["multi-user.target"];
description = "A third-party, open-source ProtonMail bridge";
serviceConfig = {

View file

@ -6,15 +6,6 @@
../../modules
];
boot.loader = {
grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
};
services.xserver = {
layout = "us";
xkbVariant = "";

View file

@ -7,14 +7,26 @@
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.extraModulePackages = [];
boot = {
kernelModules = [];
extraModulePackages = [];
loader.grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/625f557a-99a0-4e2d-9aef-f3aed7cea1c8";
fsType = "ext4";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/625f557a-99a0-4e2d-9aef-f3aed7cea1c8";
fsType = "ext4";
};
};
swapDevices = [

View file

@ -4,9 +4,7 @@
pkgs,
...
}: {
sops.secrets.tsauth-tsuru = {
sopsFile = ../../../secrets/tailscale/secrets.yaml;
};
sops.secrets.tsauth-tsuru = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
environment.systemPackages = [pkgs.jq pkgs.tailscale];
services.tailscale = {
useRoutingFeatures = lib.mkDefault "client";

View file

@ -31,8 +31,6 @@
WOODPECKER_KEEPALIVE_MIN_TIME = "10s";
WOODPECKER_HEALTHCHECK = "true";
};
extraGroups = [
"docker"
];
extraGroups = ["docker"];
};
}

View file

@ -7,34 +7,42 @@
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/833959fb-de9d-4820-aa22-e6ce8bce6f6c";
fsType = "ext4";
boot = {
kernelModules = [];
extraModulePackages = [];
loader.grub = {
enable = true;
configurationLimit = 5;
device = "/dev/sda";
useOSProber = false;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
kernelModules = [];
};
};
fileSystems."/home/notoh/docker/stash/data" = {
device = "192.168.1.199:/mnt/Sutoreji/stash";
fsType = "nfs";
};
fileSystems."/media" = {
device = "192.168.1.199:/mnt/Sutoreji/media";
fsType = "nfs";
};
fileSystems."/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/yuki";
fsType = "nfs";
};
fileSystems."/var/lib/paperless-ngx/media" = {
device = "192.168.1.199:/mnt/Sutoreji/paperless-ngx/paperless-media ";
fsType = "nfs";
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/833959fb-de9d-4820-aa22-e6ce8bce6f6c";
fsType = "ext4";
};
"/home/notoh/docker/stash/data" = {
device = "192.168.1.199:/mnt/Sutoreji/stash";
fsType = "nfs";
};
"/media" = {
device = "192.168.1.199:/mnt/Sutoreji/media";
fsType = "nfs";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/yuki";
fsType = "nfs";
};
"/var/lib/paperless-ngx/media" = {
device = "192.168.1.199:/mnt/Sutoreji/paperless-ngx/paperless-media ";
fsType = "nfs";
};
};
swapDevices = [

View file

@ -3,9 +3,7 @@
config,
...
}: {
sops.secrets.restic-yuki = {
sopsFile = ../../../secrets/restic/secrets.yaml;
};
sops.secrets.restic-yuki = {sopsFile = ../../../secrets/restic/secrets.yaml;};
environment.systemPackages = [pkgs.restic];
services.restic = {
backups = {

View file

@ -1,6 +1,7 @@
_: {
virtualisation.oci-containers.containers.stash = {
image = "stashapp/stash@sha256:b3b59809d5be1d82467253ec9e2ee98628a0db7527d27a6c7daa75e1fcda7deb";
image = "stashapp/stash@sha256:b3b59809d5be1d82467253ec9e2ee98628a0db7527d27a6c7daa75e1fcda7deb"; # v0.24.3
ports = ["9999:9999"];
environment = {
STASH_STASH = "/data/";
STASH_GENERATED = "/generated/";
@ -17,8 +18,5 @@ _: {
"/home/notoh/docker/stash/generated:/generated"
"/home/notoh/docker/stash/blobs:/blobs"
];
ports = [
"9999:9999"
];
};
}

View file

@ -1,15 +1,11 @@
_: {
virtualisation.oci-containers.containers.wallos = {
image = "bellamy/wallos@sha256:d3846ab980095be55a3c07633cca905bf29505bc63e5d92ad49938f56fd7b9f7";
ports = [
"8282:80"
];
ports = ["8282:80"];
volumes = [
"/home/notoh/docker/wallos/db:/var/www/html/db"
"/home/notoh/docker/wallos/logos:/var/www/html/images/uploads/logos"
];
environment = {
TZ = "America/New_York";
};
environment = {TZ = "America/New_York";};
};
}

3
statix.toml Normal file
View file

@ -0,0 +1,3 @@
disabled = []
nix_version = '2.4'
ignore = ['.direnv']