Compare commits
7 Commits
5a5d34911c
...
4664804d90
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4664804d90 | ||
![]() |
edc48d00a2 | ||
![]() |
37aa0e6732 | ||
![]() |
a739728d41 | ||
![]() |
48c5aebd82 | ||
![]() |
c33a1b6c50 | ||
![]() |
368c455b7f |
@ -64,6 +64,23 @@
|
||||
# force: true
|
||||
# diff: false
|
||||
|
||||
- name: Create directories
|
||||
file:
|
||||
name: "{{ item }}"
|
||||
state: directory
|
||||
mode: 0700
|
||||
owner: nochainstounlock
|
||||
group: nochainstounlock
|
||||
loop:
|
||||
- /home/nochainstounlock/.ssh
|
||||
|
||||
- name: Set authorized keys
|
||||
authorized_key:
|
||||
user: nochainstounlock
|
||||
key: |
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMrjXsXjtxEm47XnRZfo67kJULoc0NBLrB0lPYFiS2Ar kodi@neelix
|
||||
exclusive: true
|
||||
|
||||
- import_tasks: tasks/freebsd.yaml
|
||||
when: 'os_flavor == "freebsd"'
|
||||
|
||||
|
@ -57,6 +57,8 @@
|
||||
./roles/chromecast
|
||||
./roles/memtest86
|
||||
./roles/kodi
|
||||
./roles/ansible
|
||||
./roles/bluetooth
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [
|
||||
|
@ -29,4 +29,5 @@
|
||||
me.graphicsCardType = "intel";
|
||||
|
||||
me.kodi.enable = true;
|
||||
me.bluetooth.enable = true;
|
||||
}
|
||||
|
@ -33,4 +33,5 @@
|
||||
me.graphicsCardType = "amd";
|
||||
|
||||
me.sway.enable = true;
|
||||
me.ansible.enable = true;
|
||||
}
|
||||
|
46
nix/configuration/roles/ansible/default.nix
Normal file
46
nix/configuration/roles/ansible/default.nix
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
options.me = {
|
||||
ansible.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = "Whether we want to install ansible.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.me.ansible.enable (
|
||||
lib.mkMerge [
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
ansible
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
ansible = pkgs.symlinkJoin {
|
||||
name = "ansible";
|
||||
paths = [
|
||||
(prev.ansible.overridePythonAttrs {
|
||||
propagatedBuildInputs = prev.ansible.propagatedBuildInputs ++ [ prev.python3Packages.jmespath ];
|
||||
})
|
||||
];
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/ansible --prefix PATH : ${lib.makeBinPath [ ]}
|
||||
'';
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
||||
]
|
||||
);
|
||||
}
|
46
nix/configuration/roles/bluetooth/default.nix
Normal file
46
nix/configuration/roles/bluetooth/default.nix
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
options.me = {
|
||||
bluetooth.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = "Whether we want to install bluetooth.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.me.bluetooth.enable (
|
||||
lib.mkMerge [
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
];
|
||||
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings = {
|
||||
General = {
|
||||
# Enable support for showing battery charge level.
|
||||
Experimental = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
|
||||
hideMounts = true;
|
||||
directories = [
|
||||
"/var/lib/bluetooth" # Bluetooth pairing information.
|
||||
];
|
||||
};
|
||||
}
|
||||
]
|
||||
);
|
||||
}
|
@ -41,6 +41,8 @@
|
||||
# Automatically delete old generations
|
||||
boot.loader.systemd-boot.configurationLimit = 3;
|
||||
|
||||
boot.loader.systemd-boot.memtest86.enable = true;
|
||||
|
||||
# Check what will be lost with `zfs diff zroot/linux/root@blank`
|
||||
boot.initrd.systemd.enable = lib.mkDefault true;
|
||||
boot.initrd.systemd.services.zfs-rollback = {
|
||||
|
@ -24,10 +24,75 @@
|
||||
];
|
||||
}
|
||||
(lib.mkIf config.me.graphical {
|
||||
users.extraUsers.kodi.isNormalUser = true;
|
||||
services.cage.user = "kodi";
|
||||
services.cage.program = "${pkgs.kodi-wayland}/bin/kodi-standalone";
|
||||
services.cage.enable = true;
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
kodi-wayland = prev.kodi-wayland.withPackages (
|
||||
kodiPkgs: with kodiPkgs; [
|
||||
joystick
|
||||
vfs-sftp
|
||||
]
|
||||
);
|
||||
})
|
||||
];
|
||||
|
||||
users.users.kodi = {
|
||||
isNormalUser = true;
|
||||
createHome = true; # https://github.com/NixOS/nixpkgs/issues/6481
|
||||
group = "kodi";
|
||||
extraGroups = [ ];
|
||||
uid = 12000;
|
||||
packages = with pkgs; [
|
||||
tree
|
||||
];
|
||||
# Generate with `mkpasswd -m scrypt`
|
||||
hashedPassword = "$7$CU..../....VXvNQ8za3wSGpdzGXNT50/$HcFtn/yvwPMCw4888BelpiAPLAxe/zU87fD.d/N6U48";
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGu+k5lrirokdW5zVdRVBOqEOAvAPlIkG/MdJNc9g5ky"
|
||||
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIEI6mu6I5Jp+Ib0vJxapGHbEShZjyvzV8jz5DnzDrI39AAAABHNzaDo="
|
||||
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIAFNcSXwvy+brYTOGo56G93Ptuq2MmZsjvRWAfMqbmMLAAAABHNzaDo="
|
||||
];
|
||||
};
|
||||
users.groups.kodi.gid = 12000;
|
||||
|
||||
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
|
||||
hideMounts = true;
|
||||
users.kodi = {
|
||||
directories = [
|
||||
{
|
||||
directory = ".ssh";
|
||||
user = "kodi";
|
||||
group = "kodi";
|
||||
mode = "0755";
|
||||
}
|
||||
{
|
||||
directory = ".kodi";
|
||||
user = "kodi";
|
||||
group = "kodi";
|
||||
mode = "0755";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users.kodi =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# home.file.".kodi/userdata/mediasources.xml".source = ./files/mediasources.xml;
|
||||
|
||||
# home.file.".kodi/userdata/addon_data/peripheral.joystick/resources/buttonmaps/xml/linux/DualSense_Wireless_Controller_13b_8a.xml".source =
|
||||
# ./files/DualSense_Wireless_Controller_13b_8a.xml;
|
||||
|
||||
# TODO: Maybe .kodi/userdata/sources.xml
|
||||
# TODO: ./userdata/guisettings.xml:303: <setting id="filecache.memorysize">128</setting>
|
||||
|
||||
# The state version is required and should stay at the version you
|
||||
# originally installed.
|
||||
home.stateVersion = "24.11";
|
||||
};
|
||||
})
|
||||
]
|
||||
);
|
||||
|
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" ?>
|
||||
<buttonmap>
|
||||
<device name="DualSense Wireless Controller" provider="linux" buttoncount="13" axiscount="8">
|
||||
<configuration>
|
||||
<axis index="2" center="-1" range="2" />
|
||||
<axis index="5" center="-1" range="2" />
|
||||
</configuration>
|
||||
<controller id="game.controller.default">
|
||||
<feature name="a" button="0" />
|
||||
<feature name="b" button="1" />
|
||||
<feature name="back" button="9" />
|
||||
<feature name="down" axis="+7" />
|
||||
<feature name="guide" button="10" />
|
||||
<feature name="left" axis="-6" />
|
||||
<feature name="leftbumper" button="4" />
|
||||
<feature name="leftstick">
|
||||
<up axis="-1" />
|
||||
<down axis="+1" />
|
||||
<right axis="+0" />
|
||||
<left axis="-0" />
|
||||
</feature>
|
||||
<feature name="lefttrigger" button="6" />
|
||||
<feature name="right" axis="+6" />
|
||||
<feature name="rightbumper" button="5" />
|
||||
<feature name="rightstick">
|
||||
<up axis="-4" />
|
||||
<down axis="+4" />
|
||||
<right axis="+3" />
|
||||
<left axis="-3" />
|
||||
</feature>
|
||||
<feature name="righttrigger" button="7" />
|
||||
<feature name="start" button="8" />
|
||||
<feature name="up" axis="-7" />
|
||||
<feature name="x" button="3" />
|
||||
<feature name="y" button="2" />
|
||||
</controller>
|
||||
</device>
|
||||
</buttonmap>
|
5
nix/configuration/roles/kodi/files/mediasources.xml
Normal file
5
nix/configuration/roles/kodi/files/mediasources.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<mediasources>
|
||||
<network>
|
||||
<location id="0">sftp://nochainstounlock@stuff.fizz.buzz:42069/readonly/library/</location>
|
||||
</network>
|
||||
</mediasources>
|
Loading…
x
Reference in New Issue
Block a user