treewide: refactor w/ deadnix && statix applied #27

Merged
notohh merged 3 commits from linting-refactor into master 2024-02-01 15:50:28 -05:00
75 changed files with 2048 additions and 755 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
result 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

@ -1,27 +1,18 @@
when: when:
- branch: flake-lock-update - branch: flake-lock-update
- event: [pull_request_closed] - event: [pull_request_closed]
steps: 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: deploy:
image: nixos/nix image: nixos/nix
commands: | commands: |
echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf echo 'experimental-features = flakes nix-command' >> /etc/nix/nix.conf
echo "access-tokens = github.com=$${GH_PAT}" >> /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 '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 '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 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 mkdir -p .ssh && cd .ssh
echo "$${SSH_KEY}" > forgejo echo "$${SSH_KEY}" > forgejo
chmod 400 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 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] 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) + multiple fully declarative self hosted services (and some containerized ones, with a docker backend)
+ wayland config for hyprland + wayland config for hyprland
+ custom packages not found in nixpkgs + 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 ## :busts_in_silhouette: Credit
#### people who've inspired me to dive into nix, and i've stolen stuff from (you guys are awesome!) #### 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" "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": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
@ -233,6 +249,24 @@
"inputs": { "inputs": {
"systems": "systems_4" "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": { "locked": {
"lastModified": 1694529238, "lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
@ -247,6 +281,27 @@
"type": "github" "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": { "helix": {
"inputs": { "inputs": {
"crane": "crane_2", "crane": "crane_2",
@ -487,6 +542,22 @@
} }
}, },
"nixpkgs-stable_2": { "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": { "locked": {
"lastModified": 1705957679, "lastModified": 1705957679,
"narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=", "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=",
@ -583,6 +654,22 @@
} }
}, },
"nixpkgs_7": { "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": { "locked": {
"lastModified": 1701174899, "lastModified": 1701174899,
"narHash": "sha256-1W+FMe8mWsJKXoBc+QgKmEeRj33kTFnPq7XCjU+bfnA=", "narHash": "sha256-1W+FMe8mWsJKXoBc+QgKmEeRj33kTFnPq7XCjU+bfnA=",
@ -613,6 +700,28 @@
"type": "github" "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": { "root": {
"inputs": { "inputs": {
"ags": "ags", "ags": "ags",
@ -628,6 +737,7 @@
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs_6", "nixpkgs": "nixpkgs_6",
"nur": "nur", "nur": "nur",
"pre-commit-hooks": "pre-commit-hooks",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"yazi": "yazi" "yazi": "yazi"
} }
@ -687,7 +797,7 @@
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-stable": "nixpkgs-stable_2" "nixpkgs-stable": "nixpkgs-stable_3"
}, },
"locked": { "locked": {
"lastModified": 1706410821, "lastModified": 1706410821,
@ -763,6 +873,21 @@
"type": "github" "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": { "utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
@ -832,8 +957,8 @@
}, },
"yazi": { "yazi": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_3", "flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs_7", "nixpkgs": "nixpkgs_8",
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {

View file

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

View file

@ -25,3 +25,4 @@ name | description
`yazi` | terminal file manager `yazi` | terminal file manager
`zathura` | pdf viewer `zathura` | pdf viewer
`zellij` | terminal multiplexer `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 { App, Utils } from "./import.js";
import { Bar } from './js/main.js' import { Bar } from "./js/main.js";
const scss = App.configDir + "/main.scss";
const scss = App.configDir + '/main.scss' const css = App.configDir + "/style.css";
const css = App.configDir + '/style.css'
Utils.exec(`sass ${scss} ${css}`); Utils.exec(`sass ${scss} ${css}`);
@ -19,6 +18,6 @@ Utils.monitorFile(`${App.configDir}/scss`, reloadCss, "directory");
export default { export default {
style: css, style: css,
windows: [ 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 Hyprland from "resource:///com/github/Aylur/ags/service/hyprland.js";
import Network from "resource:///com/github/Aylur/ags/service/network.js"; import Network from "resource:///com/github/Aylur/ags/service/network.js";
import SystemTray from "resource:///com/github/Aylur/ags/service/systemtray.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 { export {
App, App,
Audio, Audio,
Hyprland, Hyprland,
Mpris,
Network, Network,
Service, Service,
SystemTray, SystemTray,
Utils, Utils,
Variable, Variable,
Widget, Widget,
Mpris, };
};

View file

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

View file

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

View file

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

View file

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

View file

@ -1,18 +1,16 @@
import { Widget, Utils } from '../../import.js'; import { Utils, Widget } from "../../import.js";
const Time = () =>
const Time = () => Widget.Box({ Widget.Box({
child: Widget.Label({ child: Widget.Label({
className: "date" className: "date",
}).poll( }).poll(
1000, 1000,
(self) => (self) =>
Utils.execAsync(["date", "+%a %b %d %H:%M"]).then((time) => Utils.execAsync(["date", "+%a %b %d %H:%M"]).then((time) =>
self.label = time self.label = time
), ),
), ),
}); });
export { export { Time };
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 ./neofetch
./nushell ./nushell
./starship ./starship
./git
./lazygit ./lazygit
./direnv
./yazi ./yazi
]; ];
@ -31,21 +29,46 @@
p7zip p7zip
]; ];
services.gpg-agent = { services = {
enable = true; gpg-agent = {
defaultCacheTtl = 3600; enable = true;
pinentryFlavor = "curses"; defaultCacheTtl = 3600;
enableSshSupport = true; pinentryFlavor = "curses";
enableNushellIntegration = true; enableSshSupport = true;
enableNushellIntegration = true;
};
}; };
programs.bat.enable = true; programs = {
bat.enable = true;
programs.zoxide = { git = {
enable = true; enable = true;
enableNushellIntegration = true; delta.enable = true;
options = [ userEmail = "github@notohh.dev";
"--cmd cdd" 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"; name = "lua";
auto-format = true; auto-format = true;
formatter = { formatter = {
command = lib.getExe luaformatter; command = lib.getExe stylua;
}; };
} }
]; ];

View file

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

View file

@ -7,20 +7,16 @@ _: {
light-green = "#9ece6a"; light-green = "#9ece6a";
green = "#73daca"; green = "#73daca";
turquoise = "#89ddff"; turquoise = "#89ddff";
light-cyan = "#b4f9f8";
teal = "#2ac3de"; teal = "#2ac3de";
cyan = "#7dcfff"; cyan = "#7dcfff";
blue = "#7aa2f7"; blue = "#7aa2f7";
magenta = "#bb9af7"; magenta = "#bb9af7";
white = "#c0caf5"; white = "#c0caf5";
light-gray = "#9aa5ce"; light-gray = "#9aa5ce";
parameters = "#cfc9c2";
comment = "#565f89"; comment = "#565f89";
black = "#414868"; black = "#414868";
foreground = "#a9b1d6"; foreground = "#a9b1d6";
foreground_highlight = "#c0caf5";
foreground_gutter = "#363b54"; foreground_gutter = "#363b54";
background = "#1a1b26";
background_highlight = "#30374b"; background_highlight = "#30374b";
background_menu = "#16161e"; background_menu = "#16161e";
in { 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 tsuru = nix run github:serokell/deploy-rs ".#tsuru"
alias haru = nix run github:serokell/deploy-rs ".#haru" alias haru = nix run github:serokell/deploy-rs ".#haru"
alias kaze = nix run github:serokell/deploy-rs ".#kaze" 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 dl = yt-dlp -P ~/Videos/downloaded
alias dlad = yt-dlp -x --audio-format mp3 --embed-thumbnail alias dlad = yt-dlp -x --audio-format mp3 --embed-thumbnail
alias dlcd = yt-dlp alias dlcd = yt-dlp

View file

@ -14,24 +14,46 @@
''; '';
}; };
in { in {
imports = [ imports = [./greetd.nix];
./greetd.nix environment = {
]; systemPackages = with pkgs; [
dbus-hyprland-environment
environment.systemPackages = with pkgs; [ wayland
dbus-hyprland-environment glib
wayland grim
glib slurp
grim satty
slurp wl-clipboard
satty wlr-randr
wl-clipboard swayidle
wlr-randr swaylock-effects
swayidle hyprpicker
swaylock-effects swww
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; services.dbus.enable = true;
xdg.portal = { xdg.portal = {
@ -44,29 +66,4 @@ in {
common.default = "*"; 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 = [ exec-once = [
"ags" "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" "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
"~/.local/bin/lock" "~/.local/bin/lock"

View file

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

View file

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

View file

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

View file

@ -7,34 +7,24 @@
../../modules/fonts.nix ../../modules/fonts.nix
]; ];
boot.loader = {
systemd-boot = {
enable = true;
configurationLimit = 8;
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
programs.hyprland.enable = true; programs.hyprland.enable = true;
services.xserver.enable = true; services = {
services.xserver.displayManager.sddm.enable = true; pipewire = {
enable = true;
services.xserver = { alsa.enable = true;
layout = "us"; alsa.support32Bit = true;
xkbVariant = ""; pulse.enable = true;
};
xserver = {
enable = true;
displayManager.sddm.enable = true;
layout = "us";
xkbVariant = "";
};
}; };
sound.enable = true; sound.enable = true;
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;
security.rtkit.enable = true; 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") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"]; boot = {
boot.initrd.kernelModules = []; kernelModules = ["kvm-intel"];
boot.kernelModules = ["kvm-intel"]; extraModulePackages = [];
boot.extraModulePackages = []; loader = {
systemd-boot = {
fileSystems."/" = { enable = true;
device = "/dev/disk/by-uuid/57411820-f154-497e-9c7e-dfcb1f21c5cf"; configurationLimit = 8;
fsType = "ext4"; };
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot/efi";
};
};
initrd = {
availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"];
kernelModules = [];
};
}; };
fileSystems."/boot/efi" = { fileSystems = {
device = "/dev/disk/by-uuid/4D09-1D57"; "/" = {
fsType = "vfat"; device = "/dev/disk/by-uuid/57411820-f154-497e-9c7e-dfcb1f21c5cf";
}; fsType = "ext4";
};
fileSystems."/nas/restic" = { "/boot/efi" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/ame"; device = "/dev/disk/by-uuid/4D09-1D57";
fsType = "nfs"; fsType = "vfat";
};
"/nas/restic" = {
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/ame";
fsType = "nfs";
};
}; };
swapDevices = [ swapDevices = [

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -7,14 +7,26 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"]; boot = {
boot.initrd.kernelModules = []; kernelModules = [];
boot.kernelModules = []; extraModulePackages = [];
boot.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."/" = { fileSystems = {
device = "/dev/disk/by-uuid/06177115-2e39-493b-81fb-5a1980ae0534"; "/" = {
fsType = "ext4"; device = "/dev/disk/by-uuid/06177115-2e39-493b-81fb-5a1980ae0534";
fsType = "ext4";
};
}; };
swapDevices = [ swapDevices = [

View file

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

View file

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

View file

@ -1,42 +1,40 @@
{pkgs, ...}: { {pkgs, ...}: {
networking.firewall.allowedTCPPorts = [9292]; networking.firewall.allowedTCPPorts = [9292];
imports = [ imports = [
./restic.nix ./restic.nix
./torrent.nix ./torrent.nix
]; ];
environment.systemPackages = [pkgs.recyclarr]; environment.systemPackages = [pkgs.recyclarr];
services.radarr = { services = {
enable = true; radarr = {
openFirewall = true; 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 = { virtualisation.oci-containers.containers = {
whisparr = { whisparr = {
image = "ghcr.io/hotio/whisparr@sha256:88b91920b77339e2deda418960be28868df538413abea6cdddaf4013e43c4c0f"; # v3-3.0.0.425 image = "ghcr.io/hotio/whisparr@sha256:88b91920b77339e2deda418960be28868df538413abea6cdddaf4013e43c4c0f"; # v3-3.0.0.425

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -4,9 +4,7 @@
pkgs, pkgs,
... ...
}: { }: {
sops.secrets.tsauth-sora = { sops.secrets.tsauth-sora = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
sopsFile = ../../../secrets/tailscale/secrets.yaml;
};
environment.systemPackages = [pkgs.jq pkgs.tailscale]; environment.systemPackages = [pkgs.jq pkgs.tailscale];
services.tailscale = { services.tailscale = {
useRoutingFeatures = lib.mkDefault "server"; # important to make it a server, it sets sysctl for ip forwarding without intervention and reboot 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]; networking.firewall.allowedTCPPorts = [7777];
virtualisation.oci-containers.containers.terraria = { virtualisation.oci-containers.containers.terraria = {
image = "jacobsmile/tmodloader1.4:v2023.11.3.3"; image = "jacobsmile/tmodloader1.4:v2023.11.3.3";

View file

@ -16,23 +16,22 @@
../../pkgs/overlays.nix ../../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; virtualisation.libvirtd.enable = true;
services = { 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 = { xserver = {
enable = true; enable = true;
videoDrivers = ["nvidia"]; videoDrivers = ["nvidia"];
@ -53,41 +52,28 @@
}; };
}; };
services.pcscd.enable = true; security = {
services.davfs2.enable = true; rtkit.enable = true;
polkit.enable = true;
hardware.pulseaudio.enable = false; pam.services.swaylock = {
security.rtkit.enable = true; text = ''
services.pipewire = { auth include login
enable = true; '';
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.enable = true;
lowLatency = {
enable = true;
quantum = 64;
rate = 48000;
}; };
}; };
programs.gamemode.enable = true; programs = {
gamemode.enable = true;
programs.steam = { steam = {
enable = true; enable = true;
extraCompatPackages = [ extraCompatPackages = [
inputs.nix-gaming.packages.${pkgs.system}.proton-ge inputs.nix-gaming.packages.${pkgs.system}.proton-ge
]; ];
}; };
security.polkit.enable = true;
security.pam.services.swaylock = {
text = ''
auth include login
'';
}; };
hardware = { hardware = {
pulseaudio.enable = false;
nvidia = { nvidia = {
powerManagement.enable = true; powerManagement.enable = true;
modesetting.enable = true; modesetting.enable = true;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -7,14 +7,26 @@
(modulesPath + "/profiles/qemu-guest.nix") (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"]; boot = {
boot.initrd.kernelModules = []; kernelModules = [];
boot.kernelModules = []; extraModulePackages = [];
boot.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."/" = { fileSystems = {
device = "/dev/disk/by-uuid/625f557a-99a0-4e2d-9aef-f3aed7cea1c8"; "/" = {
fsType = "ext4"; device = "/dev/disk/by-uuid/625f557a-99a0-4e2d-9aef-f3aed7cea1c8";
fsType = "ext4";
};
}; };
swapDevices = [ swapDevices = [

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

3
statix.toml Normal file
View file

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