treewide: refactor w/ deadnix && statix applied #27
75 changed files with 2048 additions and 755 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
result
|
||||
.pre-commit-config.yaml
|
||||
|
|
|
@ -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 .
|
|
@ -1,27 +1,18 @@
|
|||
when:
|
||||
- branch: flake-lock-update
|
||||
- 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]
|
||||
|
|
|
@ -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!)
|
||||
|
|
131
flake.lock
131
flake.lock
|
@ -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": {
|
||||
|
|
27
flake.nix
27
flake.nix
|
@ -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
|
||||
|
|
|
@ -25,3 +25,4 @@ name | description
|
|||
`yazi` | terminal file manager
|
||||
`zathura` | pdf viewer
|
||||
`zellij` | terminal multiplexer
|
||||
`zoxide` | a smarter cd command
|
||||
|
|
26
home/ags/config/.eslintrc.js
Normal file
26
home/ags/config/.eslintrc.js
Normal 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": {
|
||||
}
|
||||
}
|
|
@ -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),
|
||||
],
|
||||
};
|
|
@ -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,
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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 };
|
||||
|
|
|
@ -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 };
|
||||
|
|
|
@ -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 };
|
||||
|
|
|
@ -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 };
|
||||
|
|
|
@ -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 };
|
15
home/ags/config/jsconfig.json
Normal file
15
home/ags/config/jsconfig.json
Normal 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
1135
home/ags/config/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
15
home/ags/config/package.json
Normal file
15
home/ags/config/package.json
Normal 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"
|
||||
}
|
||||
}
|
|
@ -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"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
_: {
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
enableNushellIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -24,7 +24,7 @@
|
|||
name = "lua";
|
||||
auto-format = true;
|
||||
formatter = {
|
||||
command = lib.getExe luaformatter;
|
||||
command = lib.getExe stylua;
|
||||
};
|
||||
}
|
||||
];
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
_: {
|
||||
programs.helix = {
|
||||
themes.catppuccin_mocha = let
|
||||
transparent = "none";
|
||||
rosewater = "#f5e0dc";
|
||||
flamingo = "#f2cdcd";
|
||||
pink = "#f5c2e7";
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{...}: {
|
||||
_: {
|
||||
imports = [
|
||||
./layouts.nix
|
||||
];
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 {})
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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 = "";
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -6,15 +6,6 @@
|
|||
../../modules
|
||||
];
|
||||
|
||||
boot.loader = {
|
||||
grub = {
|
||||
enable = true;
|
||||
configurationLimit = 5;
|
||||
device = "/dev/sda";
|
||||
useOSProber = false;
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
layout = "us";
|
||||
xkbVariant = "";
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -6,15 +6,6 @@
|
|||
../../modules
|
||||
];
|
||||
|
||||
boot.loader = {
|
||||
grub = {
|
||||
enable = true;
|
||||
configurationLimit = 5;
|
||||
device = "/dev/sda";
|
||||
useOSProber = false;
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
layout = "us";
|
||||
xkbVariant = "";
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -6,15 +6,6 @@
|
|||
../../modules
|
||||
];
|
||||
|
||||
boot.loader = {
|
||||
grub = {
|
||||
enable = true;
|
||||
configurationLimit = 5;
|
||||
device = "/dev/vda";
|
||||
useOSProber = true;
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
layout = "us";
|
||||
xkbVariant = "";
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -6,15 +6,6 @@ _: {
|
|||
../../modules
|
||||
];
|
||||
|
||||
boot.loader = {
|
||||
grub = {
|
||||
enable = true;
|
||||
configurationLimit = 5;
|
||||
device = "/dev/sda";
|
||||
useOSProber = false;
|
||||
};
|
||||
};
|
||||
|
||||
services.snowflake-proxy.enable = true;
|
||||
|
||||
services.xserver = {
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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"];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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"];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{...}: {
|
||||
_: {
|
||||
networking.firewall.allowedTCPPorts = [7777];
|
||||
virtualisation.oci-containers.containers.terraria = {
|
||||
image = "jacobsmile/tmodloader1.4:v2023.11.3.3";
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 {})
|
||||
];
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
|
||||
systemd.services.atticd = {
|
||||
enable = true;
|
||||
wantedBy = [
|
||||
"multi-user.target"
|
||||
];
|
||||
wantedBy = ["multi-user.target"];
|
||||
description = "atticd";
|
||||
|
||||
serviceConfig = {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./atticd.nix
|
||||
./restic.nix
|
||||
./atticd.nix
|
||||
./hydroxide.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -6,15 +6,6 @@
|
|||
../../modules
|
||||
];
|
||||
|
||||
boot.loader = {
|
||||
grub = {
|
||||
enable = true;
|
||||
configurationLimit = 5;
|
||||
device = "/dev/sda";
|
||||
useOSProber = false;
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver = {
|
||||
layout = "us";
|
||||
xkbVariant = "";
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -31,8 +31,6 @@
|
|||
WOODPECKER_KEEPALIVE_MIN_TIME = "10s";
|
||||
WOODPECKER_HEALTHCHECK = "true";
|
||||
};
|
||||
extraGroups = [
|
||||
"docker"
|
||||
];
|
||||
extraGroups = ["docker"];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
3
statix.toml
Normal file
|
@ -0,0 +1,3 @@
|
|||
disabled = []
|
||||
nix_version = '2.4'
|
||||
ignore = ['.direnv']
|
Loading…
Reference in a new issue